Skip to content

Commit 1ef61ab

Browse files
committed
feat: update default keywords for job search to include additional roles
1 parent abc78e3 commit 1ef61ab

2 files changed

Lines changed: 103 additions & 50 deletions

File tree

README.md

Lines changed: 60 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
# Jobs Scraper Global
1+
# Vagas LinkedIn Brasil (Remoto)
22

3-
Bot de automacao para buscar vagas de tecnologia no LinkedIn em escala global e exportar os resultados para Excel.
3+
Bot de automacao para buscar vagas no LinkedIn com foco em Brasil remoto e exportar os resultados em Excel e PDF.
44

5-
## O que mudou
5+
## Comportamento atual
66

7-
- Busca padrao agora cobre vagas no mundo todo (location=Worldwide)
8-
- Projeto refatorado para uma arquitetura modular e manutencao facilitada
9-
- Configuracao por variaveis de ambiente para localizacao, idioma, keywords e comportamento do navegador
10-
- Tratamento de erro centralizado e logs com timestamp
11-
- Deduplicacao de vagas antes da exportacao
7+
- Escopo geografico: Brasil (geoId padrao `106057199`)
8+
- Modalidade: remoto apenas (`f_WT=2`)
9+
- Tipos de contrato padrao: PJ e CLT (`f_JT=C,F`)
10+
- Exportacao em dois formatos: `.xlsx` e `.pdf`
11+
- Deduplicacao por link (ou por titulo + empresa + local quando o link nao existe)
1212

13-
## Arquitetura
13+
## Estrutura do projeto
1414

15-
- index.js: entrypoint enxuto e tratamento de falhas
16-
- src/config.js: leitura e validacao de configuracoes
17-
- src/browser.js: descoberta de Chrome/Edge e abertura do Puppeteer
18-
- src/linkedinScraper.js: logica de busca e extracao no LinkedIn
19-
- src/exporter.js: exportacao para Excel
20-
- src/logger.js: logs padronizados
21-
- src/app.js: orquestracao do fluxo completo
15+
- `index.js`: entrypoint e tratamento de falhas
16+
- `src/app.js`: fluxo principal (coleta e exportacao)
17+
- `src/config.js`: leitura das variaveis de ambiente
18+
- `src/browser.js`: inicializacao do navegador para o Puppeteer
19+
- `src/linkedinScraper.js`: montagem da URL e extracao das vagas
20+
- `src/exporter.js`: geracao de Excel e PDF
21+
- `src/logger.js`: logs padronizados
2222

2323
## Requisitos
2424

@@ -29,66 +29,77 @@ Bot de automacao para buscar vagas de tecnologia no LinkedIn em escala global e
2929
## Instalacao
3030

3131
1. Clone o projeto
32-
2. Execute npm install
32+
2. Rode `npm install`
3333

3434
## Execucao
3535

36-
- Producao: npm start
37-
- Desenvolvimento: npm run dev
38-
- Hot reload: npm run run
36+
- Producao: `npm start`
37+
- Desenvolvimento: `npm run dev`
38+
- Hot reload: `npm run run`
3939

40-
## Configuracao por ambiente
40+
## Variaveis de ambiente
4141

42-
Variaveis opcionais:
42+
Todas sao opcionais.
4343

44-
- SEARCH_LOCATION: local da busca (padrao: Worldwide)
45-
- SEARCH_LANGUAGE: idioma da busca (padrao: en)
46-
- SEARCH_KEYWORDS: lista separada por virgula
47-
- HEADLESS: true ou false (padrao: false)
48-
- WAIT_BETWEEN_SEARCHES_MS: espera entre buscas (padrao: 5000)
49-
- PAGE_TIMEOUT_MS: timeout de seletores (padrao: 10000)
50-
- VIEWPORT_WIDTH: largura do navegador (padrao: 1280)
51-
- VIEWPORT_HEIGHT: altura do navegador (padrao: 800)
52-
- OUTPUT_FILE: nome do arquivo de saida (padrao: vagas_linkedin.xlsx)
53-
- CHROME_PATH: caminho do executavel do navegador
44+
- `HEADLESS` (padrao: `false`)
45+
- `WAIT_BETWEEN_SEARCHES_MS` (padrao: `5000`)
46+
- `PAGE_TIMEOUT_MS` (padrao: `10000`)
47+
- `VIEWPORT_WIDTH` (padrao: `1280`)
48+
- `VIEWPORT_HEIGHT` (padrao: `800`)
49+
- `OUTPUT_FILE` (padrao: `vagas_linkedin.xlsx`)
50+
- `PDF_FILE` (padrao: `vagas_linkedin.pdf`)
51+
- `SEARCH_LOCATION` (padrao: `Brasil`)
52+
- `SEARCH_GEO_ID` (padrao: `106057199`)
53+
- `SEARCH_LANGUAGE` (padrao: `pt`)
54+
- `JOB_TYPES` (padrao: `C,F`)
55+
Valores comuns: `C` (PJ), `F` (CLT), `C,F` (ambos)
56+
- `SEARCH_KEYWORDS` (lista separada por virgula)
57+
- `CHROME_PATH` (caminho do executavel do navegador)
5458

