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 +52 -31
- package/dist/package.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,38 +1,62 @@
|
|
|
1
|
-
#
|
|
1
|
+
# n8n-nodes-linkedin-scraper
|
|
2
2
|
|
|
3
|
-
|
|
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
|
-
##
|
|
7
|
+
## Installation
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
27
|
+
## Resources
|
|
28
28
|
|
|
29
|
-
|
|
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
|
|
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
|
-
|
|
34
|
-
|
|
35
|
-
|
|
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
|
-
|
|
70
|
+
See `BUILD.md`. Publishing is automated; do not `npm publish` by hand.
|
|
47
71
|
|
|
48
|
-
|
|
49
|
-
yarn build
|
|
50
|
-
yarn pack
|
|
51
|
-
```
|
|
72
|
+
## License
|
|
52
73
|
|
|
53
|
-
|
|
74
|
+
MIT.
|
package/dist/package.json
CHANGED