自动化新闻监控与Claude 4 AI分析,用于Discord和Google新闻
高级
这是一个Miscellaneous, AI Summarization, Multimodal AI领域的自动化工作流,包含 30 个节点。主要使用 Code, Discord, Aggregate, SerpApi, GoogleSheets 等节点。 自动化新闻监控与Claude 4 AI分析,用于Discord和Google新闻
前置要求
- •Discord Bot Token 或 Webhook
- •Google Sheets API 凭证
- •Anthropic API Key
使用的节点 (30)
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "393ca9e36a1f81b0f643c72792946a5fe5e49eb4864181ba4032e5a408278263",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "3b6eab19-a13e-4779-80bb-8df6e55b1a32",
"name": "Anthropic聊天模型6",
"type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
"position": [
2240,
1600
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "claude-sonnet-4-20250514",
"cachedResultName": "Claude 4 Sonnet"
},
"options": {
"maxTokensToSample": 20000
}
},
"credentials": {
"anthropicApi": {
"id": "WXQf5QsxCs3AyxlW",
"name": "Anthropic account"
}
},
"typeVersion": 1.3
},
{
"id": "61a264f4-781e-45c7-8514-a7d5ae7d1c2f",
"name": "计划触发器",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-336,
1568
],
"parameters": {
"rule": {
"interval": [
{
"field": "cronExpression",
"expression": "0 9 * * 1"
}
]
}
},
"typeVersion": 1.2
},
{
"id": "84b638ee-ab02-433f-954e-94464d2eba0c",
"name": "便签2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-528,
1392
],
"parameters": {
"width": 464,
"height": 320,
"content": "# 阶段1:每周计划激活"
},
"typeVersion": 1
},
{
"id": "bbd0aa95-608f-45be-99f6-c5dc2257d3af",
"name": "便签3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-528,
1760
],
"parameters": {
"width": 464,
"height": 528,
"content": "### 您需要做的:"
},
"typeVersion": 1
},
{
"id": "9a22fc2f-05e1-489f-851d-dae76b15e047",
"name": "便签4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
1392
],
"parameters": {
"color": 2,
"width": 464,
"height": 320,
"content": "# 阶段2:搜索查询管理和主题处理"
},
"typeVersion": 1
},
{
"id": "a54bf68b-e599-4f1f-bf1c-04a2b0656ec1",
"name": "便签5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-16,
1760
],
"parameters": {
"color": 2,
"width": 464,
"height": 464,
"content": "### 您需要做的:"
},
"typeVersion": 1
},
{
"id": "02d9b7dc-6364-427e-be7d-59c778b05175",
"name": "便签 6",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
1392
],
"parameters": {
"color": 3,
"width": 464,
"height": 320,
"content": "# 阶段3:全面新闻发现和收集"
},
"typeVersion": 1
},
{
"id": "a5b99be3-b041-460a-b42a-ea02f374f184",
"name": "便签7",
"type": "n8n-nodes-base.stickyNote",
"position": [
784,
1760
],
"parameters": {
"color": 3,
"width": 464,
"height": 512,
"content": "### 系统执行的操作:"
},
"typeVersion": 1
},
{
"id": "adb304ef-bd97-4715-bb06-2c1967849676",
"name": "便签8",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
1392
],
"parameters": {
"color": 4,
"width": 752,
"height": 320,
"content": "# 阶段4:深度内容分析和文章抓取"
},
"typeVersion": 1
},
{
"id": "7ec99a64-6825-4207-ae5b-36a0f8b67c72",
"name": "便签9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1280,
1760
],
"parameters": {
"color": 4,
"width": 752,
"height": 416,
"content": "### 系统执行的操作:"
},
"typeVersion": 1
},
{
"id": "facae94e-45e9-4907-b686-fb89ef9623eb",
"name": "便签10",
"type": "n8n-nodes-base.stickyNote",
"position": [
2080,
1392
],
"parameters": {
"color": 5,
"width": 752,
"height": 320,
"content": "# 阶段5:AI驱动的内容分析和综合"
},
"typeVersion": 1
},
{
"id": "faebe895-b178-42d3-b434-ed3eaece7381",
"name": "便签11",
"type": "n8n-nodes-base.stickyNote",
"position": [
2080,
1760
],
"parameters": {
"color": 5,
"width": 752,
"height": 416,
"content": "### 系统执行的操作:"
},
"typeVersion": 1
},
{
"id": "877bda6c-58da-4d0c-a46a-bce25c6cbaf7",
"name": "便签12",
"type": "n8n-nodes-base.stickyNote",
"position": [
2880,
1392
],
"parameters": {
"color": 6,
"width": 752,
"height": 320,
"content": "# 阶段6:Discord交付的内容优化"
},
"typeVersion": 1
},
{
"id": "a90cfa84-e316-486f-82a1-b2ab16b18573",
"name": "便签 13",
"type": "n8n-nodes-base.stickyNote",
"position": [
2880,
1776
],
"parameters": {
"color": 6,
"width": 752,
"height": 480,
"content": "### 系统执行的操作:"
},
"typeVersion": 1
},
{
"id": "312854b3-8fd4-4f23-8f5e-59975ada4600",
"name": "便签14",
"type": "n8n-nodes-base.stickyNote",
"position": [
3664,
1296
],
"parameters": {
"color": 7,
"width": 928,
"height": 592,
"content": "# 阶段7:自动化团队沟通和报告交付"
},
"typeVersion": 1
},
{
"id": "9ec29dfb-98be-4edd-8a6c-c7b6531602c6",
"name": "便签15",
"type": "n8n-nodes-base.stickyNote",
"position": [
3664,
1936
],
"parameters": {
"color": 7,
"width": 928,
"height": 448,
"content": "### 系统执行的操作:"
},
"typeVersion": 1
},
{
"id": "d5842671-b64e-423a-85c4-7d3256b1422c",
"name": "获取查询",
"type": "n8n-nodes-base.googleSheets",
"position": [
160,
1568
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Query"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "https://docs.google.com/spreadsheets/d/1k6v6DeL_3cZ0U9kANAlrIIUIIOil959MaykV7JNAXro/edit?gid=0#gid=0"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "wBRLUCktxqXE6DVJ",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "11b98779-6f2c-42ad-b051-41fa8aed3fc2",
"name": "遍历项目",
"type": "n8n-nodes-base.splitInBatches",
"position": [
528,
1568
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "a9778ac0-c55e-46b9-9288-820cec4cabb0",
"name": "搜索GNews",
"type": "n8n-nodes-serpapi.serpApi",
"position": [
864,
1568
],
"parameters": {
"q": "={{ $json.Query }}",
"operation": "google_news",
"requestOptions": {},
"additionalFields": {}
},
"credentials": {
"serpApi": {
"id": "w1oDmQzMKE4Wcj2P",
"name": "SerpAPI account"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "d679b877-042f-4bf6-b5ee-9fae394a5da1",
"name": "仅返回URL",
"type": "n8n-nodes-base.code",
"position": [
1072,
1568
],
"parameters": {
"jsCode": "// Récupérer les données d'entrée\nconst inputData = $input.all()[0].json;\n\n// Extraire les résultats de news\nconst newsResults = inputData.news_results || [];\n\n// Trier par position (ordre croissant)\nconst sortedResults = newsResults.sort((a, b) => a.position - b.position);\n\n// Prendre les 3 premiers résultats avec des propriétés nommées\nconst top3Results = sortedResults.slice(0, 3);\n\n// Créer un objet avec des propriétés distinctes pour chaque article\nconst result = {\n article1: {\n link: top3Results[0]?.link || null,\n title: top3Results[0]?.title || null,\n snippet: top3Results[0]?.snippet || null,\n source: top3Results[0]?.source || null,\n date: top3Results[0]?.date || null\n },\n article2: {\n link: top3Results[1]?.link || null,\n title: top3Results[1]?.title || null,\n snippet: top3Results[1]?.snippet || null,\n source: top3Results[1]?.source || null,\n date: top3Results[1]?.date || null\n },\n article3: {\n link: top3Results[2]?.link || null,\n title: top3Results[2]?.title || null,\n snippet: top3Results[2]?.snippet || null,\n source: top3Results[2]?.source || null,\n date: top3Results[2]?.date || null\n },\n // Pour compatibilité avec votre workflow existant\n all_links: top3Results.map(result => result.link).filter(link => link !== null),\n count: top3Results.length\n};\n\n// CORRECTION : Retourner un tableau avec un objet (format requis par n8n)\nreturn [{ json: result }];"
},
"typeVersion": 2
},
{
"id": "a7a1521e-1183-4518-9320-3ebc88192b1d",
"name": "抓取文章1",
"type": "@mendable/n8n-nodes-firecrawl.firecrawl",
"onError": "continueRegularOutput",
"maxTries": 5,
"position": [
1360,
1568
],
"parameters": {
"url": "={{ $('Return URL only').item.json.article1.link }}",
"operation": "scrape",
"requestOptions": {}
},
"credentials": {
"firecrawlApi": {
"id": "E34WDB80ik5VHjiI",
"name": "Firecrawl account"
}
},
"retryOnFail": true,
"typeVersion": 1,
"alwaysOutputData": false
},
{
"id": "42018b6f-ca36-42bc-aa9b-7880592d6f17",
"name": "抓取文章2",
"type": "@mendable/n8n-nodes-firecrawl.firecrawl",
"onError": "continueRegularOutput",
"maxTries": 5,
"position": [
1600,
1568
],
"parameters": {
"url": "={{ $('Return URL only').item.json.article2.link }}",
"operation": "scrape",
"requestOptions": {}
},
"credentials": {
"firecrawlApi": {
"id": "E34WDB80ik5VHjiI",
"name": "Firecrawl account"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "9f8552d4-131d-40e2-a1a7-6165310e5645",
"name": "抓取文章3",
"type": "@mendable/n8n-nodes-firecrawl.firecrawl",
"onError": "continueRegularOutput",
"maxTries": 5,
"position": [
1872,
1568
],
"parameters": {
"url": "={{ $('Return URL only').item.json.article3.link }}",
"operation": "scrape",
"requestOptions": {}
},
"credentials": {
"firecrawlApi": {
"id": "E34WDB80ik5VHjiI",
"name": "Firecrawl account"
}
},
"retryOnFail": true,
"typeVersion": 1
},
{
"id": "706d3a3b-057c-4def-8330-7c989968aa87",
"name": "监控报告撰写",
"type": "@n8n/n8n-nodes-langchain.chainLlm",
"maxTries": 5,
"position": [
2416,
1488
],
"parameters": {
"text": "=Source 1\n\nURL : {{ $('Return URL only').item.json.article1.link }}\nDate : {{ $('Return URL only').item.json.article1.date }}\nContenu de l'article : {{ $('Scrape article 1').item.json.data.markdown }}\n\n\nSource 2 \n\nURL : {{ $('Return URL only').item.json.article2.link }}\nDate : {{ $('Return URL only').item.json.article2.date }}\nContenu de l'article : {{ $('Scrape article 2').item.json.data.markdown }}\n\nSource 3\n\nURL : {{ $('Return URL only').item.json.article3.link }}\nDate : {{ $('Return URL only').item.json.article3.date }}\nContenu de l'article : {{ $('Scrape article 3').item.json.data.markdown }}\n",
"batching": {},
"messages": {
"messageValues": [
{
"message": "=Voilà le contenu de 3 article sur le thème \"{{ $('Loop Over Items').item.json.Query }}\".\n\n\n# Mission\nAnalysez les articles fournis et produisez une synthèse structurée.\n\n# Format de sortie requis\n\nUne fois au début : Veille **{{ $('Loop Over Items').item.json.Query }}**\n\nPuis pour chaque article, suivez exactement cette structure :\n\n```\n# Article [Titre]\n\n**Média :** [Nom du média]\n**Date :** [Date de publication] \n**Lien :** [URL]\n**Résumé :** [2-3 phrases sur le contenu principal]\n\n---\n```\n\n## Consignes\n- Respecter l'ordre : Média → Date → Lien → Résumé\n- Numéroter les articles dans l'ordre d'apparition\n- Résumé maximum 3 phrases\n- Si une info manque, indiquer \"Non disponible\"\n\nSi il manque les informations d'un article ignore le et fait un rendu conséquent au nombre d'article que tu a pu traiter).\n\nTraitez maintenant le document fourni et donnez un rendu en français."
}
]
},
"promptType": "define"
},
"retryOnFail": true,
"typeVersion": 1.7
},
{
"id": "bd674533-295d-4223-93ac-971b5a1157d2",
"name": "监控数据编译",
"type": "n8n-nodes-base.aggregate",
"position": [
3056,
1552
],
"parameters": {
"include": "specifiedFields",
"options": {},
"aggregate": "aggregateAllItemData",
"fieldsToInclude": "text"
},
"typeVersion": 1
},
{
"id": "073edc5a-f56b-4b48-b7c1-3397c57eda5d",
"name": "Discord消息分割",
"type": "n8n-nodes-base.code",
"position": [
3392,
1536
],
"parameters": {
"jsCode": "// Code pour node n8n - Division de texte pour Discord\n// Limite Discord : 2000 caractères par message\n\nconst DISCORD_CHAR_LIMIT = 2000;\nconst SAFETY_MARGIN = 50; // Marge de sécurité pour éviter les dépassements\nconst EFFECTIVE_LIMIT = DISCORD_CHAR_LIMIT - SAFETY_MARGIN;\n\nfunction splitTextForDiscord(text) {\n // Si le texte est plus court que la limite, on le retourne tel quel\n if (text.length <= EFFECTIVE_LIMIT) {\n return [text];\n }\n\n const messages = [];\n let currentMessage = '';\n \n // Diviser le texte en paragraphes d'abord (séparés par \\n\\n ou ----)\n const sections = text.split(/(?:\\n\\n|----)/);\n \n for (let i = 0; i < sections.length; i++) {\n let section = sections[i].trim();\n \n // Si une section complète dépasse la limite, la diviser par phrases\n if (section.length > EFFECTIVE_LIMIT) {\n const sentences = section.split(/(?<=[.!?:])\\s+/);\n \n for (const sentence of sentences) {\n // Si une phrase seule dépasse la limite, la couper brutalement\n if (sentence.length > EFFECTIVE_LIMIT) {\n const chunks = splitByLength(sentence, EFFECTIVE_LIMIT);\n for (const chunk of chunks) {\n if (currentMessage.length + chunk.length + 1 > EFFECTIVE_LIMIT) {\n if (currentMessage.trim()) {\n messages.push(currentMessage.trim());\n }\n currentMessage = chunk;\n } else {\n currentMessage += (currentMessage ? ' ' : '') + chunk;\n }\n }\n } else {\n // Ajouter la phrase si elle rentre dans le message actuel\n if (currentMessage.length + sentence.length + 1 <= EFFECTIVE_LIMIT) {\n currentMessage += (currentMessage ? ' ' : '') + sentence;\n } else {\n // Sauvegarder le message actuel et commencer un nouveau\n if (currentMessage.trim()) {\n messages.push(currentMessage.trim());\n }\n currentMessage = sentence;\n }\n }\n }\n } else {\n // La section rentre dans la limite, vérifier si elle rentre dans le message actuel\n if (currentMessage.length + section.length + 2 <= EFFECTIVE_LIMIT) {\n currentMessage += (currentMessage ? '\\n\\n' : '') + section;\n } else {\n // Sauvegarder le message actuel et commencer un nouveau\n if (currentMessage.trim()) {\n messages.push(currentMessage.trim());\n }\n currentMessage = section;\n }\n }\n }\n \n // Ajouter le dernier message s'il existe\n if (currentMessage.trim()) {\n messages.push(currentMessage.trim());\n }\n \n return messages.length > 0 ? messages : [text];\n}\n\nfunction splitByLength(text, maxLength) {\n const chunks = [];\n for (let i = 0; i < text.length; i += maxLength) {\n chunks.push(text.slice(i, i + maxLength));\n }\n return chunks;\n}\n\n// Code principal pour n8n\nconst inputData = $input.all();\nconst outputItems = [];\n\nfor (let i = 0; i < inputData.length; i++) {\n const item = inputData[i];\n \n // Extraire le texte à diviser (adaptez selon votre structure de données)\n // Exemple : si votre texte est dans item.json.content\n let textToSplit = '';\n \n // Si c'est un tableau comme dans votre exemple\n if (item.json.data && Array.isArray(item.json.data)) {\n textToSplit = item.json.data.map(dataItem => dataItem.text || '').join('\\n\\n---\\n\\n');\n } \n // Si c'est directement du texte\n else if (item.json.text) {\n textToSplit = item.json.text;\n }\n // Si c'est dans un autre champ\n else if (item.json.content) {\n textToSplit = item.json.content;\n }\n // Fallback : convertir tout l'objet en texte\n else {\n textToSplit = JSON.stringify(item.json, null, 2);\n }\n \n // Diviser le texte\n const messages = splitTextForDiscord(textToSplit);\n \n // Créer un item de sortie pour chaque message\n messages.forEach((message, index) => {\n outputItems.push({\n json: {\n message: message,\n messageIndex: index + 1,\n totalMessages: messages.length,\n characterCount: message.length,\n originalItemIndex: i\n }\n });\n });\n}\n\nreturn outputItems;"
},
"typeVersion": 2
},
{
"id": "3be2a835-9ef2-47d3-a70b-5e8093178519",
"name": "介绍",
"type": "n8n-nodes-base.discord",
"position": [
3760,
1472
],
"webhookId": "47593169-e23c-4303-b8e2-7e93386c4c7a",
"parameters": {
"content": "SALUTATIONS MAGNIFIQUES RÉFÉRENCEURS ! Claptrap ici avec votre veille hebdomadaire ultra-FANTASTIQUE qui va faire exploser vos circuits organiques ! 🤖⚡",
"guildId": {
"__rl": true,
"mode": "list",
"value": "919951151888236595",
"cachedResultUrl": "https://discord.com/channels/919951151888236595",
"cachedResultName": "Institut du référencement"
},
"options": {},
"resource": "message",
"channelId": {
"__rl": true,
"mode": "list",
"value": "1334455789284364309",
"cachedResultUrl": "https://discord.com/channels/919951151888236595/1334455789284364309",
"cachedResultName": "📝-veille-📝"
}
},
"credentials": {
"discordBotApi": {
"id": "wEzWTKJiOc3ZcZew",
"name": "ClapTrap IDR"
}
},
"typeVersion": 2
},
{
"id": "f987c547-d915-420f-a03b-91d4b9bf7892",
"name": "监控",
"type": "n8n-nodes-base.discord",
"position": [
4176,
1648
],
"webhookId": "f3ee61cf-fbfa-447c-9fa8-78b7e5e1c4f7",
"parameters": {
"content": "={{ $json.message }}",
"guildId": {
"__rl": true,
"mode": "list",
"value": "919951151888236595",
"cachedResultUrl": "https://discord.com/channels/919951151888236595",
"cachedResultName": "Institut du référencement"
},
"options": {
"flags": [
"SUPPRESS_EMBEDS"
]
},
"resource": "message",
"channelId": {
"__rl": true,
"mode": "list",
"value": "1334455789284364309",
"cachedResultUrl": "https://discord.com/channels/919951151888236595/1334455789284364309",
"cachedResultName": "📝-veille-📝"
}
},
"credentials": {
"discordBotApi": {
"id": "wEzWTKJiOc3ZcZew",
"name": "ClapTrap IDR"
}
},
"typeVersion": 2
},
{
"id": "8b09ed9a-d5c1-4a7c-97a2-39219e888576",
"name": "结论",
"type": "n8n-nodes-base.discord",
"position": [
4384,
1504
],
"webhookId": "47593169-e23c-4303-b8e2-7e93386c4c7a",
"parameters": {
"content": "ET VOILÀ MINIONS ORGANIQUES ! Claptrap a terminé sa mission ÉPIQUE - à la semaine prochaine pour encore plus d'excellence robotique ! Bip boop 🤖✨",
"guildId": {
"__rl": true,
"mode": "list",
"value": "919951151888236595",
"cachedResultUrl": "https://discord.com/channels/919951151888236595",
"cachedResultName": "Institut du référencement"
},
"options": {},
"resource": "message",
"channelId": {
"__rl": true,
"mode": "list",
"value": "1334455789284364309",
"cachedResultUrl": "https://discord.com/channels/919951151888236595/1334455789284364309",
"cachedResultName": "📝-veille-📝"
}
},
"credentials": {
"discordBotApi": {
"id": "wEzWTKJiOc3ZcZew",
"name": "ClapTrap IDR"
}
},
"executeOnce": true,
"typeVersion": 2
},
{
"id": "2396728d-d58e-459b-b657-f2a11192a837",
"name": "遍历项目2",
"type": "n8n-nodes-base.splitInBatches",
"position": [
3952,
1584
],
"parameters": {
"options": {}
},
"typeVersion": 3
}
],
"pinData": {},
"connections": {
"Veille": {
"main": [
[
{
"node": "Loop Over Items 2",
"type": "main",
"index": 0
}
]
]
},
"Get query": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Search GNews": {
"main": [
[
{
"node": "Return URL only",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items": {
"main": [
[
{
"node": "Compilation données veilles",
"type": "main",
"index": 0
}
],
[
{
"node": "Search GNews",
"type": "main",
"index": 0
}
]
]
},
"Return URL only": {
"main": [
[
{
"node": "Scrape article 1",
"type": "main",
"index": 0
}
]
]
},
"Schedule Trigger": {
"main": [
[
{
"node": "Get query",
"type": "main",
"index": 0
}
]
]
},
"Scrape article 1": {
"main": [
[
{
"node": "Scrape article 2",
"type": "main",
"index": 0
}
]
]
},
"Scrape article 2": {
"main": [
[
{
"node": "Scrape article 3",
"type": "main",
"index": 0
}
]
]
},
"Scrape article 3": {
"main": [
[
{
"node": "Rédaction veille",
"type": "main",
"index": 0
}
]
]
},
"Loop Over Items 2": {
"main": [
[
{
"node": "Conclusion",
"type": "main",
"index": 0
}
],
[
{
"node": "Veille",
"type": "main",
"index": 0
}
]
]
},
"Rédaction veille": {
"main": [
[
{
"node": "Loop Over Items",
"type": "main",
"index": 0
}
]
]
},
"Anthropic Chat Model6": {
"ai_languageModel": [
[
{
"node": "Rédaction veille",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"Découpage message discord": {
"main": [
[
{
"node": "Loop Over Items 2",
"type": "main",
"index": 0
}
]
]
},
"Compilation données veilles": {
"main": [
[
{
"node": "Découpage message discord",
"type": "main",
"index": 0
},
{
"node": "Intro ",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
高级 - 杂项, AI 摘要总结, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用Google趋势、新闻、Firecrawl和Claude AI的自动化内容策略
使用Google趋势、新闻、Firecrawl和Claude AI的自动化内容策略
Set
Code
Aggregate
+9
22 节点Growth AI
市场调研
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
每日 WhatsApp 群组智能分析:GPT-4.1 分析与语音消息转录
If
Set
Code
+20
52 节点Daniel Lianes
杂项
使用Claude AI和竞品分析的SEO内容生成器
使用Claude AI和Apify竞品分析生成SEO内容
If
Code
Filter
+9
36 节点Growth AI
内容创作
使用Claude AI、竞品分析和Supabase RAG的SEO内容生成器
使用Claude AI、竞品分析和Supabase RAG生成SEO内容
If
Code
Filter
+11
40 节点Growth AI
内容创作
Google广告活动报告自动生成到Google表格(含Airtable客户管理)
Google广告活动报告自动生成到Google表格(含Airtable客户管理)
If
Code
Wait
+6
31 节点Growth AI
杂项
每日Gmail收件箱摘要转Discord(GPT-4.1-mini + PDF转换)
使用GPT-4.1-mini和PDF转换的每日Gmail收件箱摘要发送到Discord
Code
Gmail
Discord
+8
18 节点moosa
杂项