8
n8n 中文网amn8n.com

AI内容侦察 - 每周竞品博客和新闻摘要

高级

这是一个Market Research, AI Summarization领域的自动化工作流,包含 22 个节点。主要使用 Code, Gmail, SplitOut, HttpRequest, GoogleSheets 等节点。 每周竞品内容摘要(Gemini和OpenAI、Google Sheets和Firecrawl)

前置要求
  • Google 账号和 Gmail API 凭证
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • OpenAI API Key
  • Google Gemini API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "Ipiegq0ZW8v3UJGF",
  "meta": {
    "instanceId": "497c86cf8b1e22e099226929ebf2f7764b90825a0533645df21d2a374a4f5ad7",
    "templateCredsSetupCompleted": true
  },
  "name": "AI 内容侦察 - 每周竞品博客和新闻摘要",
  "tags": [],
  "nodes": [
    {
      "id": "3e82b98b-de16-43f1-80e2-e3fefd6c9b03",
      "name": "Firecrawl_链接",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1620,
        -600
      ],
      "parameters": {
        "url": "https://api.firecrawl.dev/v1/scrape",
        "method": "POST",
        "options": {
          "batching": {
            "batch": {
              "batchSize": 1,
              "batchInterval": 7000
            }
          }
        },
        "jsonBody": "={\n  \"url\": \"{{$json.Link}}\",\n  \"formats\": [\n    \"links\"\n  ],\n  \"onlyMainContent\": true,\n  \"timeout\": 90000  \n} ",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "6lhE9eMSFXOREqKp",
          "name": "Firecrawl"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "waitBetweenTries": 5000
    },
    {
      "id": "b4d59e54-fe55-463f-982b-94e86a0afaf0",
      "name": "拆分输出",
      "type": "n8n-nodes-base.splitOut",
      "position": [
        -1100,
        -600
      ],
      "parameters": {
        "options": {},
        "fieldToSplitOut": "output"
      },
      "typeVersion": 1
    },
    {
      "id": "d3a3fb55-ee13-45e8-8dfc-51628b11a272",
      "name": "结构化输出解析器",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -1080,
        -400
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  { \"url\": \"https://example.com/topic-1\" }\n]"
      },
      "typeVersion": 1.2
    },
    {
      "id": "13f19f4f-3e34-472e-b9e3-f224bff49c76",
      "name": "结构化输出解析器2",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        -440,
        -400
      ],
      "parameters": {
        "jsonSchemaExample": "[\n  {\n    \"title\": \"The Main Article Title\",\n    \"author\": \"Jane Doe\",\n    \"url\": \"https://example.com/article-url\",\n    \"summary\": \"This is a concise summary of the article. It captures the key points effectively. The length is about three to four sentences.\",\n    \"published_date\": \"2025-06-22\"\n  }\n]"
      },
      "typeVersion": 1.2
    },
    {
      "id": "1a600915-9f55-45e6-a7bc-0e9689c16609",
      "name": "智能体:总结每个 URL",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -680,
        -600
      ],
      "parameters": {
        "text": "=Extract the required information from the following content and its associated URL.\n\nURL:\n{{ $json.data.metadata['og:url'] }}\n\nMarkdown Content:\n{{ $json.data.markdown }}\n\n",
        "options": {
          "systemMessage": "=You are a specialized content analysis assistant. Your sole function is to process a markdown document and its associated URL, extract specific fields of information, and return the data in a strictly defined JSON format.\n\n**Extraction Rules:**\nFrom the provided markdown text, you will extract the following fields to populate a single JSON object:\n\n1.  **`title`**: Extract the primary, most prominent title of the article.\n2.  **`author`**: Extract the name or names of the authors. If no author can be clearly identified, this field should be populated as `NA`.\n3.  **`url`**: Use the exact URL provided in the user's prompt. Do not attempt to find a URL in the markdown content itself.\n4.  **`summary`**: Generate a concise and neutral summary of the article's main points. The summary should be 3 to 4 sentences long.\n5.  **`published_date`**: Find the article's publication date and reformat it to the strict ISO `YYYY-MM-DD` format. If no date is found, this field should be populated as `NA`.\n\n**Output Format (Strict):**\n- The response MUST contain ONLY the raw JSON array.\n- You MUST return a top-level JSON array that contains the single JSON object you created.\n- DO NOT wrap the JSON in markdown code blocks (e.g., ```json), add comments, or include any introductory text like \"Here is the JSON:\". The output must be immediately parsable by a machine."
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "29993d3d-0c0d-4569-9cb7-90d4701111a1",
      "name": "便签1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        -720
      ],
      "parameters": {
        "width": 220,
        "height": 100,
        "content": "从提供的链接中提取以下信息:标题、作者、URL、摘要:3-4句话、发布日期"
      },
      "typeVersion": 1
    },
    {
      "id": "c6193854-c62d-4185-b155-caa444b7d13e",
      "name": "便签2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -920,
        -720
      ],
      "parameters": {
        "width": 150,
        "height": 100,
        "content": "Firecrawl 免费版每分钟仅允许 10 个请求(每 6 秒 1 个请求)"
      },
      "typeVersion": 1
    },
    {
      "id": "8b2c1996-511b-4870-8ce5-81808474a732",
      "name": "Gemini 2.5 Flash:温度 0",
      "type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
      "position": [
        -760,
        -400
      ],
      "parameters": {
        "options": {
          "temperature": 0
        },
        "modelName": "models/gemini-2.5-flash"
      },
      "credentials": {
        "googlePalmApi": {
          "id": "oo6cSnBn60EmUD7Q",
          "name": "Google Gemini(PaLM) Api account"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "8bd2c322-ce8d-4c6f-9f20-49e3ffcfdcba",
      "name": "Firecrawl_Markdown",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -900,
        -600
      ],
      "parameters": {
        "url": "https://api.firecrawl.dev/v1/scrape",
        "method": "POST",
        "options": {
          "batching": {
            "batch": {
              "batchSize": 1,
              "batchInterval": 7000
            }
          }
        },
        "jsonBody": "={\n  \"url\": \"{{ $json.url }}\",\n  \"formats\": [\n    \"markdown\"\n  ],\n  \"onlyMainContent\": true,\n  \"timeout\": 90000\n} ",
        "sendBody": true,
        "specifyBody": "json",
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "6lhE9eMSFXOREqKp",
          "name": "Firecrawl"
        }
      },
      "retryOnFail": true,
      "typeVersion": 4.2,
      "waitBetweenTries": 5000
    },
    {
      "id": "8cf17425-1ab7-4126-a0ac-e526a8854c78",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1460,
        -780
      ],
      "parameters": {
        "width": 280,
        "content": "每个链接包含候选 URL:"
      },
      "typeVersion": 1
    },
    {
      "id": "8bfc0649-5bf9-4bd0-b127-8ce288382a2d",
      "name": "便签3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1660,
        -720
      ],
      "parameters": {
        "width": 150,
        "height": 100,
        "content": "Firecrawl 免费版每分钟仅允许 10 个请求(每 6 秒 1 个请求)"
      },
      "typeVersion": 1
    },
    {
      "id": "6671d901-2171-448d-a6dd-e6b5ff86df6e",
      "name": "智能体:识别要爬取的 URL",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -1440,
        -600
      ],
      "parameters": {
        "text": "=Please process and filter the following list of URLs:\n\nCANDIDATE_URLS: {{ $json.data.links }}\n",
        "options": {
          "systemMessage": "=### Role & Goal:\nYou are an expert content-analysis assistant specializing in URL filtering. Your mission: receive a list of CANDIDATE_URLS and emit only those that (a) fit the topical rules and (b) are not already present in a Google Sheet.\n\n\n### Tools Available:\nRead_Url_Summary_Tool – returns a JSON array of {\"url\":\"<https://...>\"} objects from the Google Sheet. Call exactly once per run.\n\n\n### Workflow (follow in order)\n1. Invoke Read_Url_Summary_Tool; store as EXISTING_URLS.\n2. Normalise every URL in both arrays (lower-case host, trim trailing /, strip utm_* params).\n3. Drop any candidate that appears in EXISTING_URLS or is duplicated within CANDIDATE_URLS.\n3. Apply Topical Inclusion + Exclusion Rules.\n4. If no URLs survive, return [].\n\n\n### Topical Inclusion\nIdentify and extract URLs for blog posts, technical articles, tutorials, product updates, thought-leadership pieces, news, or press releases.\n\n\n### Exclusion Rules (Discard if any of these apply):\n1.  Invalid Format: Not a valid `http` or `https` URL.\n\n2.  Fragments: Contains a URL fragment (`#`).\n\n3.  Utility/Boilerplate Pages: Appears to be a login portal, dashboard, contact page, privacy policy, terms of service, or other non-content utility link.\n\n4.  Generic Navigation:\n    - Homepage: The path is empty, `/`, or a common index file (e.g., `index.html`).\n    - Index/Listing Pages: The URL is for a tag, category, search result, or author listing page.\n\n5.  Section Landing Pages:\n    - Generic Rule: The URL path consists of exactly one segment (e.g., `https://site.com/blog/`, `https://site.com/news`).\n    - Specific Rule: The final segment of the URL path is one of the following: `blog`, `products`, `solutions`, `press`, or `press-releases` (e.g., `https://site.com/company/blog`).\n\n\n### Default Behavior:\nIf you are uncertain whether a URL should be excluded, **include it**.\n\n### Output Format (Strict):\n- You MUST return ONLY a raw JSON array of objects.\n- Each object in the array MUST contain a single key-value pair: `{ \"url\": \"https://...\" }`.\n- Do NOT wrap the JSON array in markdown code blocks (e.g., \\`\\`\\`json), do not add comments, and do not include any introductory text or explanations in your response. The output must be immediately parsable.\n"
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 2
    },
    {
      "id": "d6fb940c-ac63-4b0f-afcd-a5395c8b821b",
      "name": "代码",
      "type": "n8n-nodes-base.code",
      "position": [
        80,
        -600
      ],
      "parameters": {
        "jsCode": "const items = $input.all().map((item) => item.json);\nconst today = new Date().toISOString().slice(0, 10);\nconst filteredItems = items.filter((item) => item[\"Crawled Date\"] === today);\n\nconst groupedItems = filteredItems.reduce((acc, item) => {\n  acc[item.Company] = acc[item.Company] || [];\n  acc[item.Company].push(item);\n  return acc;\n}, {});\n\nlet html = \"\";\n\nfor (const company in groupedItems) {\n  html += `<h2>${company}</h2>`;\n  html += `<table style=\"border-collapse: collapse;\">`;\n  html += `<tr>\n    <th style=\"border: 1px solid #000;\">Crawled Date</th>\n    <th style=\"border: 1px solid #000;\">Page Type</th>\n    <th style=\"border: 1px solid #000;\">Title</th>\n    <th style=\"border: 1px solid #000;\">Author</th>\n    <th style=\"border: 1px solid #000;\">Published Date</th>\n    <th style=\"border: 1px solid #000;\">URL</th>\n    <th style=\"border: 1px solid #000;\">Summary</th>\n  </tr>`;\n  for (const row of groupedItems[company]) {\n    html += `<tr>\n      <td style=\"border: 1px solid #000;\">${row[\"Crawled Date\"]}</td>\n      <td style=\"border: 1px solid #000;\">${row[\"Page Type\"]}</td>\n      <td style=\"border: 1px solid #000;\">${row.Title}</td>\n      <td style=\"border: 1px solid #000;\">${row.Author}</td>\n      <td style=\"border: 1px solid #000;\">${row[\"Published Date\"]}</td>\n      <td style=\"border: 1px solid #000;\">${row.URL}</td>\n      <td style=\"border: 1px solid #000;\">${row.Summary}</td>\n    </tr>`;\n  }\n  html += `</table>`;\n}\n\nreturn { html };\n"
      },
      "typeVersion": 2
    },
    {
      "id": "b0ccd551-267d-4e94-87bb-678e05b048ed",
      "name": "便签4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        20,
        -720
      ],
      "parameters": {
        "width": 210,
        "height": 100,
        "content": "创建 HTML 电子邮件,需满足以下条件:"
      },
      "typeVersion": 1
    },
    {
      "id": "b5cee799-67a5-42fa-873c-dbb9a4dfeb7e",
      "name": "计划触发器:每周日早上 5 点",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1980,
        -600
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 0 5 * * SUN"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "aa902638-34e1-484f-a3e2-fe38d1aecec7",
      "name": "输入链接",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -1800,
        -600
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 288631821,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I/edit#gid=288631821",
          "cachedResultName": "Input Links"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I/edit?usp=drivesdk",
          "cachedResultName": "URL Summary"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "RV1hjocy6G79JI46",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "8668df12-fae8-4e46-a38b-f725e0322e1b",
      "name": "Read_Url_Summary_Tool",
      "type": "n8n-nodes-base.googleSheetsTool",
      "position": [
        -1260,
        -400
      ],
      "parameters": {
        "options": {
          "dataLocationOnSheet": {
            "values": {
              "range": "G:G",
              "rangeDefinition": "specifyRangeA1"
            }
          }
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 751716000,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I/edit#gid=751716000",
          "cachedResultName": "Summary"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I/edit?usp=drivesdk",
          "cachedResultName": "URL Summary"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "RV1hjocy6G79JI46",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "02ccaaa4-8bf0-4838-8735-5f9f66013bcd",
      "name": "便签5",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1300,
        -240
      ],
      "parameters": {
        "width": 150,
        "height": 80,
        "content": "过滤除 URL 外的所有列"
      },
      "typeVersion": 1
    },
    {
      "id": "c331f161-9987-4b83-9c8e-489d2eaa9b8f",
      "name": "在表格中追加行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -340,
        -600
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $json.output[0].url }}",
            "Title": "={{ $json.output[0].title }}",
            "Author": "={{ $json.output[0].author }}",
            "Company": "={{ $('Input Links').item.json.Company }}",
            "Summary": "={{ $json.output[0].summary }}",
            "Page Type": "={{ $('Input Links').item.json['Page Type'] }}",
            "Crawled Date": "={{ $today.toISODate()}} ",
            "Published Date": "={{ $json.output[0].published_date }}"
          },
          "schema": [
            {
              "id": "Crawled Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Crawled Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Company",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Company",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Page Type",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Page Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Author",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Author",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Published Date",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Published Date",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Summary",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Summary",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "append",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 751716000,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I/edit#gid=751716000",
          "cachedResultName": "Summary"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I/edit?usp=drivesdk",
          "cachedResultName": "URL Summary"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "RV1hjocy6G79JI46",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.6
    },
    {
      "id": "deb80efb-a7e9-420c-a32e-69d330240d8f",
      "name": "OpenAI o4-mini",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -1500,
        -400
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "o4-mini",
          "cachedResultName": "o4-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "7csXhwF4rXWALbLo",
          "name": "OpenAi account"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9d8c297a-3227-4740-8518-65e76aeb6795",
      "name": "获取工作表中的行",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        -120,
        -600
      ],
      "parameters": {
        "options": {},
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": 751716000,
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I/edit#gid=751716000",
          "cachedResultName": "Summary"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1R01ELC8ZTWvyw2ULRPnMogrtqkoVV40ANa4qqVi3F-I/edit?usp=drivesdk",
          "cachedResultName": "URL Summary"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "RV1hjocy6G79JI46",
          "name": "Google Sheets account"
        }
      },
      "executeOnce": true,
      "typeVersion": 4.6
    },
    {
      "id": "4e92d820-b67e-4f19-ad88-aef6ac3b3eb7",
      "name": "发送消息",
      "type": "n8n-nodes-base.gmail",
      "position": [
        280,
        -600
      ],
      "webhookId": "e7340b57-2333-4eb2-8ed6-9411d21f91f2",
      "parameters": {
        "sendTo": "mwtyang@gmail.com, michael.w.yang@elastic.co",
        "message": "={{ $json.html }}",
        "options": {
          "appendAttribution": false
        },
        "subject": "URL Summary"
      },
      "credentials": {
        "gmailOAuth2": {
          "id": "SLOvrD7tn9TEtoeo",
          "name": "Gmail account"
        }
      },
      "notesInFlow": false,
      "typeVersion": 2.1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "dc752747-ec83-4432-a5b1-56911fcc3005",
  "connections": {
    "Code": {
      "main": [
        [
          {
            "node": "Send a message",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Split Out": {
      "main": [
        [
          {
            "node": "Firecrawl_Markdown",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Input Links": {
      "main": [
        [
          {
            "node": "Firecrawl_Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "OpenAI o4-mini": {
      "ai_languageModel": [
        [
          {
            "node": "Agent: Identify URLs to Crawl",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Send a message": {
      "main": [
        []
      ]
    },
    "Firecrawl_Links": {
      "main": [
        [
          {
            "node": "Agent: Identify URLs to Crawl",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Firecrawl_Markdown": {
      "main": [
        [
          {
            "node": "Agent: Summarize Each URL",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Append row in sheet": {
      "main": [
        [
          {
            "node": "Get row(s) in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get row(s) in sheet": {
      "main": [
        [
          {
            "node": "Code",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Read_Url_Summary_Tool": {
      "ai_tool": [
        [
          {
            "node": "Agent: Identify URLs to Crawl",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Gemini 2.5 Flash: Temp 0": {
      "ai_languageModel": [
        [
          {
            "node": "Agent: Summarize Each URL",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Agent: Identify URLs to Crawl",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Agent: Summarize Each URL": {
      "main": [
        [
          {
            "node": "Append row in sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser2": {
      "ai_outputParser": [
        [
          {
            "node": "Agent: Summarize Each URL",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "Agent: Identify URLs to Crawl": {
      "main": [
        [
          {
            "node": "Split Out",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Schedule Trigger: Every Sun 5AM": {
      "main": [
        [
          {
            "node": "Input Links",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。

这个工作流适合什么场景?

高级 - 市场调研, AI 摘要总结

需要付费吗?

本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。

工作流信息
难度等级
高级
节点数量22
分类2
节点类型12
难度说明

适合高级用户,包含 16+ 个节点的复杂工作流

外部链接
在 n8n.io 查看

分享此工作流