YouTube動画をSEO記事に変換する(Supadata、Claude Sonnet 4、WordPressを使用)

上級

これはContent Creation, Multimodal AI分野の自動化ワークフローで、22個のノードを含みます。主にSet, Code, Wait, Filter, YouTubeなどのノードを使用。 YouTube動画をSEO記事に変換するには、Supadata、Claude Sonnet 4、WordPressを使用します

前提条件
  • ターゲットAPIの認証情報が必要な場合あり
  • Anthropic API Key
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
  "meta": {
    "instanceId": "76f89f83c161d3dc4a2a2307b8474c26e91222cc4714d0dbc0ef5a91b47e83d1"
  },
  "nodes": [
    {
      "id": "e457294a-498f-4eff-864e-358896831040",
      "name": "「Test workflow」クリック時",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        -1936,
        1312
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "373070c8-4022-4047-9dcb-0577b83d7b48",
      "name": "アイテムをループ処理1",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -1344,
        1120
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "64d7bce2-fcc4-4536-b49f-8a8130f5f0a9",
      "name": "アイテムをループ処理2",
      "type": "n8n-nodes-base.splitInBatches",
      "position": [
        -240,
        1120
      ],
      "parameters": {
        "options": {}
      },
      "typeVersion": 3
    },
    {
      "id": "383fefc1-cab4-4137-9dc0-1b7a37f7e9ca",
      "name": "Anthropic Chat Model1",
      "type": "@n8n/n8n-nodes-langchain.lmChatAnthropic",
      "position": [
        304,
        1232
      ],
      "parameters": {
        "model": {
          "__rl": true,
          "mode": "list",
          "value": "claude-sonnet-4-20250514",
          "cachedResultName": "Claude Sonnet 4"
        },
        "options": {
          "thinking": true
        }
      },
      "typeVersion": 1.3
    },
    {
      "id": "43bce4d5-588f-4be7-a400-d534bfe981ce",
      "name": "付箋ノート",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2000,
        960
      ],
      "parameters": {
        "width": 1640,
        "height": 560,
        "content": "## Search New Videos"
      },
      "typeVersion": 1
    },
    {
      "id": "7e5a3733-4ca7-4c59-a5cc-1b6f351080cb",
      "name": "付箋ノート1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -336,
        960
      ],
      "parameters": {
        "color": 4,
        "width": 440,
        "height": 560,
        "content": "## Get the Most Viral Video (based on number of likes, views and comments)"
      },
      "typeVersion": 1
    },
    {
      "id": "d648a061-da1d-4746-91d3-0e0cc27d743b",
      "name": "付箋ノート2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        128,
        960
      ],
      "parameters": {
        "color": 5,
        "width": 940,
        "height": 560,
        "content": "## Write the Article and Post it to WordPress drafts"
      },
      "typeVersion": 1
    },
    {
      "id": "244061f5-2f53-4da8-9333-968e6f982bab",
      "name": "YOUTUBE チャンネル設定",
      "type": "n8n-nodes-base.set",
      "position": [
        -1744,
        1120
      ],
      "parameters": {
        "options": {},
        "assignments": {
          "assignments": [
            {
              "id": "71f75da1-ccba-429d-8bd3-3d6b6026b617",
              "name": "Youtube channel 1",
              "type": "string",
              "value": "Youtube channel 1"
            },
            {
              "id": "4a7773ad-ffd5-4f34-9a25-c6d66ef461c7",
              "name": "Youtube channel 2",
              "type": "string",
              "value": "Youtube channel 2"
            },
            {
              "id": "69408d6d-1fab-4a1a-b13b-e0aacd5ff131",
              "name": "Youtube channel 3",
              "type": "string",
              "value": "Youtube channel 3 (add more if needed)"
            }
          ]
        }
      },
      "typeVersion": 3.4
    },
    {
      "id": "1bec1dc6-9f9e-4cd6-93c3-38617efa7af2",
      "name": "Youtube チャンネル検索",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        -1168,
        1328
      ],
      "parameters": {
        "url": "https://www.googleapis.com/youtube/v3/search",
        "options": {},
        "sendQuery": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "part",
              "value": "snippet"
            },
            {
              "name": "q",
              "value": "={{ $json.search }}"
            },
            {
              "name": "type",
              "value": "channel"
            },
            {
              "name": "key",
              "value": "ENTER YOUR API KEY"
            },
            {
              "name": "regionCode",
              "value": "US"
            },
            {
              "name": "maxResults",
              "value": "10"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "47a94130-279b-4e34-9e25-faf9727c2baf",
      "name": "YouTube チャンネル動画取得",
      "type": "n8n-nodes-base.youTube",
      "position": [
        -896,
        1120
      ],
      "parameters": {
        "limit": 10,
        "filters": {
          "channelId": "={{ $json.items[0].id.channelId }}"
        },
        "options": {
          "order": "date"
        },
        "resource": "video"
      },
      "typeVersion": 1
    },
    {
      "id": "1fdb0605-1093-4dd3-a399-4631dcd664b5",
      "name": "重複排除",
      "type": "n8n-nodes-base.removeDuplicates",
      "position": [
        -688,
        1120
      ],
      "parameters": {
        "compare": "selectedFields",
        "options": {},
        "fieldsToCompare": "snippet.title"
      },
      "typeVersion": 2
    },
    {
      "id": "e147fc1a-74c6-4266-a2f8-1d1d66a7941f",
      "name": "日付でフィルタリング",
      "type": "n8n-nodes-base.filter",
      "position": [
        -480,
        1120
      ],
      "parameters": {
        "options": {},
        "conditions": {
          "options": {
            "version": 2,
            "leftValue": "",
            "caseSensitive": true,
            "typeValidation": "strict"
          },
          "combinator": "and",
          "conditions": [
            {
              "id": "b18a01f3-a39b-40eb-8421-0a4efc565ff7",
              "operator": {
                "type": "number",
                "operation": "gt"
              },
              "leftValue": "={{ $json.snippet.publishTime.toDateTime().toMillis() / 1000 }}",
              "rightValue": "={{$now.toMillis() / 1000 - 216000}}"
            }
          ]
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "d5fb7afd-8bf2-4c5f-835d-0aa93d665f4f",
      "name": "YouTube 動画取得",
      "type": "n8n-nodes-base.youTube",
      "position": [
        -64,
        1328
      ],
      "parameters": {
        "options": {},
        "videoId": "={{ $json.id.videoId }}",
        "resource": "video",
        "operation": "get"
      },
      "typeVersion": 1
    },
    {
      "id": "44491508-bc13-4024-83f6-eaed3ff91546",
      "name": "文字起こし作成",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        160,
        1024
      ],
      "parameters": {
        "url": "https://api.supadata.ai/v1/youtube/transcript",
        "options": {},
        "sendQuery": true,
        "sendHeaders": true,
        "queryParameters": {
          "parameters": [
            {
              "name": "videoId",
              "value": "={{ $json.id }}"
            },
            {
              "name": "text",
              "value": "true"
            }
          ]
        },
        "headerParameters": {
          "parameters": [
            {
              "name": "X-API-KEY",
              "value": "ENTER YOUR SUPADATA API KEY"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "08243de1-24af-4b52-b266-cd9ec8a20f0f",
      "name": "記事作成",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        352,
        1024
      ],
      "parameters": {
        "text": "=You are an AI copywriter + SEO assistant. Convert a YouTube [CONTENT_TYPE] transcript into a natural, engaging, fully SEO-optimized article.\n\n🔽 INPUT DATA (variables)\n\nYouTube Transcript: {{ $json.content }}\nYouTube Video Description: {{ $('Get the most Viral Video').item.json.snippet.description }}\nPrimary Topic / Hook: {{ $('Get the most Viral Video').item.json.snippet.title }}\nTarget Keyword List: [TARGET_KEYWORD_LIST_PLACEHOLDER]\n(choose the best one as PRIMARY)\nInternal Links (optional): [INTERNAL_LINK_URL_PLACEHOLDER]\nLink to original video:https://www.youtube.com/watch?v={{ $('Get the most Viral Video').item.json.id }}\nAuthor Name: [AUTHOR_NAME_PLACEHOLDER]\n\n\n✅ TASKS\n\nRead the transcript + description and understand the plot.\nPick a PRIMARY keyword (exact phrase from list) that best matches the story.\nPick 2–3 SECONDARY keywords (variations/related from the list).\nWrite an engaging article (800–1000 words): conversational, [BRAND_TONE_ADJECTIVES], but factual; organize for SEO and readers.\nOutput ONLY valid HTML (no markdown, no schema, no HTML comments). Nothing else.\nSatisfy Technical SEO Checklist (below) and show all required elements.\n\n\n🧭 CONTENT STRATEGY\n\nHook first: Start with the [HOOK_STRATEGY] in ≤100 words, include PRIMARY keyword.\nContext: Who are the people (full names first mention), why it matters.\nFlow: Tell it like a story ([CONTENT_STRUCTURE_OPTIONS]). Use 2–3 specific H2s.\nQuotes: Paraphrase or quote brief impactful lines from transcript.\nAnswer user intent: [USER_INTENT_QUESTIONS].\nClose strong: Recap takeaway, tease related [CONTENT_CATEGORY] (internal link).\n\nTone: [BRAND_VOICE_DESCRIPTION]. Use words like [BRAND_SPECIFIC_VOCABULARY] when natural. Avoid fluff.\n\n🛠 TECHNICAL SEO CHECKLIST (MUST PASS)\n\nTitle (H1): 50–60 chars, PRIMARY keyword near start. One H1 only.\nMeta description: 150–160 chars, includes PRIMARY keyword, persuasive.\nSlug suggestion: short, lowercase, hyphenated; contains PRIMARY keyword (return it in a data-slug comment-less attribute on the <article> tag: data-slug=\"your-slug\").\nPRIMARY keyword placement: first 100 words, one H2, last paragraph (CTA), and once bolded.\nSECONDARY keywords: 2–3 sprinkled naturally (overall density <2%).\nSubheadings: H2 every ≤300 words; at least one H2 carries a SECONDARY keyword.\nReadability rules (aim to please Yoast/RankMath):\n\n≥30% sentences start with transition words (e.g., \"However\", \"Moreover\").\nPassive voice ≤10%.\nNo more than 2 consecutive sentences starting with the same word.\nParagraphs ≤150 words; avg sentence length ≤20 words.\n\n\nInternal link: ≥1 to my site with descriptive anchor (skip if none provided).\nExternal link: ≥1 authoritative source besides YouTube if possible; always include the original video with rel=\"nofollow\".\nTable of contents: simple <ul> with in-page anchors under a <nav id=\"toc\"> block.\nConclusion CTA: invite to [CTA_ACTION], reiterate PRIMARY keyword once.\nWord count: 650–950 words (stay in range if transcript is short).\nNo keyword stuffing: natural only.\n\n\nName Recognition Strategy:\n\nExtract all names from transcript, description and video title\nUse full names when first mentioned, then first names or nicknames. Avoid phrases like [AVOID_PHRASES_PLACEHOLDER]\nBuild character: Give readers context about who these people are in 1-2 sentences\nConnect the dots: Explain relationships between people involved\nTag relevant platforms: Mention their [RELEVANT_PLATFORMS] accounts when relevant\nActive voice always: \"[PERSON_A] called out [PERSON_B]\" not \"[PERSON_B] was called out\"\n\n📦 OUTPUT FORMAT (RETURN ONLY THIS)\n<!-- ====== START HTML OUTPUT ====== -->\n<h1>[TITLE with PRIMARY keyword]</h1>\n<meta name=\"description\" content=\"[150-160 char meta with PRIMARY keyword]\">\n<article data-slug=\"[your-slug]\">\n<p><strong>[PRIMARY keyword]</strong> … [intro hook ≤100 words]</p>\n<h2 id=\"sec-1\">[Subheading with a SECONDARY keyword]</h2>\n<p>...</p>\n<h2 id=\"sec-2\">[Names/platforms/context]</h2>\n<p>...</p>\n<h2 id=\"sec-3\">[Reactions/impact]</h2>\n<p>...</p>\n<p>Watch the original video <a href=\"\" rel=\"nofollow\">here</a>. [Optional extra external link]</p>\n<p>Related: <a href=\"[internal_link_url]\">[internal_link_title]</a></p>\n<p><strong>Final take:</strong> [Wrap-up with PRIMARY keyword once more + CTA]</p>\n</article>\n<!-- ====== END HTML OUTPUT ====== -->\n\n✅ SELF-CHECK BEFORE RETURNING\n\nDid I pick and state PRIMARY + SECONDARY keywords?\nTitle & meta within limits?\nPRIMARY keyword in: title, first 100 words, meta, one H2, image alt.\nInternal + external link present?\nImages present with alt?\n800–1000 words?\nOutput ONLY HTML? (No markdown, no explanations, no extra keyword highlights like \"**\".)\nValid HTML tags; no unclosed tags.\nNO MARKDOWN SYMBOLS ANYWHERE. DO NOT MARK INSERTED KEYWORDS WITH ANY SYMBOLS\nUse names and surnames whereever possible.\n\n\nNOTES\n\nIf transcript lacks names, use those in description/title; otherwise infer from topic but don't invent people.\nDon't be too formal. You write a blog about [CONTENT_NICHE], so the text must be [CONTENT_STYLE_REQUIREMENTS]\nNo defamatory claims: stick to transcript facts.\nIf any input is missing (e.g., internal links), skip gracefully but keep structure.",
        "options": {
          "systemMessage": "You are a seasoned, charismatic blogger"
        },
        "promptType": "define"
      },
      "typeVersion": 1.9
    },
    {
      "id": "2ba19b67-4460-47ec-bd40-8c4f212e42e2",
      "name": "タイトルと本文を分割",
      "type": "n8n-nodes-base.code",
      "position": [
        688,
        1024
      ],
      "parameters": {
        "jsCode": "const html = items[0].json.output;\nconst h1Match = html.match(/<h1>(.*?)<\\/h1>/i);\nconst title = h1Match ? h1Match[1] : '';\nconst body = html.replace(h1Match[0], '').trim();\n\nreturn [\n  {\n    json: {\n      title,\n      body,\n    },\n  },\n];\n"
      },
      "typeVersion": 2
    },
    {
      "id": "e538ba77-75bb-4d0d-84ed-393143e51733",
      "name": "WordPress 投稿作成",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        864,
        1024
      ],
      "parameters": {
        "url": "https://YOUR-URL....",
        "method": "POST",
        "options": {},
        "sendBody": true,
        "sendQuery": true,
        "contentType": "multipart-form-data",
        "bodyParameters": {
          "parameters": [
            {
              "name": "title",
              "value": "={{ $json.title }}"
            },
            {
              "name": "status",
              "value": "draft"
            },
            {
              "name": "content",
              "value": "={{ $json.body }}"
            }
          ]
        },
        "queryParameters": {
          "parameters": [
            {
              "name": "Parameter if needed",
              "value": "Value if needed"
            }
          ]
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "ad2d030b-8223-42a7-905c-971ba15c6552",
      "name": "付箋ノート7",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -2000,
        624
      ],
      "parameters": {
        "width": 936,
        "height": 324,
        "content": "## How to configure the workflow\n- Connect your Google Account to all YouTube nodes to enable video discovery and retrieval functionality (Tutorial: https://www.youtube.com/watch?v=BfW1JpJ39Ek).\n- Integrate your Supadata account with the 'Create Transcription' node for high-quality video transcription services.\n- Connect your Anthropic account for AI-powered article generation (Tutorial: https://www.youtube.com/watch?v=1jl_vBoVvq0) - I recommend using Claude Sonnet 4 for text generation, however GPT models are also supported.\n- Navigate to the 'Compose Article' node and customize the following [PLACEHOLDERS] according to your brand requirements.\n- Configure the 'Create WordPress Post' node according to your WordPress website API.\n\n## Starting the workflow\n- After all services are connected - access the 'SET YOUTUBE CHANNELS' node and input the exact YouTube channel names you want to monitor.\n- Activate the workflow!"
      },
      "typeVersion": 1
    },
    {
      "id": "210b58a3-acf0-44f4-b267-1359012e713e",
      "name": "5秒待機(API 過負荷防止)",
      "type": "n8n-nodes-base.wait",
      "position": [
        -944,
        1328
      ],
      "webhookId": "8eba5872-32ee-4a9c-b296-5dc86c770275",
      "parameters": {},
      "typeVersion": 1.1
    },
    {
      "id": "4e23c456-5f10-403a-b4fa-cf28e9b2d93c",
      "name": "アイテムをタイトルと検索フレーズに分割",
      "type": "n8n-nodes-base.code",
      "position": [
        -1536,
        1120
      ],
      "parameters": {
        "jsCode": "const data = items[0].json;\nconst output = [];\nfor (const [title, search] of Object.entries(data)) {\n  output.push({\n    json: {\n      title,\n      search\n    }\n  });\n}\n\nreturn output;\n"
      },
      "typeVersion": 2
    },
    {
      "id": "591f562a-3a4f-4cb8-b4c2-b5409fd33e3a",
      "name": "スケジュールトリガー(6時間毎に開始)",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        -1936,
        1120
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "cronExpression",
              "expression": "0 */6 * * *"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "c5a55f4b-fda1-48f5-a439-1f0f5956bcbe",
      "name": "バイラル動画を取得",
      "type": "n8n-nodes-base.code",
      "position": [
        -16,
        1024
      ],
      "parameters": {
        "jsCode": "function score(stat) {\n  const views = Number(stat.viewCount) || 0;\n  const likes = Number(stat.likeCount) || 0;\n  const comments = Number(stat.commentCount) || 0;\n  return comments + (likes * 10) + (views * 20);\n}\n\nitems.sort((a, b) => {\n  return score(b.json.statistics) - score(a.json.statistics);\n});\n\nreturn [items[0]];"
      },
      "typeVersion": 2
    }
  ],
  "pinData": {},
  "connections": {
    "e147fc1a-74c6-4266-a2f8-1d1d66a7941f": {
      "main": [
        [
          {
            "node": "64d7bce2-fcc4-4536-b49f-8a8130f5f0a9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "08243de1-24af-4b52-b266-cd9ec8a20f0f": {
      "main": [
        [
          {
            "node": "2ba19b67-4460-47ec-bd40-8c4f212e42e2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "373070c8-4022-4047-9dcb-0577b83d7b48": {
      "main": [
        [
          {
            "node": "47a94130-279b-4e34-9e25-faf9727c2baf",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "1bec1dc6-9f9e-4cd6-93c3-38617efa7af2",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "64d7bce2-fcc4-4536-b49f-8a8130f5f0a9": {
      "main": [
        [
          {
            "node": "c5a55f4b-fda1-48f5-a439-1f0f5956bcbe",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "d5fb7afd-8bf2-4c5f-835d-0aa93d665f4f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "d5fb7afd-8bf2-4c5f-835d-0aa93d665f4f": {
      "main": [
        [
          {
            "node": "64d7bce2-fcc4-4536-b49f-8a8130f5f0a9",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "1fdb0605-1093-4dd3-a399-4631dcd664b5": {
      "main": [
        [
          {
            "node": "e147fc1a-74c6-4266-a2f8-1d1d66a7941f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "44491508-bc13-4024-83f6-eaed3ff91546": {
      "main": [
        [
          {
            "node": "08243de1-24af-4b52-b266-cd9ec8a20f0f",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "244061f5-2f53-4da8-9333-968e6f982bab": {
      "main": [
        [
          {
            "node": "4e23c456-5f10-403a-b4fa-cf28e9b2d93c",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "2ba19b67-4460-47ec-bd40-8c4f212e42e2": {
      "main": [
        [
          {
            "node": "e538ba77-75bb-4d0d-84ed-393143e51733",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "383fefc1-cab4-4137-9dc0-1b7a37f7e9ca": {
      "ai_languageModel": [
        [
          {
            "node": "08243de1-24af-4b52-b266-cd9ec8a20f0f",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "1bec1dc6-9f9e-4cd6-93c3-38617efa7af2": {
      "main": [
        [
          {
            "node": "210b58a3-acf0-44f4-b267-1359012e713e",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "c5a55f4b-fda1-48f5-a439-1f0f5956bcbe": {
      "main": [
        [
          {
            "node": "44491508-bc13-4024-83f6-eaed3ff91546",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "47a94130-279b-4e34-9e25-faf9727c2baf": {
      "main": [
        [
          {
            "node": "1fdb0605-1093-4dd3-a399-4631dcd664b5",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "591f562a-3a4f-4cb8-b4c2-b5409fd33e3a": {
      "main": [
        [
          {
            "node": "244061f5-2f53-4da8-9333-968e6f982bab",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "210b58a3-acf0-44f4-b267-1359012e713e": {
      "main": [
        [
          {
            "node": "373070c8-4022-4047-9dcb-0577b83d7b48",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "4e23c456-5f10-403a-b4fa-cf28e9b2d93c": {
      "main": [
        [
          {
            "node": "373070c8-4022-4047-9dcb-0577b83d7b48",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}
よくある質問

このワークフローの使い方は?

上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。

このワークフローはどんな場面に適していますか?

上級 - コンテンツ作成, マルチモーダルAI

有料ですか?

このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。

ワークフロー情報
難易度
上級
ノード数22
カテゴリー2
ノードタイプ13
難易度説明

上級者向け、16ノード以上の複雑なワークフロー

作成者
Pavlo Hurhu

Pavlo Hurhu

@pavlohurhu

Building rock-solid automations with n8n for over a year. Love sharing reliable workflows that help teams work smarter, not harder.

外部リンク
n8n.ioで表示

このワークフローを共有

カテゴリー

カテゴリー: 34