n8n-nodes-linkedin-scraper 1.0.28 → 1.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,38 +1,62 @@
1
- # LinkedIn Scraper Microservice Node
1
+ # n8n-nodes-linkedin-scraper
2
2
 
3
- A standalone n8n community node that connects to the LinkedIn scraper microservice packaged in this repository. It exposes job search, job detail, and company follower endpoints so any official n8n installation can orchestrate scraping workflows without custom Docker images.
3
+ An n8n community node for the InNotes LinkedIn scraper microservice
4
+ (`https://scraper.innotes.me`, hardcoded in `LinkedinScraper.node.ts`). It
5
+ exposes job search, job details, and company follower counts.
4
6
 
5
- ## Features
7
+ ## Installation
6
8
 
7
- - **Job Search Automation** – Trigger combined LinkedIn and jobs.ch job searches with blacklist filters and pagination controls.
8
- - **Job Detail Retrieval** – Fetch job descriptions with optional authenticated cookies for private postings.
9
- - **Company Insights** – Collect LinkedIn company follower counts to enrich CRM records.
9
+ Published to NPM as the community node package `n8n-nodes-linkedin-scraper`
10
+ (`package.json`, `.github/workflows/publish-linkedin-scraper-node.yml`).
10
11
 
11
- ## Installation
12
+ Build from source (`engines` in `package.json`: node >= 18.10, yarn >= 1.22.0):
13
+
14
+ ```bash
15
+ yarn install
16
+ yarn build
17
+ ```
12
18
 
13
- 1. Clone or download the `n8n_linkedin_scraper_node` directory.
14
- 2. Install dependencies:
15
- ```bash
16
- yarn install
17
- ```
18
- 3. Build the node:
19
- ```bash
20
- yarn build
21
- ```
22
- 4. Copy the contents of the generated `dist/` folder to your n8n custom nodes directory (e.g. `~/.n8n/custom/`).
23
- 5. Restart n8n and enable Community Nodes if required.
19
+ ## Credentials
24
20
 
25
- ## Configuration
21
+ This node defines no credential of its own. It uses the **InNotes API**
22
+ credential (`inNotesApi`, `n8n_node/credentials/InNotesApi.credentials.ts`) from
23
+ the [`n8n-nodes-innotes`](https://github.com/mrc527/InNotes/tree/main/n8n_node)
24
+ package, and reads only its **Bearer Token** (`token`) — the node throws
25
+ `Bearer token is missing from InNotes API credentials` if it is empty.
26
26
 
27
- 1. Create credentials in n8n using **LinkedIn Scraper API**.
27
+ ## Resources
28
28
 
29
- ## Usage
29
+ **Jobs → Search** (`POST /jobs/search`, 90-minute timeout). Comma-separated job
30
+ titles and locations, Max Results (default 500, max 2000), Include jobs.ch
31
+ (default on), Time Range (`r86400` / `r604800` / `r2592000`, default past 24
32
+ hours), plus company and keyword blacklists.
30
33
 
31
- The node exposes three resources:
34
+ **The node sends no cookies at all.** `JobSearchRequest.cookies` defaults to
35
+ empty (`scraper_service/app/schemas.py`) and the scraper then fetches the
36
+ caller's session itself with the same Bearer token
37
+ (`search_jobs` → `fetch_session_cookies`, `scraper_service/app/routes/api.py`).
32
38
 
33
- - **Jobs → Search**: Accepts comma separated job titles and locations, plus optional company and keyword blacklists. The LinkedIn session it searches with never passes through the workflow: the scraper service fetches it from InNotes itself, using the same API token this node authenticates with. Nothing about the session appears in the node's input, output or execution log.
34
- - **Job → Details**: Retrieves job metadata, optionally using session cookies from the login step.
35
- - **Company → Followers**: Returns the follower count for a LinkedIn company profile.
39
+ **Job → Details** (`POST /jobs/details/batch`, 15-minute timeout per batch).
40
+ Takes a Job URL (LinkedIn or jobs.ch) per input item; all items are collected
41
+ and sent in chunks of 30, `max_concurrent: 5`, `max_retries: 7`, with results
42
+ mapped back to their original item order. A URL not starting with `http` is
43
+ returned as a failed result rather than sent.
44
+
45
+ **Company → Followers** (`POST /companies/followers/batch`, 10-minute timeout
46
+ per batch). Same batching: chunks of 30, results mapped back by index.
47
+
48
+ ## Errors
49
+
50
+ A 401/403 reaching the outer handler is reported as *"LinkedIn session expired.
51
+ Please visit LinkedIn in a browser with the InNotes extension enabled to renew
52
+ your session."* — and it **always throws**: that check runs before
53
+ `this.continueOnFail()`. Continue On Fail only changes non-auth errors, which
54
+ are emitted as `{ error, itemIndex }` instead of throwing.
55
+
56
+ **Company → Followers never produces that message.** The Job → Details batch
57
+ catch re-throws on 401/403 so it reaches the outer handler; the followers batch
58
+ catch does not, so every batch failure — auth included — becomes a per-item
59
+ `{ follower_count: 0, source: 'error', success: false, error: 'Batch request failed: …' }`.
36
60
 
37
61
  ## Development
38
62
 
@@ -43,11 +67,8 @@ yarn test
43
67
  yarn build
44
68
  ```
45
69
 
46
- ## Packaging
70
+ See `BUILD.md`. Publishing is automated; do not `npm publish` by hand.
47
71
 
48
- ```bash
49
- yarn build
50
- yarn pack
51
- ```
72
+ ## License
52
73
 
53
- The resulting archive can be published to npm or installed directly into another n8n deployment.
74
+ MIT.
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-linkedin-scraper",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "N8N node for interacting with the standalone LinkedIn scraper microservice",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-linkedin-scraper",
3
- "version": "1.0.28",
3
+ "version": "1.0.30",
4
4
  "description": "N8N node for interacting with the standalone LinkedIn scraper microservice",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",