LinkedIn bloquea el scraping directo. El patrón seguro 2026 utiliza el operador site:linkedin.com de Google para mostrar publicaciones públicas y obtenerlas a través de Scavio en nodos de solicitud HTTP n8n. Sin cookies de LinkedIn, sin riesgo para la cuenta.
Requisitos previos
- n8n Cloud o autohospedado
- Una clave API de Scavio
- Una palabra clave objetivo o el nombre de un competidor
Guia paso a paso
Paso 1: Agregar un activador de programación n8n
Ejecute cada 30 minutos para obtener nueva señal.
// Schedule Trigger
Interval: 30 minutesPaso 2: Agregar un nodo de solicitud HTTP a Scavio
Llame a Scavio con una consulta sobre el sitio:linkedin.com/posts.
// HTTP Request node
Method: POST
URL: https://api.scavio.dev/api/v1/search
Headers: x-api-key: {{$env.SCAVIO_API_KEY}}
Body: {
"query": "site:linkedin.com/posts {{$json.keyword}}",
"num_results": 20
}Paso 3: Analizar resultados_orgánicos
Cada publicación incluye título (autor + fragmento) y URL.
// n8n Code node
return items[0].json.organic_results.map(r => ({
json: { author: r.title.split('|')[0], url: r.link, snippet: r.snippet }
}));Paso 4: Deduplicar contra ejecuciones anteriores
Almacene las URL vistas en una tabla de datos n8n para evitar duplicados.
// Data Table node
Action: Upsert
Key: url
Table: linkedin_posts_seenPaso 5: Enrutar nuevas publicaciones aguas abajo
Canalice a Slack, Airtable o un segundo flujo de trabajo para enriquecerlo.
// Slack node
Message: New LinkedIn post by {{$json.author}}: {{$json.url}}Ejemplo en Python
import os, requests
API_KEY = os.environ['SCAVIO_API_KEY']
def linkedin_posts(keyword):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers={'x-api-key': API_KEY},
json={'query': f'site:linkedin.com/posts {keyword}', 'num_results': 20})
return r.json().get('organic_results', [])
for p in linkedin_posts('AI agents gtm'):
print(p['link'])Ejemplo en JavaScript
const API_KEY = process.env.SCAVIO_API_KEY;
export async function linkedinPosts(keyword) {
const r = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST',
headers: { 'x-api-key': API_KEY, 'Content-Type': 'application/json' },
body: JSON.stringify({ query: `site:linkedin.com/posts ${keyword}`, num_results: 20 })
});
return (await r.json()).organic_results || [];
}Salida esperada
List of public LinkedIn posts matching the keyword with author, URL, and snippet. Runs every 30 minutes, new posts only.