使用Apify、OpenAI和Google Sheets分析热门YouTube视频
中级
这是一个Market Research, Multimodal AI领域的自动化工作流,包含 12 个节点。主要使用 If, Merge, FormTrigger, HttpRequest, GoogleSheets 等节点。 使用Apify、OpenAI和Google Sheets分析热门YouTube视频
前置要求
- •可能需要目标 API 的认证凭证
- •Google Sheets API 凭证
- •OpenAI API Key
工作流预览
可视化展示节点连接关系,支持缩放和平移
导出工作流
复制以下 JSON 配置到 n8n 导入,即可使用此工作流
{
"meta": {
"instanceId": "9f2d25c77f55013c8efee3de456573aadd7369e6f0aaea70d0311a32c92bead1"
},
"nodes": [
{
"id": "d0605ee4-1304-4fe7-b0da-55d46bca2428",
"name": "如果",
"type": "n8n-nodes-base.if",
"position": [
-1040,
-112
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "a179d690-a6da-41ef-9ca4-7346864f7233",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.viewCount }}",
"rightValue": 1000
},
{
"id": "b66e2013-6fc7-414d-bf7b-5c6c7e23bcae",
"operator": {
"type": "number",
"operation": "gt"
},
"leftValue": "={{ $json.viewCount }}",
"rightValue": "={{ $json.numberOfSubscribers }}"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a8006ffd-f3cd-48e9-b62c-89ae9cd4b556",
"name": "合并",
"type": "n8n-nodes-base.merge",
"position": [
-720,
0
],
"parameters": {
"mode": "combine",
"options": {},
"joinMode": "keepNonMatches",
"outputDataFrom": "input2",
"fieldsToMatchString": "id"
},
"typeVersion": 3.1
},
{
"id": "3980893b-c2fb-45e4-911e-2e0a10f5aeb0",
"name": "步骤1结果",
"type": "n8n-nodes-base.googleSheets",
"position": [
-480,
64
],
"parameters": {
"columns": {
"value": {
"id": "={{ $json.id }}",
"url": "={{ $('If').item.json.url }}",
"input": "={{ $('If').item.json.input }}",
"likes": "={{ $('If').item.json.likes }}",
"title": "={{ $('If').item.json.title }}",
"duration": "={{ $('If').item.json.duration }}",
"fromYTUrl": "={{ $('If').item.json.fromYTUrl }}",
"viewCount": "={{ $('If').item.json.viewCount }}",
"channelUrl": "={{ $('If').item.json.channelUrl }}",
"channelName": "={{ $('If').item.json.channelName }}",
"thumbnailUrl": "={{ $('If').item.json.thumbnailUrl }}",
"numberOfSubscribers": "={{ $('If').item.json.numberOfSubscribers }}"
},
"schema": [
{
"id": "input",
"type": "string",
"display": true,
"required": false,
"displayName": "input",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "fromYTUrl",
"type": "string",
"display": true,
"required": false,
"displayName": "fromYTUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "thumbnailUrl",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "thumbnailUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "channelName",
"type": "string",
"display": true,
"required": false,
"displayName": "channelName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "channelUrl",
"type": "string",
"display": true,
"required": false,
"displayName": "channelUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "duration",
"type": "string",
"display": true,
"required": false,
"displayName": "duration",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "likes",
"type": "string",
"display": true,
"required": false,
"displayName": "likes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "numberOfSubscribers",
"type": "string",
"display": true,
"required": false,
"displayName": "numberOfSubscribers",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "viewCount",
"type": "string",
"display": true,
"required": false,
"displayName": "viewCount",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1531469275,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk/edit#gid=1531469275",
"cachedResultName": "Step 1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk/edit?usp=drivesdk",
"cachedResultName": "YouTube Videos"
}
},
"typeVersion": 4.5
},
{
"id": "681b01b1-4bd5-4782-969c-286ab571db14",
"name": "查找重复条目",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1024,
112
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "={{ $json.id }}",
"lookupColumn": "id"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1531469275,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk/edit#gid=1531469275",
"cachedResultName": "Step 1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk/edit?usp=drivesdk",
"cachedResultName": "YouTube Videos"
}
},
"executeOnce": false,
"typeVersion": 4.5,
"alwaysOutputData": false
},
{
"id": "ab8658bf-c5f1-402b-99c6-0d1b6d30f63e",
"name": "YouTube标题生成器",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-1152,
304
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "GPT-4.1-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Video Title: {{ $('Step 1 Results').item.json.title }}\nThumbnail Description: {{ $('Analyze Thumbnail').item.json.choices[0].message.content }}\nVideo Transcript: {{ $('HTTP Request').item.json.captions }}"
},
{
"role": "system",
"content": "=# Overview \nYou are an AI agent responsible for generating an optimized YouTube video title and corresponding thumbnail text based on an original title, visual thumbnail analysis, and video transcript. Your goal is to retain the original message while improving clarity, engagement, and visual storytelling.\n\n## Context \n- You will receive:\n - The original video title \n - A natural language description of the thumbnail image \n - The full video transcript \n- Your output should be a single JSON object that includes:\n - A revised, SEO-optimized video title \n - Concise thumbnail text (3–5 words) that complements the revised title and aligns with the thumbnail’s visual tone.\n\n## Instructions \n1. Read and analyze the original video title for its main topic and keywords. \n2. Use the thumbnail description and video transcript to better understand the visual and content themes. \n3. Generate a new title that:\n - Maintains the original intent and main keywords \n - Improves structure, clarity, or emotional appeal \n - Stays under 70 characters \n4. Create 3–5 words of thumbnail text that:\n - Adds insight, urgency, or intrigue to support the title \n - Aligns with the visual style of the thumbnail \n - Feels natural when paired with the title \n\n5. Output a single JSON object with both the revised title and thumbnail text in the following format: \n ```json\n {\n \"newTitle\": \"Improved YouTube video title\",\n \"thumbnailText\": \"3–5 word thumbnail text\"\n }\n ```\n\n## Tools \n- Original Title: `{{ $('Step 1 Results').item.json.title }}` \n- Thumbnail Description: `{{ $('Analyze Thumbnail').item.json.choices[0].message.content }}` \n- Video Transcript: `{{ $('HTTP Request').item.json.captions }}` \n\n## Examples \n**Input:** \n- Title: `\"He Built an AI Business With Just $100\"` \n- Thumbnail Description: `\"A thumbnail showing a confident man pointing at a laptop, with large text reading 'From $100 to CEO'. The background features glowing tech icons on a dark gradient backdrop.\"` \n- Transcript: *Describes how the subject bootstrapped a business using AI tools and minimal funding.*\n\n**Output:** \n```json\n{\n \"newTitle\": \"How He Launched an AI Startup with $100\",\n \"thumbnailText\": \"AI Startup for $100\"\n}\n```\n\n**Input:** \n- Title: `\"Top 10 ChatGPT Hacks You Didn't Know\"` \n- Thumbnail Description: `\"A sleek modern thumbnail with neon text that says 'ChatGPT Tricks', showing a split screen of a person thinking and a glowing terminal interface.\"` \n- Transcript: *Lists lesser-known prompts and features to boost productivity.*\n\n**Output:** \n```json\n{\n \"newTitle\": \"10 ChatGPT Hacks to Boost Productivity\",\n \"thumbnailText\": \"Hidden GPT Features\"\n}\n```\n\n## SOP (Standard Operating Procedure) \n1. Parse the input values: original title, thumbnail description, and transcript. \n2. Identify key themes and keywords from the title. \n3. Use visual and transcript context to improve the relevance and appeal of the new title. \n4. Draft 1–2 thumbnail text options based on visual cues and the revised title. \n5. Select the most compelling option. \n6. Return the output as a clean JSON object with both fields.\n\n## Final Notes \n- Do not include brand names or identifiable individuals unless they are generic and essential. \n- Avoid vague adjectives and hype-driven phrasing. \n- Keep the output concise, natural, and clear — ready for immediate use in automation or upload.\n---"
}
]
},
"simplify": false,
"jsonOutput": true
},
"typeVersion": 1.8
},
{
"id": "8c200f72-d742-4117-9291-57c52ba3b278",
"name": "分析缩略图",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-1584,
304
],
"parameters": {
"text": "=# Overview \nYou are an AI agent responsible for analyzing a YouTube thumbnail via a provided URL and generating a single, well-written **natural language description** that captures the visual style, layout, and tone of the thumbnail. This description will be used as part of an image generation prompt to recreate a similarly styled thumbnail.\n\n## Context \n- The agent uses OpenAI’s image understanding capabilities to visually analyze YouTube thumbnails. \n- The goal is to create a **descriptive text output** that reflects the design, mood, and layout of the thumbnail — not to copy the content directly. \n- The output should be a standalone sentence or paragraph in natural language, ready to be embedded in a larger prompt.\n\n## Instructions \n1. Retrieve and analyze the thumbnail image from the given YouTube URL. \n2. Identify and describe the following elements:\n - Overall layout and composition \n - Character or subject placement (if applicable) \n - Background type and visual treatment \n - Font and text style, including content if legible \n - Dominant color palette and mood \n3. Compose a fluent, single-string natural language description of the thumbnail. \n4. The output should read like part of a prompt, e.g., \"An energetic YouTube thumbnail showing...\" \n5. Do not include any structured formatting (like JSON, lists, or metadata). \n\n## Tools \n- OpenAI Image Understanding Node \n\n## Examples \n- **Input:** \n `https://i.ytimg.com/vi/HpkZU34fqUM/maxresdefault.jpg` \n- **Output:** \n A high-energy YouTube thumbnail featuring a surprised man on the right side, with a bold red radial gradient background. Large comic-style yellow text appears on the left, creating a dramatic and urgent visual tone.\n\n- **Input:** \n `https://i.ytimg.com/vi/abc123xyz/default.jpg` \n- **Output:** \n A clean, professional thumbnail showing a laptop with a blurred tech-themed background. Soft blue and gray tones dominate the scene, with sleek sans-serif text centered above the device.\n\n## SOP (Standard Operating Procedure) \n1. Validate the provided YouTube thumbnail URL. \n2. Retrieve the image and perform visual analysis using image capabilities. \n3. Extract and synthesize details about layout, colors, subjects, and visual emphasis. \n4. Write a **natural language description** that feels prompt-ready, descriptive, and cohesive. \n5. Return only the final descriptive sentence or paragraph — no metadata, formatting, or JSON.\n\n## Final Notes \n- Do not refer to brand names, creators, or exact text unless it's generic and descriptive. \n- Focus on tone, layout, and composition to support style transfer, not replication. \n- The description should serve as a high-quality visual summary usable in generative models.\n---",
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {
"detail": "high"
},
"resource": "image",
"simplify": false,
"imageUrls": "={{ $('Step 1 Results').item.json.thumbnailUrl }}",
"operation": "analyze"
},
"typeVersion": 1.8
},
{
"id": "7b7ecf58-980e-416c-b20c-698d9dd2cb3d",
"name": "更新行",
"type": "n8n-nodes-base.googleSheets",
"position": [
-448,
304
],
"parameters": {
"columns": {
"value": {
"id": "={{ $('Step 1 Results').item.json.id }}",
"newTitle": "={{ $('YouTube Title Generator').item.json.choices[0].message.content.newTitle }}",
"newOutline": "={{ $json.choices[0].message.content }}",
"thumbnailText": "={{ $('YouTube Title Generator').item.json.choices[0].message.content.thumbnailText }}",
"videoTranscript": "={{ $('HTTP Request').item.json.captions }}",
"thumbnailDescription": "={{ $('Analyze Thumbnail').item.json.choices[0].message.content }}"
},
"schema": [
{
"id": "input",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "input",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "id",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "id",
"defaultMatch": true,
"canBeUsedToMatch": true
},
{
"id": "title",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "url",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "url",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "fromYTUrl",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "fromYTUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "thumbnailUrl",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "thumbnailUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "channelName",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "channelName",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "channelUrl",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "channelUrl",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "duration",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "duration",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "likes",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "likes",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "numberOfSubscribers",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "numberOfSubscribers",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "viewCount",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "viewCount",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "videoTranscript",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "videoTranscript",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "thumbnailDescription",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "thumbnailDescription",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "thumbnailText",
"type": "string",
"display": true,
"required": false,
"displayName": "thumbnailText",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "newTitle",
"type": "string",
"display": true,
"required": false,
"displayName": "newTitle",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "newOutline",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "newOutline",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "string",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"id"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": 1531469275,
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk/edit#gid=1531469275",
"cachedResultName": "Step 1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1XXb4bHq2Dmdj9a0suVa9TzyC2RiSw_npTRHbQUKpeSk/edit?usp=drivesdk",
"cachedResultName": "YouTube Videos"
}
},
"typeVersion": 4.5
},
{
"id": "7a835dcc-5b53-4a53-b95a-540c59d0a0de",
"name": "YouTube视频抓取",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1424,
80
],
"parameters": {
"url": "https://api.apify.com/v2/acts/h7sDV53CddomktSi5/run-sync-get-dataset-items",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "={\n \"dateFilter\": \"month\",\n \"downloadSubtitles\": false,\n \"hasCC\": false,\n \"hasLocation\": false,\n \"hasSubtitles\": false,\n \"is360\": false,\n \"is3D\": false,\n \"is4K\": false,\n \"isBought\": false,\n \"isHD\": false,\n \"isHDR\": false,\n \"isLive\": false,\n \"isVR180\": false,\n \"lengthFilter\": \"between420\",\n \"maxResultStreams\": 0,\n \"maxResults\": 100,\n \"maxResultsShorts\": 0,\n \"preferAutoGeneratedSubtitles\": false,\n \"saveSubsToKVS\": false,\n \"scrapeLastNDays\": 60,\n \"searchQueries\": [\n \"{{ $json['Keyword or Topic'] }}\"\n ],\n \"sortVideosBy\": \"NEWEST\",\n \"sortingOrder\": \"date\",\n \"videoType\": \"video\"\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer <token>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "8ee684c9-d495-4bf2-9e1a-59c0f07ecadd",
"name": "HTTP 请求",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1376,
304
],
"parameters": {
"url": "https://api.apify.com/v2/acts/1s7eXiaukVuOr4Ueg/run-sync-get-dataset-items",
"method": "POST",
"options": {
"redirect": {
"redirect": {}
}
},
"jsonBody": "={\n \"channelHandleBoolean\": true,\n \"channelIDBoolean\": false,\n \"channelNameBoolean\": true,\n \"commentsBoolean\": false,\n \"datePublishedBoolean\": false,\n \"dateTextBoolean\": false,\n \"descriptionBoolean\": false,\n \"keywordsBoolean\": true,\n \"likesBoolean\": false,\n \"maxRetries\": 8,\n \"outputFormat\": \"singleStringText\",\n \"proxyOptions\": {\n \"useApifyProxy\": true,\n \"apifyProxyGroups\": []\n },\n \"relativeDateTextBoolean\": false,\n \"subscriberCountBoolean\": false,\n \"thumbnailBoolean\": false,\n \"uploadDateBoolean\": false,\n \"urls\": [\n \"{{ $('Step 1 Results').item.json.url }}\"\n ],\n \"viewCountBoolean\": false\n}",
"sendBody": true,
"sendHeaders": true,
"specifyBody": "json",
"headerParameters": {
"parameters": [
{
"name": "Accept",
"value": "application/json"
},
{
"name": "Authorization",
"value": "Bearer <token>"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "531bdc95-5403-4abf-9c90-50569fba7f05",
"name": "便签",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2672,
-144
],
"parameters": {
"width": 984,
"height": 748,
"content": "### ⚙️ 热门YouTube视频研究流程"
},
"typeVersion": 1
},
{
"id": "b6553d58-da4d-4aba-8660-1b777018feb7",
"name": "表单提交时",
"type": "n8n-nodes-base.formTrigger",
"position": [
-1648,
80
],
"webhookId": "29de0389-1bc3-46b2-8125-f2cfc5bd0d29",
"parameters": {
"options": {},
"formTitle": "YouTube Topic Research",
"formFields": {
"values": [
{
"fieldLabel": "Keyword or Topic",
"requiredField": true
}
]
},
"formDescription": "Enter a keyword or topic below, and I'll find trending videos related to that topic. "
},
"typeVersion": 2.2
},
{
"id": "05e6cf15-0652-4765-b4d7-90a80ed797b9",
"name": "大纲生成器",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
-784,
304
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1",
"cachedResultName": "GPT-4.1"
},
"options": {},
"messages": {
"values": [
{
"role": "system",
"content": "=# Overview \nYou are an AI agent responsible for analyzing high-performing YouTube video transcripts and generating improved, original video outlines with a unique perspective. \n\n## Context \n- The agent receives the transcript of a successful YouTube video from another creator. \n- The goal is not to copy, but to use the structure and content as a benchmark to craft a new outline that offers a distinct angle or interpretation of the topic. \n- The resulting outline should maintain the engaging qualities of the original while providing fresh value to the target audience. \n\n## Instructions \n1. Analyze the input transcript to understand the topic, flow, structure, and elements that likely contributed to its performance. \n2. Identify opportunities to reinterpret, reframe, or expand on the topic in a unique way. \n3. Develop a new outline that:\n - Retains the core appeal of the original video. \n - Presents a different perspective, argument, or theme. \n - Enhances clarity, relatability, and retention where possible. \n4. Structure the new outline into standard YouTube sections (Hook, Introduction, Main Points, Call to Action, etc.). \n5. Ensure the tone and content are original and distinct while still appealing to a similar audience. \n\n## Tools \n- None (analysis and outline generation only) \n\n## Examples \n- Input: \n {{ $('HTTP Request').item.json.captions }}\n\n- Output: \n - Hook: Challenge a commonly held belief related to the topic. \n - Introduction: Present your own experience or angle on the issue. \n - Section 1: Explore the topic using a new metaphor or real-world example. \n - Section 2: Address a subtopic the original did not cover. \n - Section 3: Offer actionable advice or a unique conclusion. \n - Call to Action: Encourage viewers to comment with their own experiences or thoughts. \n\n## SOP (Standard Operating Procedure) \n1. Review the transcript to understand key takeaways, pacing, and style. \n2. Extract the main topic and how the original creator approached it. \n3. Brainstorm unique takes, new angles, or opposing views that can form the basis of a fresh outline. \n4. Draft an outline that follows a proven structure but deviates meaningfully in substance or perspective. \n5. Return the new outline in a clean, sectioned bullet-point format ready for video scripting. \n\n## Final Notes \n- The goal is to differentiate while building on what worked. \n- Avoid mirroring phrases or points from the original—reframe and rephrase. \n- The final outline should feel original, relevant, and optimized for YouTube engagement. \n---"
},
{
"content": "=Video Transcript: {{ $('HTTP Request').item.json.captions }}"
}
]
},
"simplify": false
},
"typeVersion": 1.8
}
],
"pinData": {},
"connections": {
"If": {
"main": [
[
{
"node": "Find Duplicate Entries",
"type": "main",
"index": 0
},
{
"node": "Merge",
"type": "main",
"index": 1
}
]
]
},
"Merge": {
"main": [
[
{
"node": "Step 1 Results",
"type": "main",
"index": 0
}
]
]
},
"HTTP Request": {
"main": [
[
{
"node": "YouTube Title Generator",
"type": "main",
"index": 0
}
]
]
},
"Step 1 Results": {
"main": [
[
{
"node": "Analyze Thumbnail",
"type": "main",
"index": 0
}
]
]
},
"Analyze Thumbnail": {
"main": [
[
{
"node": "HTTP Request",
"type": "main",
"index": 0
}
]
]
},
"Outline Generator": {
"main": [
[
{
"node": "Update Rows",
"type": "main",
"index": 0
}
]
]
},
"On form submission": {
"main": [
[
{
"node": "YouTube Video Scrape",
"type": "main",
"index": 0
}
]
]
},
"YouTube Video Scrape": {
"main": [
[
{
"node": "If",
"type": "main",
"index": 0
}
]
]
},
"Find Duplicate Entries": {
"main": [
[
{
"node": "Merge",
"type": "main",
"index": 0
}
]
]
},
"YouTube Title Generator": {
"main": [
[
{
"node": "Outline Generator",
"type": "main",
"index": 0
}
]
]
}
}
}常见问题
如何使用这个工作流?
复制上方的 JSON 配置代码,在您的 n8n 实例中创建新工作流并选择「从 JSON 导入」,粘贴配置后根据需要修改凭证设置即可。
这个工作流适合什么场景?
中级 - 市场调研, 多模态 AI
需要付费吗?
本工作流完全免费,您可以直接导入使用。但请注意,工作流中使用的第三方服务(如 OpenAI API)可能需要您自行付费。
相关工作流推荐
使用 OpenAI、QuickChart 和 Google Drive 将电子表格数据转换为智能图表
使用 OpenAI、QuickChart 和 Google Drive 将电子表格数据转换为智能图表
If
Set
Code
+18
82 节点LeeWei
内容创作
使用AI、Hedra和ElevenLabs生成病毒式婴儿名人播客
使用AI、Hedra和ElevenLabs生成病毒式婴儿名人播客
Code
Wait
Merge
+11
35 节点LeeWei
内容创作
多平台价格查找器:使用 Bright Data 和 Telegram 抓取价格
多平台价格查找器:使用 Bright Data、Claude AI 和 Telegram 抓取价格
If
Code
Wait
+9
85 节点Incrementors
市场调研
简历转头像视频
使用 HeyGen 和 GPT 将简历转换为 AI 生成的个人视频介绍
If
Wait
Merge
+9
15 节点InfyOm Technologies
人力资源
使用OpenAI、RunwayML和ElevenLabs自动化无脸短视频
使用OpenAI、RunwayML和ElevenLabs自动化无脸短视频:从脚本到社交媒体
Set
Code
Wait
+18
56 节点LeeWei
内容创作
使用GPT-5 nano和Google Sheets抓取网站并回答问题
使用GPT-5 nano和Google Sheets抓取网站并回答问题
If
Set
Xml
+17
44 节点Oriol Seguí
市场调研