55-
Exemplo no Windows cmd:
59+
Exemplo no Windows cmd (Brasil remoto, PJ+CLT):
5660

57-
set SEARCH_LOCATION=Worldwide&& set SEARCH_LANGUAGE=en&& set HEADLESS=true&& npm start
61+
```bat
62+
set SEARCH_GEO_ID=106057199&& set JOB_TYPES=C,F&& set HEADLESS=true&& npm start
63+
```
5864

59-
Exemplo com keywords customizadas:
65+
Exemplo com palavras-chave personalizadas:
6066

61-
set SEARCH_KEYWORDS=NodeJS,ReactJS,Python,DevOps&& npm start
67+
```bat
68+
set SEARCH_KEYWORDS=UX Designer,UI Designer,Product Manager,Product Owner&& npm start
69+
```
6270

6371
## Saida
6472

65-
Planilha Excel com as colunas:
73+
Arquivos gerados por padrao:
6674

67-
- palavra
68-
- titulo
69-
- empresa
70-
- local
71-
- link
75+
- `vagas_linkedin.xlsx`
76+
- `vagas_linkedin.pdf`
7277

73-
Arquivo padrao: vagas_linkedin.xlsx
78+
Colunas exportadas:
7479

75-
## Exemplo de planilha:
80+
- `palavra`
81+
- `titulo`
82+
- `empresa`
83+
- `local`
84+
- `link`
7685

77-
<img width="1901" height="599" alt="Image" src="https://github.com/user-attachments/assets/7c1c525f-1abb-438c-a398-3a44c23727fa" />
86+
No PDF, os links sao normalizados para uma versao curta do LinkedIn quando possivel, reduzindo risco de truncamento.
7887

7988
## Troubleshooting
8089

8190
Chrome/Edge nao encontrado:
8291

83-
- Instale Chrome ou Edge
84-
- Ou informe CHROME_PATH manualmente
92+
- Instale Google Chrome ou Microsoft Edge
93+
- Ou informe `CHROME_PATH` manualmente
8594

86-
Exemplo:
95+
Exemplo no Windows cmd:
8796

97+
```bat
8898
set CHROME_PATH=C:\Program Files\Google\Chrome\Application\chrome.exe&& npm start
99+
```
89100

90101
## Avisos
91102

92103
- Respeite os termos de uso do LinkedIn
93104
- Use o scraper de forma etica e responsavel
94-
- A estrutura de HTML do LinkedIn pode mudar e exigir ajuste de seletores
105+
- O HTML do LinkedIn pode mudar e exigir ajuste de seletores

src/config.js

Lines changed: 43 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,49 @@ const DEFAULT_KEYWORDS = [
88
"Product Owner",
99
"PO Remoto",
1010
"Product Manager Remoto",
11-
"Gerente de Produto"
11+
"Gerente de Produto",
12+
"Analista de UX",
13+
"Analista de UI",
14+
"Analista de UX UI",
15+
"Analista de Produto",
16+
"Analista de UX Remoto",
17+
"Analista de UI Remoto",
18+
"Analista de UX UI Remoto",
19+
"Analista de Produto Remoto",
20+
"Frontend Developer",
21+
"Desenvolvedor Frontend",
22+
"Desenvolvedor Front-end",
23+
"Engenheiro Frontend",
24+
"Engenheiro Front-end",
25+
"Frontend Developer Remoto",
26+
"Desenvolvedor Frontend Remoto",
27+
"Desenvolvedor Front-end Remoto",
28+
"Engenheiro Frontend Remoto",
29+
"Engenheiro Front-end Remoto",
30+
"Backend Developer",
31+
"Desenvolvedor Backend",
32+
"Desenvolvedor Back-end",
33+
"Engenheiro Backend",
34+
"Engenheiro Back-end",
35+
"Backend Developer Remoto",
36+
"Desenvolvedor Backend Remoto",
37+
"Node.js Developer Remoto",
38+
"Desenvolvedor Back-end Remoto",
39+
"Engenheiro Backend Remoto",
40+
"Engenheiro Back-end Remoto",
41+
"nodejs Developer",
42+
"Desenvolvedor Node.js",
43+
"Desenvolvedor Node",
44+
"MuleSoft Developer",
45+
"Desenvolvedor MuleSoft",
46+
"MuleSoft Developer Remoto",
47+
"Desenvolvedor MuleSoft Remoto",
48+
"Java Developer",
49+
"Desenvolvedor Java",
50+
"Engenheiro Java",
51+
"Java Developer Remoto",
52+
"Desenvolvedor Java Remoto",
53+
"Engenheiro Java Remoto"
1254
];
1355

1456
function parseBoolean(value, fallback) {

0 commit comments

Comments
 (0)