8
n8n 中文网amn8n.com

使用Dumpling AI和GPT-4从TikTok视频提取营销洞察

中级

这是一个Market Research, Multimodal AI领域的自动化工作流,包含 12 个节点。主要使用 Code, AiTransform, FormTrigger, HttpRequest, GoogleSheets 等节点。 使用Dumpling AI和GPT-4从TikTok视频提取营销洞察并生成内容

前置要求
  • 可能需要目标 API 的认证凭证
  • Google Sheets API 凭证
  • OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
  "id": "vKjQAPaaL1cUVXtj",
  "meta": {
    "instanceId": "a1ae5c8dc6c65e674f9c3947d083abcc749ef2546dff9f4ff01de4d6a36ebfe6",
    "templateCredsSetupCompleted": true
  },
  "name": "使用 Dumpling AI 和 GPT-4 从 TikTok 视频提取营销洞察",
  "tags": [],
  "nodes": [
    {
      "id": "2f93eea5-5e9b-4f5e-88db-bbfc689fad92",
      "name": "表单:提交 TikTok URL + 产品信息",
      "type": "n8n-nodes-base.formTrigger",
      "position": [
        -760,
        150
      ],
      "webhookId": "8f2a292d-01ab-45ec-9197-9f053276c70c",
      "parameters": {
        "options": {},
        "formTitle": "TikTok Scraper ",
        "formFields": {
          "values": [
            {
              "fieldLabel": "Tiktok Video URL"
            },
            {
              "fieldLabel": "Keyword "
            },
            {
              "fieldLabel": "Product "
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "3fed2762-757b-4b3b-8fe1-19b04eb6d447",
      "name": "Dumpling AI:获取 TikTok 转录文本",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -540,
        150
      ],
      "parameters": {
        "url": "=https://app.dumplingai.com/api/v1/get-tiktok-transcript",
        "method": "POST",
        "options": {
          "response": {
            "response": {
              "responseFormat": "text",
              "outputPropertyName": "body"
            }
          }
        },
        "sendBody": true,
        "authentication": "genericCredentialType",
        "bodyParameters": {
          "parameters": [
            {
              "name": "videoUrl",
              "value": "={{ $json['Tiktok Video URL'] }}"
            }
          ]
        },
        "genericAuthType": "httpHeaderAuth"
      },
      "credentials": {
        "httpHeaderAuth": {
          "id": "RLFzAcGRepr5eXZB",
          "name": "Dumpling AI-n8n"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "c713b45f-f4af-40cd-a67d-640a96903a85",
      "name": "格式化:清理 VTT 字幕",
      "type": "n8n-nodes-base.code",
      "position": [
        -320,
        150
      ],
      "parameters": {
        "mode": "runOnceForEachItem",
        "jsCode": "const vtt = $json.body;                // text we just downloaded\n\nif (!vtt) {\n  return { transcript: null, note: \"no TikTok captions\" };\n}\n\nconst lines = vtt\n  .split(/\\r?\\n/)\n  .filter(l => l && !l.match(/^(\\d+|WEBVTT|X-TIMESTAMP|[:\\d+.\\-> ]+$)/));\n\nreturn { transcript: lines.join(\" \") };\n"
      },
      "typeVersion": 2
    },
    {
      "id": "5f405063-4e4c-42d3-9f0a-98c0fda55bb3",
      "name": "GPT-4:提取痛点与洞察",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        -20,
        -80
      ],
      "parameters": {
        "text": "=Here is a TikTok transcript. Analyze it for the following:\n\n1. Determine whether the speaker is describing a **problem**, a **solution**, or **both** regarding the keyword: \"{{ $('Form: Submit TikTok URL + Product Info').item.json['Keyword '] }}\".\n2. Extract:\n   - Pain points\n   - Desired outcomes\n   - Triggers or motivating events\n   - Interesting direct quotes or phrases\n\nTranscript: {{ $json.transcript }}\n",
        "options": {
          "systemMessage": "=You are a customer research analyst. Your job is to extract actionable marketing insights from user-generated content like TikTok transcripts.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "6d7d57a8-b44e-4b25-8af2-1b86b72c534b",
      "name": "解析:分离洞察(痛点、结果等)",
      "type": "n8n-nodes-base.aiTransform",
      "position": [
        400,
        -20
      ],
      "parameters": {
        "jsCode": "const items = $input.all();\nconst outputItems = items.map((item) => {\n  const output = item?.json?.output;\n\n  const painPointsIndex = output.indexOf(\"Pain Points\") + \"Pain Points\".length;\n  const desiredOutcomesIndex = output.indexOf(\"Desired Outcomes\");\n  const triggersIndex = output.indexOf(\"Triggers or Motivating Events\");\n  const quotesIndex = output.indexOf(\"Interesting Direct Quotes or Phrases\");\n\n  const painPoints = output.slice(painPointsIndex, desiredOutcomesIndex).trim();\n  const desiredOutcomes = output\n    .slice(desiredOutcomesIndex, triggersIndex)\n    .trim();\n  const triggers = output.slice(triggersIndex, quotesIndex).trim();\n  const quotes = output.slice(quotesIndex).trim();\n\n  return {\n    painPoints,\n    desiredOutcomes,\n    triggers,\n    quotes,\n  };\n});\n\nreturn outputItems;\n",
        "instructions": "I want to extract the output from the AI agent into own separate outputs. So extract the pain points, desired outcomes, triggers or motivating events, interesting direct quotes or phrases",
        "codeGeneratedForPrompt": "I want to extract the output from the AI agent into own separate outputs. So extract the pain points, desired outcomes, triggers or motivating events, interesting direct quotes or phrases"
      },
      "typeVersion": 1
    },
    {
      "id": "6baf0404-4ea2-42ce-927f-7a0207d04f41",
      "name": "Google Sheets:记录洞察 + 帖子文案",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        652,
        150
      ],
      "parameters": {
        "columns": {
          "value": {
            "Video URL": "={{ $('Form: Submit TikTok URL + Product Info').item.json['Tiktok Video URL'] }}",
            "New Script": "={{ $json.output }}",
            "Pain points": "={{ $('Parse: Separate Insights (pain points, outcomes, etc)').first().json.painPoints}}",
            "Desired outcomes": "={{ $('Parse: Separate Insights (pain points, outcomes, etc)').first().json.desiredOutcomes }}",
            "Original Transcription": "={{ $('Format: Clean VTT Captions').item.json.transcript }}",
            "Interesting direct quotes": "={{$('Parse: Separate Insights (pain points, outcomes, etc)').first().json.quotes}}",
            "Triggers or motivating events": "={{ $('Parse: Separate Insights (pain points, outcomes, etc)').first().json.triggers }}"
          },
          "schema": [
            {
              "id": "Video URL",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Video URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Original Transcription",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Original Transcription",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Pain points",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Pain points",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Desired outcomes",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Desired outcomes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Triggers or motivating events",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "Triggers or motivating events",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Interesting direct quotes",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "Interesting direct quotes",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "New Script",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "New Script",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [
            "Video URL"
          ],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        },
        "options": {},
        "operation": "appendOrUpdate",
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/1aXRi2vdugC2YJ4Up8vSkeDEpbTem9-t8x5m5H7Or9w8/edit#gid=0",
          "cachedResultName": "Sheet1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17HGdr1TvWdv6aLVlElGqqz8Q6aS90IXIlJBYsW5rPtk/edit?usp=drivesdk",
          "cachedResultName": "TikTok URL"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "GaJqJHuS5mQxap7q",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "37d135b2-9861-4829-906f-13a0d781012f",
      "name": "GPT-4:将转录文本重写为营销帖子",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        40,
        360
      ],
      "parameters": {
        "text": "=Analyze the following TikTok transcript and determine whether the speaker is primarily describing:\n\n- a **problem** related to the keyword \"{{ $('Form: Submit TikTok URL + Product Info').item.json['Keyword '] }}\".\n- a **solution** they've found, or\n- **both** a problem and a solution.\n\nThen, rewrite the transcript with the following goals:\n\n1. Frame our product or service \"{{ $('Form: Submit TikTok URL + Product Info').item.json['Product '] }}\" as the ideal solution to the problem, or a key part of the solution being described.\n2. Preserve the speaker’s tone, voice, and informal/social style.\n3. Make it sound like a natural social media post or spoken monologue.\n4. Ensure it's conversational and authentic.\n\n\nTranscript: {{ $json.transcript }}\n\n\n\n\n\n\n\n",
        "options": {
          "systemMessage": "=You are a persuasive copywriter skilled at rewriting user-generated content to position a product or service as the solution to customer problems or goals, while preserving the original voice and tone.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 1.7
    },
    {
      "id": "13fb5224-ab7e-4202-804d-0c5f186b742a",
      "name": "GPT-4:用于研究 Agent",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -72,
        220
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "dd8NvMC6rvx8RITo",
          "name": "OpenAi account 2"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "b6f39362-75bf-48c9-b4be-2f2250fd01b5",
      "name": "GPT-4:用于重写 Agent",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
      "position": [
        -140,
        560
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "gpt-4o-mini"
        },
        "options": {}
      },
      "credentials": {
        "openAiApi": {
          "id": "dd8NvMC6rvx8RITo",
          "name": "OpenAi account 2"
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "dba84dc4-769f-45a6-bff9-bd11f7fb0c1b",
      "name": "🧠 LangChain工具(用于代理)",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        48,
        220
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "39c7099f-c491-44d3-99bc-1fb716227b79",
      "name": "🧠 LangChain 工具(用于 Agent)1",
      "type": "@n8n/n8n-nodes-langchain.toolThink",
      "position": [
        280,
        600
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "b1505793-aefe-421d-bb59-7a5e579cfee6",
      "name": "便签",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -900,
        -220
      ],
      "parameters": {
        "width": 740,
        "height": 460,
        "content": "### 🎯 工作流摘要"
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {
    "Dumpling AI: Get TikTok Transcript": [
      {
        "json": {
          "body": "{\"transcript\":\"WEBVTT\\n\\n\\n00:00:04.720 --> 00:00:07.920\\nbookmark it later because you're gonna wanna check out each of these platforms\\n\\n00:00:07.921 --> 00:00:09.600\\nif you don't know what AI agents are\\n\\n00:00:09.601 --> 00:00:11.800\\nthey're probably the hottest thing in AI right now\\n\\n00:00:11.801 --> 00:00:13.680\\nfirst one is relevance AI\\n\\n00:00:13.681 --> 00:00:16.520\\nand I love this platform for use cases like sales\\n\\n00:00:16.521 --> 00:00:18.140\\nmarketing and research\\n\\n00:00:18.200 --> 00:00:21.480\\nmakes it super easy to build agents that have access to tools\\n\\n00:00:21.481 --> 00:00:22.880\\nnumber two is Stack AI\\n\\n00:00:22.881 --> 00:00:26.080\\nit's one of the best agent builder platforms for Enterprise\\n\\n00:00:26.081 --> 00:00:29.900\\nLock 2 certified easy to plug in to your internal data sources\\n\\n00:00:30.080 --> 00:00:32.000\\nNo.3 is n8n.io\\n\\n00:00:32.001 --> 00:00:35.160\\nwhich has been around for a long time as a workflow automation tool\\n\\n00:00:35.161 --> 00:00:36.640\\nbut they have some neat features\\n\\n00:00:36.641 --> 00:00:38.960\\nmakes it easy to build AI agents\\n\\n00:00:38.961 --> 00:00:43.440\\nNo.4 is taskade this is a very opinionated project management tool\\n\\n00:00:43.441 --> 00:00:46.960\\nwhere you can assign tasks to different agents on your team\\n\\n00:00:46.961 --> 00:00:48.640\\nlike before market research\\n\\n00:00:48.641 --> 00:00:51.440\\nfollow up on this lead write a report etcetera\\n\\n00:00:51.441 --> 00:00:53.320\\nNo. 5 is Flowise AI\\n\\n00:00:53.321 --> 00:00:58.100\\nI love it because it's open source and you can build chat bots and AI agents\\n\\n00:00:58.160 --> 00:01:00.160\\nNo.6 is mindStudio dot AI\\n\\n00:01:00.161 --> 00:01:04.280\\nit integrates with over 50 LLMs and you can plug in your data sources\\n\\n00:01:04.281 --> 00:01:06.160\\nNo. 7 is Vectorshift dot AI\\n\\n00:01:06.161 --> 00:01:07.840\\nI personally haven't tried this one yet\\n\\n00:01:07.841 --> 00:01:09.760\\nbut I like that they have a starter plan\\n\\n00:01:09.761 --> 00:01:11.080\\nand just like the other platforms\\n\\n00:01:11.081 --> 00:01:12.680\\nyou can build AI search engines\\n\\n00:01:12.681 --> 00:01:14.440\\nAI assistance chat bots\\n\\n00:01:14.441 --> 00:01:15.640\\nautomations etcetera\\n\\n00:01:15.641 --> 00:01:18.080\\nnow if you do have a little bit of Python coding experience\\n\\n00:01:18.081 --> 00:01:21.920\\nthen the two frameworks you're gonna Wanna check out are Microsoft's Autogen\\n\\n00:01:21.921 --> 00:01:25.920\\nand Crew AI which just announced a huge partnership with Nvidia\\n\\n00:01:25.921 --> 00:01:29.440\\nboth platforms make it super easy to create multi agent teams\\n\\n00:01:29.441 --> 00:01:31.518\\nwith complex hierarchy structures\\n\",\"language\":\"en\",\"id\":\"7457297253338828075\",\"originalUrl\":\"https://www.tiktok.com/@sabrina_ramonov/video/7457297253338828075?is_from_webapp=1&sender_device=pc&web_id=7436093910231483960\"}"
        }
      }
    ],
    "Form: Submit TikTok URL + Product Info": [
      {
        "json": {
          "Keyword ": "AI agent",
          "Product ": "Dumpling AI",
          "formMode": "test",
          "submittedAt": "2025-07-18T07:01:35.899+10:00",
          "Tiktok Video URL": "https://www.tiktok.com/@sabrina_ramonov/video/7457297253338828075?is_from_webapp=1&sender_device=pc&web_id=7436093910231483960"
        }
      }
    ]
  },
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "8b9e4413-072a-40a1-9ec3-f079f3a38b80",
  "connections": {
    "Format: Clean VTT Captions": {
      "main": [
        [
          {
            "node": "GPT-4: Extract Pain Points & Insights",
            "type": "main",
            "index": 0
          },
          {
            "node": "GPT-4: Rewrite Transcript as Marketing Post",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4: Used in Rewrite Agent": {
      "ai_languageModel": [
        [
          {
            "node": "GPT-4: Rewrite Transcript as Marketing Post",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4: Used in Research Agent": {
      "ai_languageModel": [
        [
          {
            "node": "GPT-4: Extract Pain Points & Insights",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "🧠 LangChain Tools (for Agents)": {
      "ai_tool": [
        [
          {
            "node": "GPT-4: Extract Pain Points & Insights",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Dumpling AI: Get TikTok Transcript": {
      "main": [
        [
          {
            "node": "Format: Clean VTT Captions",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "🧠 LangChain Tools (for Agents)1": {
      "ai_tool": [
        [
          {
            "node": "GPT-4: Rewrite Transcript as Marketing Post",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4: Extract Pain Points & Insights": {
      "main": [
        [
          {
            "node": "Parse: Separate Insights (pain points, outcomes, etc)",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Form: Submit TikTok URL + Product Info": {
      "main": [
        [
          {
            "node": "Dumpling AI: Get TikTok Transcript",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "GPT-4: Rewrite Transcript as Marketing Post": {
      "main": [
        [
          {
            "node": " Google Sheets: Log Insights + Post Copy",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Parse: Separate Insights (pain points, outcomes, etc)": {
      "main": [
        [
          {
            "node": " Google Sheets: Log Insights + Post Copy",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
常见问题

如何使用这个工作流?

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

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

中级 - 市场调研, 多模态 AI

需要付费吗?

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

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

适合有一定经验的用户,包含 6-15 个节点的中等复杂度工作流

外部链接
在 n8n.io 查看

分享此工作流