utilisationLinear+Scrapeless+Claude构建deAI研究assistant
Avancé
Ceci est unMarket Research, AI Chatbotworkflow d'automatisation du domainecontenant 17 nœuds.Utilise principalement des nœuds comme Code, Linear, Switch, LinearTrigger, Agent. 基于Linear、ScrapelessetClaudedeAI研究assistant
Prérequis
- •Clé API Anthropic
Nœuds utilisés (17)
Catégorie
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
"id": "yTpEZbAAFcS0Yp4m",
"meta": {
"instanceId": "7d291de9dc3bbf0106d65e069919a3de2507e3365a7b25788a79a3562af9bfc5",
"templateCredsSetupCompleted": true
},
"name": "Build an AI-Powered Research Assistant with Linear + Scrapeless + Claude",
"tags": [],
"nodes": [
{
"id": "9137108b-6a96-4264-bb3f-4f0dc5d5c7a5",
"name": "Déclencheur Linear",
"type": "n8n-nodes-base.linearTrigger",
"position": [
-580,
380
],
"webhookId": "22e62b88-a910-4075-8527-106d75769acd",
"parameters": {
"teamId": "3a89590a-2521-4c4a-b3b2-7e7ad5962666",
"resources": [
"issue",
"comment",
"reaction"
]
},
"credentials": {
"linearApi": {
"id": "glWOH78HS1At4s5K",
"name": "Linear account"
}
},
"typeVersion": 1
},
{
"id": "d49110c2-f5f9-4939-b2a3-4ee7b9c1aa77",
"name": "Commutateur",
"type": "n8n-nodes-base.switch",
"position": [
-360,
260
],
"parameters": {
"mode": "expression",
"output": "={{\n $json.type === 'Issue' && $json.data.title.toLowerCase().includes('/search') ? 0 :\n $json.type === 'Issue' && $json.data.title.toLowerCase().includes('/trends') ? 1 :\n $json.type === 'Issue' && $json.data.title.toLowerCase().includes('/unlock') ? 2 :\n $json.type === 'Issue' && $json.data.title.toLowerCase().includes('/scrape') ? 3 :\n $json.type === 'Issue' && $json.data.title.toLowerCase().includes('/crawl') ? 4 :\n -1\n}}",
"numberOutputs": 5
},
"typeVersion": 3.2
},
{
"id": "627d13f1-1617-4a20-aa1f-2ae8cba643d6",
"name": "Google Search",
"type": "n8n-nodes-scrapeless.scrapeless",
"position": [
260,
60
],
"parameters": {
"q": "={{ $json.data.title }}"
},
"credentials": {
"scrapelessApi": {
"id": "B73pdQXNjpqNbIhs",
"name": "Scrapeless account"
}
},
"typeVersion": 1
},
{
"id": "16d29067-9aae-4159-8d31-37465885350d",
"name": "Google Trends",
"type": "n8n-nodes-scrapeless.scrapeless",
"position": [
260,
220
],
"parameters": {
"q": "={{ $json.data.title }}",
"operation": "googleTrends"
},
"credentials": {
"scrapelessApi": {
"id": "B73pdQXNjpqNbIhs",
"name": "Scrapeless account"
}
},
"typeVersion": 1
},
{
"id": "cadc6292-efcf-4dcf-bc1f-03ea1a6c1a75",
"name": "Web Unlocker",
"type": "n8n-nodes-scrapeless.scrapeless",
"position": [
260,
360
],
"parameters": {
"url": "={{ $json.data.title.replace(/\\/unlock/gi, '').trim() }}",
"headless": false,
"resource": "universalScrapingApi"
},
"credentials": {
"scrapelessApi": {
"id": "B73pdQXNjpqNbIhs",
"name": "Scrapeless account"
}
},
"typeVersion": 1
},
{
"id": "979d5139-2593-4975-afa7-2ac16d8bb5da",
"name": "Scrape",
"type": "n8n-nodes-scrapeless.scrapeless",
"position": [
260,
540
],
"parameters": {
"url": "={{ $json.data.title }}",
"resource": "crawler"
},
"credentials": {
"scrapelessApi": {
"id": "B73pdQXNjpqNbIhs",
"name": "Scrapeless account"
}
},
"typeVersion": 1
},
{
"id": "58658eec-316e-4fb2-8715-6f7efc49d381",
"name": "Crawl",
"type": "n8n-nodes-scrapeless.scrapeless",
"position": [
260,
700
],
"parameters": {
"url": "={{ $json.data.title }}",
"resource": "crawler",
"operation": "crawl",
"limitCrawlPages": 1
},
"credentials": {
"scrapelessApi": {
"id": "B73pdQXNjpqNbIhs",
"name": "Scrapeless account"
}
},
"typeVersion": 1
},
{
"id": "410d82d4-2bdf-4242-b6a3-32e508608be4",
"name": "Code2",
"type": "n8n-nodes-base.code",
"position": [
0,
0
],
"parameters": {
"jsCode": "const originalTitle = $json.data.title;\nlet cleanTitle = originalTitle;\n\nif (originalTitle.toLowerCase().includes('/search')) {\n cleanTitle = originalTitle.replace(/\\/search/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/trends')) {\n cleanTitle = originalTitle.replace(/\\/trends/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/unlock')) {\n cleanTitle = originalTitle.replace(/\\/unlock/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/scrape')) {\n cleanTitle = originalTitle.replace(/\\/scrape/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/crawl')) {\n cleanTitle = originalTitle.replace(/\\/crawl/gi, '').trim();\n}\n\nreturn {\n\n data: {\n ...($json.data),\n title: cleanTitle\n }\n};"
},
"typeVersion": 2
},
{
"id": "8f633954-262b-482d-aa29-3a97a0e8cbb6",
"name": "Code",
"type": "n8n-nodes-base.code",
"position": [
580,
340
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "return {\n output: JSON.stringify($json, null, 2)\n};"
},
"typeVersion": 2
},
{
"id": "d8e55c8c-857b-403e-b2ee-afc1253d7aba",
"name": "Code3",
"type": "n8n-nodes-base.code",
"position": [
0,
180
],
"parameters": {
"mode": "runOnceForEachItem",
"jsCode": "const originalTitle = $json.data.title;\nlet cleanTitle = originalTitle;\n\nif (originalTitle.toLowerCase().includes('/search')) {\n cleanTitle = originalTitle.replace(/\\/search/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/trends')) {\n cleanTitle = originalTitle.replace(/\\/trends/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/unlock')) {\n cleanTitle = originalTitle.replace(/\\/unlock/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/scrape')) {\n cleanTitle = originalTitle.replace(/\\/scrape/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/crawl')) {\n cleanTitle = originalTitle.replace(/\\/crawl/gi, '').trim();\n}\n\nreturn {\n\n data: {\n ...($json.data),\n title: cleanTitle\n }\n};"
},
"typeVersion": 2
},
{
"id": "9e9a315e-6915-41a2-b77c-d46c773b9891",
"name": "Code4",
"type": "n8n-nodes-base.code",
"position": [
20,
360
],
"parameters": {
"jsCode": "const originalTitle = $json.data.title;\nlet cleanTitle = originalTitle;\n\nif (originalTitle.toLowerCase().includes('/search')) {\n cleanTitle = originalTitle.replace(/\\/search/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/trends')) {\n cleanTitle = originalTitle.replace(/\\/trends/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/unlock')) {\n cleanTitle = originalTitle.replace(/\\/unlock/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/scrape')) {\n cleanTitle = originalTitle.replace(/\\/scrape/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/crawl')) {\n cleanTitle = originalTitle.replace(/\\/crawl/gi, '').trim();\n}\n\nreturn {\n\n data: {\n ...($json.data),\n title: cleanTitle\n }\n};"
},
"typeVersion": 2
},
{
"id": "c076a7a6-c901-481d-8037-f1e06be1f8e4",
"name": "Code5",
"type": "n8n-nodes-base.code",
"position": [
20,
520
],
"parameters": {
"jsCode": "const originalTitle = $json.data.title;\nlet cleanTitle = originalTitle;\n\nif (originalTitle.toLowerCase().includes('/search')) {\n cleanTitle = originalTitle.replace(/\\/search/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/trends')) {\n cleanTitle = originalTitle.replace(/\\/trends/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/unlock')) {\n cleanTitle = originalTitle.replace(/\\/unlock/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/scrape')) {\n cleanTitle = originalTitle.replace(/\\/scrape/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/crawl')) {\n cleanTitle = originalTitle.replace(/\\/crawl/gi, '').trim();\n}\n\nreturn {\n\n data: {\n ...($json.data),\n title: cleanTitle\n }\n};"
},
"typeVersion": 2
},
{
"id": "b9e6ac08-8f3c-40cc-b183-a4303d9801cd",
"name": "Code6",
"type": "n8n-nodes-base.code",
"position": [
20,
720
],
"parameters": {
"jsCode": "const originalTitle = $json.data.title;\nlet cleanTitle = originalTitle;\n\nif (originalTitle.toLowerCase().includes('/search')) {\n cleanTitle = originalTitle.replace(/\\/search/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/trends')) {\n cleanTitle = originalTitle.replace(/\\/trends/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/unlock')) {\n cleanTitle = originalTitle.replace(/\\/unlock/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/scrape')) {\n cleanTitle = originalTitle.replace(/\\/scrape/gi, '').trim();\n} else if (originalTitle.toLowerCase().includes('/crawl')) {\n cleanTitle = originalTitle.replace(/\\/crawl/gi, '').trim();\n}\n\nreturn {\n\n data: {\n ...($json.data),\n title: cleanTitle\n }\n};"
},
"typeVersion": 2
},
{
"id": "96631700-d64b-41f7-ba06-263be9acd76e",
"name": "AI Agent1",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
1040,
420
],
"parameters": {
"text": "={{ $json.output }}",
"options": {
"systemMessage": "You are a data analyst. Summarize search/scrape results concisely. Be factual and brief. Format for Linear comments.\n\nAnalyze the provided data and create a structured summary that includes:\n- Key findings and insights\n- Data source and reliability assessment \n- Actionable recommendations\n- Relevant metrics and trends\n- Next steps for further research\n\nFormat your response with clear headers and bullet points for easy reading in Linear."
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "300d7264-86df-485a-9183-ed42df732ccc",
"name": "Anthropic Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
980,
720
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514",
"cachedResultName": "Claude 4 Sonnet"
},
"options": {
"temperature": 0.3,
"maxTokensToSample": 4000
}
},
"credentials": {
"anthropicApi": {
"id": "21C7G7zPQRFyxp1T",
"name": "Anthropic account"
}
},
"typeVersion": 1.3
},
{
"id": "20f412e2-4081-40a7-a458-af7b2908cc44",
"name": "Code7",
"type": "n8n-nodes-base.code",
"position": [
1540,
600
],
"parameters": {
"jsCode": "return {\n output: $json.output\n .replace(/\\\\n/g, '\\n')\n .replace(/\\\\\"/g, '\"')\n .replace(/\\\\\\\\/g, '\\\\')\n .trim()\n};"
},
"typeVersion": 2
},
{
"id": "4379cc64-3b20-4ad5-a62b-470da3338cf8",
"name": "Ajouter un commentaire à un problème1",
"type": "n8n-nodes-base.linear",
"position": [
1760,
600
],
"parameters": {
"comment": "={{ $json.output }}",
"issueId": "={{ $('Linear Trigger').item.json.data.id }}",
"resource": "comment",
"additionalFields": {}
},
"credentials": {
"linearApi": {
"id": "glWOH78HS1At4s5K",
"name": "Linear account"
}
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "e01eaa88-0eff-40de-b80b-51ca1bcd3acb",
"connections": {
"8f633954-262b-482d-aa29-3a97a0e8cbb6": {
"main": [
[
{
"node": "96631700-d64b-41f7-ba06-263be9acd76e",
"type": "main",
"index": 0
}
]
]
},
"410d82d4-2bdf-4242-b6a3-32e508608be4": {
"main": [
[
{
"node": "627d13f1-1617-4a20-aa1f-2ae8cba643d6",
"type": "main",
"index": 0
}
]
]
},
"d8e55c8c-857b-403e-b2ee-afc1253d7aba": {
"main": [
[
{
"node": "16d29067-9aae-4159-8d31-37465885350d",
"type": "main",
"index": 0
}
]
]
},
"9e9a315e-6915-41a2-b77c-d46c773b9891": {
"main": [
[
{
"node": "cadc6292-efcf-4dcf-bc1f-03ea1a6c1a75",
"type": "main",
"index": 0
}
]
]
},
"c076a7a6-c901-481d-8037-f1e06be1f8e4": {
"main": [
[
{
"node": "979d5139-2593-4975-afa7-2ac16d8bb5da",
"type": "main",
"index": 0
}
]
]
},
"b9e6ac08-8f3c-40cc-b183-a4303d9801cd": {
"main": [
[
{
"node": "58658eec-316e-4fb2-8715-6f7efc49d381",
"type": "main",
"index": 0
}
]
]
},
"20f412e2-4081-40a7-a458-af7b2908cc44": {
"main": [
[
{
"node": "4379cc64-3b20-4ad5-a62b-470da3338cf8",
"type": "main",
"index": 0
}
]
]
},
"58658eec-316e-4fb2-8715-6f7efc49d381": {
"main": [
[
{
"node": "8f633954-262b-482d-aa29-3a97a0e8cbb6",
"type": "main",
"index": 0
}
]
]
},
"979d5139-2593-4975-afa7-2ac16d8bb5da": {
"main": [
[
{
"node": "8f633954-262b-482d-aa29-3a97a0e8cbb6",
"type": "main",
"index": 0
}
]
]
},
"d49110c2-f5f9-4939-b2a3-4ee7b9c1aa77": {
"main": [
[
{
"node": "410d82d4-2bdf-4242-b6a3-32e508608be4",
"type": "main",
"index": 0
}
],
[
{
"node": "d8e55c8c-857b-403e-b2ee-afc1253d7aba",
"type": "main",
"index": 0
}
],
[
{
"node": "9e9a315e-6915-41a2-b77c-d46c773b9891",
"type": "main",
"index": 0
}
],
[
{
"node": "c076a7a6-c901-481d-8037-f1e06be1f8e4",
"type": "main",
"index": 0
}
],
[
{
"node": "b9e6ac08-8f3c-40cc-b183-a4303d9801cd",
"type": "main",
"index": 0
}
]
]
},
"96631700-d64b-41f7-ba06-263be9acd76e": {
"main": [
[
{
"node": "20f412e2-4081-40a7-a458-af7b2908cc44",
"type": "main",
"index": 0
}
]
]
},
"cadc6292-efcf-4dcf-bc1f-03ea1a6c1a75": {
"main": [
[
{
"node": "8f633954-262b-482d-aa29-3a97a0e8cbb6",
"type": "main",
"index": 0
}
]
]
},
"627d13f1-1617-4a20-aa1f-2ae8cba643d6": {
"main": [
[
{
"node": "8f633954-262b-482d-aa29-3a97a0e8cbb6",
"type": "main",
"index": 0
}
]
]
},
"16d29067-9aae-4159-8d31-37465885350d": {
"main": [
[
{
"node": "8f633954-262b-482d-aa29-3a97a0e8cbb6",
"type": "main",
"index": 0
}
]
]
},
"9137108b-6a96-4264-bb3f-4f0dc5d5c7a5": {
"main": [
[
{
"node": "d49110c2-f5f9-4939-b2a3-4ee7b9c1aa77",
"type": "main",
"index": 0
}
]
]
},
"300d7264-86df-485a-9183-ed42df732ccc": {
"ai_languageModel": [
[
{
"node": "96631700-d64b-41f7-ba06-263be9acd76e",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}Foire aux questions
Comment utiliser ce workflow ?
Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.
Dans quelles scénarios ce workflow est-il adapté ?
Avancé - Étude de marché, Chatbot IA
Est-ce payant ?
Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.
Workflows recommandés
Génération automatisée de cartes de comparaison concurrentielle et de renseignements sur les ventes en temps réel
Utiliser l'IA, Slack et Notion pour générer automatiquement des cartes de comparaison concurrentielle (alternative à Klue)
Code
Merge
Slack
+
Code
Merge
Slack
58 NœudsConnor Provines
Étude de marché
Augmentez le trafic de votre site
Claude AI、Scrapeless与竞品analysedeautomatisationSEOcontenu引擎
Set
Code
Filter
+
Set
Code
Filter
26 Nœudsscrapeless official
Création de contenu
Extracteur automatisé de listes immobilières
Automatisation du scraping des annonces immobilières avec Scrapeless et Google Sheets
Code
Google Sheets
Schedule Trigger
+
Code
Google Sheets
Schedule Trigger
7 Nœudsscrapeless official
Étude de marché
Répondre automatiquement aux e-mails Gmail et créer des tickets Linear en utilisant GPT-5, gotoHuman et une vérification humaine
Répondre automatiquement aux e-mails de Gmail et créer des tickets Linear en utilisant GPT-5, gotoHuman et une révision humaine
Set
Code
Gmail
+
Set
Code
Gmail
37 NœudsgotoHuman
Gestion des tickets
Automatisation des réponses WhatsApp dans Go High Level avec Redis et Anthropic
Automatisation des réponses WhatsApp avec Go High Level, Redis et Anthropic
If
Set
Code
+
If
Set
Code
31 NœudsJorge Martínez
Chatbot IA
Rédacteur de blog SEO piloté par l'IA
Utiliser Gemini, Scrapeless et Pinecone RAG pour générer du contenu de blog optimisé SEO
Set
Code
Html
+
Set
Code
Html
28 Nœudsscrapeless official
Création de contenu
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds17
Catégorie2
Types de nœuds7
Description de la difficulté
Auteur
scrapeless official
@scrapelessofficialLiens externes
Voir sur n8n.io →
Partager ce workflow