Una skill per Claude Code che recupera post da pagine LinkedIn aziendali tramite Apify, con supporto per finestre temporali e download media.
- Recupera i post dato l'URL o lo slug dell'azienda
- Due modalità per la finestra temporale: range esplicito (
--from/--to) o finestra relativa nativa dell'actor (--posted-limit 24h|week|month|3months|6months|year|any) - Limita il numero massimo di post con
--max-posts - Timeout configurabile per l'esecuzione dello scraping su Apify
- Output JSON con item completo dell'actor: testo (
content), autore, engagement (likes, commenti, shares, breakdown reazioni), URL canonico, media - Scarica immagini, video e PDF allegati ai post (opzionale: usa
--download-media)
- Python 3.8+
- Un token API Apify
-
Clona la skill nella directory
~/.claude/skills/di Claude Code:git clone https://github.com/giuseppebisemi/linkedin-fetch.git ~/.claude/skills/linkedin-fetch -
Installa le dipendenze Python:
pip install -r scripts/requirements.txt
-
Configura il tuo token Apify:
export APIFY_API_TOKEN="il_tuo_token"
Oppure crea un file
scripts/.env:APIFY_API_TOKEN=il_tuo_token
Esegui lo script di setup per installare le dipendenze e configurare l'ambiente:
bash scripts/setup.shQuesto script:
- Verifica Python 3.8+
- Installa le dipendenze da
requirements.txt - Crea il file
.envda.env.example
Dopo l'installazione, esegui il test per verificare che tutto funzioni:
python3 scripts/test.pyUna volta installata in ~/.claude/skills/linkedin-fetch/, la skill è disponibile in Claude Code come slash command. Lanciala scrivendo /linkedin-fetch seguito dalla richiesta in linguaggio naturale: Claude interpreta la richiesta, sceglie i flag corretti ed esegue lo script per te.
Claude estrae automaticamente:
- L'azienda — nome commerciale o URL LinkedIn. Se lo slug LinkedIn non coincide col nome (es. Anthropic →
anthropicresearch), Claude eseguescripts/search_company.py(actorharvestapi/linkedin-company-search) e usa i risultati —name,employeeCount,followerCount,locations,description— per convergere allo slug giusto. Se ci sono più match, ti mostra le opzioni e chiede conferma prima del fetch. - La finestra temporale — espressioni come "ultime 24h", "ultimo mese", "aprile 2026", "dal 1 al 15 marzo" vengono mappate sul flag corretto:
--posted-limitper finestre relative native dell'actor (più veloce),--from/--toper range di calendario espliciti. - Modificatori — frasi come "con i media", "con immagini", "scarica i video" aggiungono
--download-media.
Esempi:
/linkedin-fetch ultimi 10 post di Anthropic
→ search_company.py risolve "anthropic" → "anthropicresearch"
→ python3 scripts/fetch_posts.py --company anthropicresearch --posted-limit any --max-posts 10
/linkedin-fetch post di LYBRA dell'ultimo mese
→ search_company.py ritorna 3 match (lybra-consulting, lybra-tech, lybra-destination)
→ Claude chiede quale; poi esegue fetch_posts.py --company <scelto> --posted-limit month
/linkedin-fetch post di Microsoft di aprile 2026 con immagini
→ python3 scripts/fetch_posts.py --company microsoft --from 2026-04-01 --to 2026-04-30 --download-media
La sezione successiva descrive l'invocazione diretta dello script Python (utile per scripting, automazioni, o quando si vuole bypassare l'interpretazione di Claude).
Per "ultime 24h", "ultimo mese", "ultimo trimestre" ecc. usa --posted-limit. È mappato sul parametro nativo postedLimit dell'actor, che interrompe lo scroll quando esce dalla finestra.
python3 scripts/fetch_posts.py --company google --posted-limit month
python3 scripts/fetch_posts.py --company google --posted-limit 24hpython3 scripts/fetch_posts.py \
--company google \
--posted-limit any \
--max-posts 10python3 scripts/fetch_posts.py \
--company google \
--from 2026-04-01 \
--to 2026-04-30| Flag | Descrizione |
|---|---|
--company URL|SLUG |
URL o slug della pagina LinkedIn (obbligatorio) |
--posted-limit WINDOW |
Finestra relativa: 1h, 24h, week, month, 3months, 6months, year, any. Mutuamente esclusivo con --from/--to. |
--from YYYY-MM-DD |
Data inizio (inclusa) |
--to YYYY-MM-DD |
Data fine (inclusa) |
--max-posts N |
Numero massimo di post da recuperare (default: 0 = tutti) |
--timeout SEC |
Timeout di attesa per il run Apify in secondi (default: 300) |
--output FILE |
Percorso personalizzato per il file JSON di output |
--download-media |
Scarica anche immagini, video e PDF allegati ai post |
linkedin-fetch/
├── SKILL.md # Istruzioni della skill per Claude Code
├── README.md # Questo file
├── .gitignore # Esclude secret e output generati
├── scripts/
│ ├── fetch_posts.py # Script principale
│ ├── setup.sh # Script di installazione dipendenze
│ ├── test.py # Smoke test script
│ ├── requirements.txt # Dipendenze Python
│ ├── .env # Token Apify (non tracciato da git)
│ └── .env.example # Template delle variabili d'ambiente
└── references/
└── apify-actor.md # Riferimento API dell'actor Apify
| Errore | Soluzione |
|---|---|
Dipendenza mancante (apify-client, python-dotenv) |
Esegui bash scripts/setup.sh |
| APIFY_API_TOKEN non trovato | Usa bash scripts/setup.sh e compila .env, oppure esporta il token |
| 401 da Apify | Verifica che il token sia valido e non scaduto |
| Timeout del run | Aumenta --timeout o controlla i log su console Apify |
| Errore: specifica --from...oppure --posted-limit | Usa --posted-limit any se vuoi tutti i post o specifica un range con --from/--to |
MIT