ブログパブリッシャー – 完全AI駆動のコンテンツ調査、作成、最適化、公開の自動化
上級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、35個のノードを含みます。主にIf, Set, Code, Discord, HttpRequestなどのノードを使用。 Gemini、Ideogram AI、WordPress でブログ作成と公開を自動化
前提条件
- •Discord Bot Token または Webhook
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
- •OpenAI API Key
- •Google Gemini API Key
使用ノード (35)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "3LIrbty8O6tBURFs",
"meta": {
"instanceId": "bc8ca75c203589705ae2e446cad7181d6f2a7cc1766f958ef9f34810e53b8cb2",
"templateCredsSetupCompleted": true
},
"name": "Blog Publisher – Complete AI-Powered Content Research, Creation, Optimization, and Publishing Automation",
"tags": [],
"nodes": [
{
"id": "2c398975-2f74-43e6-8450-e69392869450",
"name": "Google Gemini Chat Model",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-3696,
256
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "xbK4CzkeE3YrIut4",
"name": "Shan API"
}
},
"typeVersion": 1
},
{
"id": "ece45d3f-313b-48ab-b086-1250b695ea86",
"name": "Google Gemini Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-3312,
256
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "xbK4CzkeE3YrIut4",
"name": "Shan API"
}
},
"typeVersion": 1
},
{
"id": "9823b639-66c5-4cd8-b47d-94dc080e7eae",
"name": "トピックのリサーチ",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-3696,
32
],
"parameters": {
"text": "=Keyword: {{ $json['Focus Keyword'] }}\nContent Topic: {{ $json['Content Topic'] }}",
"options": {
"systemMessage": "I will provide a content topic and a targeted keyword. As an expert content writer, please conduct comprehensive research and deliver a detailed, actionable report that will help craft a highly engaging, user-focused blog post. Your report should include:\n\nSearch Intent Analysis: Identify the main search intent (informational, commercial, navigational, transactional) behind the keyword and explain why it matters for content strategy.\n\nTop Competitor Insights: Analyze the top 5–10 ranking pages for this keyword. For each, provide the title, meta description, URL, and a brief summary highlighting their approach and content strengths.\n\nContent Gaps & Opportunities: Identify what these top pages miss or underdeliver on, revealing opportunities to make my blog more valuable and distinctive.\n\nAudience Profile & Needs: Describe the target audience’s demographics, pain points, desires, and the key questions they want answered related to this topic.\n\nTrending Subtopics & Related Keywords: List relevant, trending subtopics and related keywords, including search volume and difficulty metrics where available, to help expand and deepen the blog content.\n\nLSI Keywords & Related Keywords: Provide 5 LSI (Latent Semantic Indexing) keywords and 5 closely related keywords that can be incorporated to improve SEO and content relevance.\n\nSEO-Optimized Blog Outline: Propose a detailed blog outline with clear headings and subheadings designed to maximize SEO impact and reader engagement.\n\nTrusted Sources & References: Provide a curated list of credible sources and references for fact-checking and citation to ensure authoritative and trustworthy content.\n\nPlease make your recommendations practical and focused on creating an engaging, authoritative, and SEO-friendly blog post that stands out."
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "e34a1527-856d-4d83-975e-87eb5b79a5ec",
"name": "コンテンツ作成",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-3312,
32
],
"parameters": {
"text": "=- **Keyword:** {{ $('Pass 1 Blog Topic').item.json['Focus Keyword'] }}\n- **Content Topic:** {{ $('Pass 1 Blog Topic').item.json['Content Topic'] }}\n- **Target Page:** {{ $('Pass 1 Blog Topic').item.json['Target Page'] }}\n- **Words:** {{ $('Pass 1 Blog Topic').item.json.Words }}\n\n - Reaesrch: {{ $json.output }}",
"options": {
"systemMessage": "=You are an expert content writer. Write an 800–1000 word article in clear, easy-to-read, conversational English. Use short sentences, avoid heavy jargon, and explain technical terms simply for an Indian investor audience. The content must have a high readability score.\n\nInstructions:\nStart content with the Question.\nDo not use AI Terms Like Imagine\nUse simple HTML with only these tags: <h1>, <h2>, <p>, <ul>, <ol>, <b>, <i>, <a>.\n\nStart directly with the content section—no <head>, <footer>, CSS, or extra formatting.\n\nIntegrate the primary keyword naturally without repeating it too closely. Use it once in a subheading (<h2> or <h3>), phrased naturally (e.g., instead of “buy sell unlisted shares India,” write “buy and sell unlisted shares in India”).\n\nAdd relevant LSI keywords naturally to provide context.\n\nInclude at least 3 internal links to relevant pages on the target website. Use descriptive anchor text (not exact keywords) and apply this inline CSS to each link: <a style=\"color: #256181; font-weight: 700\">.\n\nKeep paragraphs short (3–4 sentences) to enhance readability.\n\nAvoid repeated points and do not use em dashes or \\n line breaks in the HTML.\n\nWrite as if explaining to a smart friend, with practical tips and examples tailored for Indian investors.\n\nAvoid keyword stuffing; integrate keywords naturally throughout the text.\n\nDeliverable:\nOutput only the HTML content—no explanations or extra comments."
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "7db51d0d-7467-4b9b-983d-032e0b7b8a5c",
"name": "ブログ公開ステータスの確認",
"type": "n8n-nodes-base.if",
"position": [
-4896,
48
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "or",
"conditions": [
{
"id": "ad02573b-8ca4-4657-9e4a-ee6490d9cce3",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $json['Weekly Frequency'] }}",
"rightValue": "={{ $now.toFormat('ccc') }}"
},
{
"id": "b170466b-7f1b-4575-8749-1e6185cae9f8",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json['Weekly Frequency'] }}",
"rightValue": "Daily"
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a7d9e1aa-bc4f-4ca8-806c-aca8a8fd7762",
"name": "ブログトピックを1つ受け渡す",
"type": "n8n-nodes-base.code",
"position": [
-3936,
32
],
"parameters": {
"jsCode": "// Keep only the first item\nreturn [items[0]];\n"
},
"typeVersion": 2
},
{
"id": "da031e62-192f-4be0-b4e0-df6a60153fe0",
"name": "コンテンツ品質の確認",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2960,
32
],
"parameters": {
"text": "={{ $json.output }}",
"options": {
"systemMessage": "Please evaluate this content for its humanized writing style by answering the following:\n\nDoes the content use a conversational tone that feels natural and friendly?\n\nAre personal pronouns (I, you, we) used effectively to engage the reader?\n\nAre sentences short, clear, and easy to understand?\n\nIs the language simple and free of jargon or complex terms?\n\nDoes the content show empathy or emotional connection with the reader?\n\nAre stories, examples, or anecdotes used to illustrate key points?\n\nAre questions included to engage the reader and encourage interaction?\n\nIs the writing primarily in active voice rather than passive?\n\nDoes the content include contractions to sound more natural?\n\nAre paragraphs short and well-structured with bullet points or lists where appropriate?\n\nDoes the content convey authenticity and personality?\n\nIs the content clearly focused on the reader’s needs, problems, or desires?\n\n\n\nI want what to improve in the content as output "
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "62c25f2c-5311-4df1-8d55-202bbc033843",
"name": "品質問題を修正",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-2608,
32
],
"parameters": {
"text": "=Original Content\n\n{{ $('Write the Content').item.json.output }}\n\nQC Feedback\n{{ $json.output }}",
"options": {
"systemMessage": "Assume you are and expert content writer and this the feedback of the content. do not change the entire flow of the content just optimize the content base on the feedback\nInstructions:\nContent should in the same html structure\nNo Extra comment or expiations\nPlain simple HTML format content\nDo not Use the ```html and \\n for line break\n1 mistake related to each\nIncorrect comma usage (missing commas, comma splices, or overusing commas)\nMisuse of apostrophes (its vs. it’s)\nOveruse or misuse of semicolons and colons\nNot using periods or question marks properly\nExtra spaces between words or after punctuation"
},
"promptType": "define"
},
"typeVersion": 2.2
},
{
"id": "0405e8b2-c932-448d-8cee-6b1438fd5be7",
"name": "アイテムをループ処理",
"type": "n8n-nodes-base.splitInBatches",
"position": [
-4640,
32
],
"parameters": {
"options": {}
},
"typeVersion": 3
},
{
"id": "542bf697-9b66-44c9-a1ee-46a013828b00",
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"disabled": true,
"position": [
-5312,
48
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 7
}
]
}
},
"typeVersion": 1.2
},
{
"id": "bcd14b3a-e70e-4faf-a1a1-db7284796a08",
"name": "If",
"type": "n8n-nodes-base.if",
"position": [
-4176,
48
],
"parameters": {
"options": {},
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "8cc1c059-bf65-4864-bfb8-12c56481789a",
"operator": {
"type": "string",
"operation": "notEmpty",
"singleValue": true
},
"leftValue": "={{ $json['Focus Keyword'] }}",
"rightValue": ""
}
]
}
},
"typeVersion": 2.2
},
{
"id": "a951e883-0729-4142-9dbc-b9a834bf7408",
"name": "コンテンツ依頼と投稿から未処理のトピックを取得",
"type": "n8n-nodes-base.googleSheets",
"position": [
-4384,
48
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "Approved",
"lookupColumn": "Status for Approval"
},
{
"lookupValue": "Pending",
"lookupColumn": "Live Link"
}
]
},
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Content Req & Posting"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "YOUR_GOOGLE_SHEET_URL"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "Aam5AW9oxNhvIGd2",
"name": "Shiv@incrementors.com - Google Sheets"
}
},
"executeOnce": false,
"notesInFlow": false,
"typeVersion": 4.5,
"alwaysOutputData": true
},
{
"id": "aa0b797c-fcea-4fdf-8e11-86f16fc453b6",
"name": "最終データを準備",
"type": "n8n-nodes-base.set",
"position": [
-2048,
32
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "879ec377-94b8-47da-a593-5876e2f35f28",
"name": "S NO",
"type": "string",
"value": "={{ $('Pass 1 Blog Topic').item.json['S.No.'] }}"
},
{
"id": "be91b8ad-22cd-4a72-ae04-0e9a44df7cb2",
"name": "Blog Title",
"type": "string",
"value": "={{ $('Pass 1 Blog Topic').item.json['Content Topic'] }}"
},
{
"id": "b04eb3ec-c74d-42ca-95ea-190f05e160d2",
"name": "Content",
"type": "string",
"value": "={{ $json.excludedH1 }}"
},
{
"id": "5267bc48-e1ec-454b-b85c-c87b9f789123",
"name": "Auth Code",
"type": "string",
"value": "={{ $('Fetch Client Details').item.json['Blog Posting Auth Code'] }}"
},
{
"id": "23e11954-9595-448c-ad95-ad56c652edf5",
"name": "Website URL",
"type": "string",
"value": "={{ $('Fetch Client Details').item.json['Website URL'] }}"
},
{
"id": "e9e5d5fd-973f-4f82-b433-a6ef83697dc5",
"name": "OnPage SEO",
"type": "string",
"value": "={{ $('Fetch Client Details').item.json['On Page Sheet'] }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e9ff48d2-dce5-48bb-a96f-fb7a141a7afe",
"name": "ブログタイトルを抽出",
"type": "n8n-nodes-base.code",
"position": [
-2256,
32
],
"parameters": {
"jsCode": "// Get the input string\nlet content = $input.first().json.output;\n\n// Remove all newlines\ncontent = content.replace(/\\n/g, '');\n\n// Remove em dashes\ncontent = content.replace(/—/g, ' ');\n\n// Extract the content inside the first <h1> tag\nconst h1Match = content.match(/<h1[^>]*>(.*?)<\\/h1>/);\nconst h1Content = h1Match ? h1Match[1] : '';\n\n// Remove all <h1> tags and their content from the original string\nconst excludedH1Content = content.replace(/<h1[^>]*>.*?<\\/h1>/g, '');\n\nreturn {\n json: {\n h1Only: h1Content,\n excludedH1: excludedH1Content\n }\n};\n"
},
"typeVersion": 2
},
{
"id": "c48aad87-2bf1-4b0a-a75d-b9722cc6a2da",
"name": "画像生成プロンプトを作成",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-1808,
32
],
"parameters": {
"text": "=Heading: {{ $('Edit Fields').item.json['Blog Title'] }}\nContent:\n{{ $('Edit Fields').item.json.Content }}",
"options": {
"systemMessage": "=You are an expert AI image prompt creator for Blog Posting visuals. Based on the following Blog Content, write a rich, vivid, and visually appealing image prompt that would generate a share-worthy image. Use Realistic image with Real Persons. Keep it realistic, aesthetic, and optimized for high engagement.\n\nThis is the Heading so first make it 4 to 5 words and that should be added on the image\n{{ $json['Blog Title'] }}\n\nin output just give me plain prompt do not include supportive text and explanatory words.\nand supporting words like \"image prompt:\"\n\nOUTPUT REQUIREMENTS:\n\nBackground: Light beige to gradient with a subtle golden overlay effect on the edges.\n\nStyle: Clean, professional business graphic with detailed visual hierarchy\n\nColors: Choose 2-3 vibrant professional colors\n\nText: Heading\n\nText Heading should be in bottom or left side\n\nAVOID:\n\nComplex graphics or multiple elements\n\nLong text or paragraphs\n\nUnrealistic photos\n\nCluttered designs\n\nDo not use other text on the image only add the heading\n\nDo not use icons\n\nMake the image realistic, not animated or cartoonish"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "b4f07418-a028-456c-8846-e650c23172c4",
"name": "OpenAI Chat Model1",
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
"position": [
-1808,
256
],
"parameters": {
"model": {
"__rl": true,
"mode": "list",
"value": "gpt-4.1-mini",
"cachedResultName": "gpt-4.1-mini"
},
"options": {}
},
"credentials": {
"openAiApi": {
"id": "tCrLCjVYHhZMrULt",
"name": "OpenAI - Keyword Research"
}
},
"typeVersion": 1.2
},
{
"id": "8e9a83db-005f-42bc-acf3-ec2b5dcfc354",
"name": "画像を生成",
"type": "n8n-nodes-base.httpRequest",
"onError": "continueRegularOutput",
"position": [
-1456,
32
],
"parameters": {
"url": "https://api.ideogram.ai/v1/ideogram-v3/generate",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "multipart-form-data",
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "=prompt",
"value": "={{ $json.output }}"
},
{
"name": "rendering_speed",
"value": "QUALITY"
},
{
"name": "resolution",
"value": "1248x832"
},
{
"name": "num_images",
"value": "1"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Api-Key",
"value": "YOUR_IDEOGRAM_API_KEY"
}
]
}
},
"typeVersion": 4.2,
"alwaysOutputData": true
},
{
"id": "e3118468-ded3-4e2c-a9ee-aceb2e2b034f",
"name": "画像をバイナリファイルでダウンロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
-1200,
32
],
"parameters": {
"url": "={{ $json.data[0].url }}",
"options": {}
},
"typeVersion": 4.2
},
{
"id": "44a76ee6-989a-4c06-a524-d59830a151b2",
"name": "Wordpressに画像をアップロード",
"type": "n8n-nodes-base.httpRequest",
"position": [
-960,
32
],
"parameters": {
"url": "={{ $('Edit Fields').item.json['Website URL'] }}wp-json/wp/v2/media",
"method": "POST",
"options": {},
"sendBody": true,
"contentType": "binaryData",
"sendHeaders": true,
"headerParameters": {
"parameters": [
{
"name": "Content-Disposition",
"value": "=attachment; filename=\"{{ $('Edit Fields').item.json['Blog Title'] }}\".jpg"
},
{
"name": "Content-Type",
"value": "image/png"
},
{
"name": "Authorization",
"value": "Basic YOUR_WORDPRESS_AUTH_CODE"
}
]
},
"inputDataFieldName": "data"
},
"typeVersion": 4.2
},
{
"id": "ed475e00-2634-40f8-8f86-8c3dd862e013",
"name": "アイキャッチ画像を設定",
"type": "n8n-nodes-base.httpRequest",
"position": [
-496,
32
],
"parameters": {
"url": "={{ $('Edit Fields').item.json['Website URL'] }}wp-json/wp/v2/posts/{{ $('Publish Blog on Wordpress').item.json.id }}",
"method": "POST",
"options": {},
"sendQuery": true,
"sendHeaders": true,
"queryParameters": {
"parameters": [
{
"name": "featured_media",
"value": "={{ $('Upload Image in Wordpress').item.json.id }}"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Basic YOUR_WORDPRESS_AUTH_CODE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "4f3f2c07-8388-4ce6-95c1-dad017caa081",
"name": "Wordpressにブログを公開",
"type": "n8n-nodes-base.httpRequest",
"position": [
-736,
32
],
"parameters": {
"url": "={{ $('Edit Fields').item.json['Website URL'] }}wp-json/wp/v2/posts",
"method": "POST",
"options": {},
"sendBody": true,
"sendHeaders": true,
"bodyParameters": {
"parameters": [
{
"name": "title",
"value": "={{ $('Edit Fields').item.json['Blog Title'] }}"
},
{
"name": "content",
"value": "=<img src=\"{{ $json.guid.rendered }}\">\n{{ $('Edit Fields').item.json.Content }}"
},
{
"name": "status",
"value": "publish"
},
{
"name": "categories",
"value": "=7"
}
]
},
"headerParameters": {
"parameters": [
{
"name": "Authorization",
"value": "Basic YOUR_WORDPRESS_AUTH_CODE"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "eb1985f3-8c5c-47d4-82a9-7f4fa0d07115",
"name": "Google Gemini Chat Model2",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-2960,
272
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "xbK4CzkeE3YrIut4",
"name": "Shan API"
}
},
"typeVersion": 1
},
{
"id": "e4217e7b-d2bf-4612-9fd1-b1531d6a076d",
"name": "Google Gemini Chat Model3",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-2608,
256
],
"parameters": {
"options": {}
},
"credentials": {
"googlePalmApi": {
"id": "xbK4CzkeE3YrIut4",
"name": "Shan API"
}
},
"typeVersion": 1
},
{
"id": "9fb77411-6eb6-4fb7-859a-3df4eecd47d6",
"name": "クライアント情報を取得",
"type": "n8n-nodes-base.googleSheets",
"position": [
-5088,
48
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "Automation",
"lookupColumn": "Project Status"
},
{
"lookupValue": "Automation",
"lookupColumn": "Blog Publishing"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "YOUR_GOOGLE_SHEET_URL",
"cachedResultName": "Project"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "YOUR_GOOGLE_SHEET_URL"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "Aam5AW9oxNhvIGd2",
"name": "Shiv@incrementors.com - Google Sheets"
}
},
"typeVersion": 4.7
},
{
"id": "fc4a1ec4-7119-4e53-8684-e9892392c98a",
"name": "スプレッドシートでブログステータスを更新",
"type": "n8n-nodes-base.googleSheets",
"position": [
-256,
32
],
"parameters": {
"columns": {
"value": {
"S.No.": "={{ $('Edit Fields').item.json['Blog S No'] }}",
"Live Link": "={{ $json.link }}"
},
"schema": [
{
"id": "S.No.",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "S.No.",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Focus Keyword",
"type": "string",
"display": true,
"required": false,
"displayName": "Focus Keyword",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content Topic",
"type": "string",
"display": true,
"required": false,
"displayName": "Content Topic",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Target Page",
"type": "string",
"display": true,
"required": false,
"displayName": "Target Page",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Words",
"type": "string",
"display": true,
"required": false,
"displayName": "Words",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Brief URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Brief URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Content URL",
"type": "string",
"display": true,
"required": false,
"displayName": "Content URL",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Status for Approval ",
"type": "string",
"display": true,
"required": false,
"displayName": "Status for Approval ",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Live Link",
"type": "string",
"display": true,
"required": false,
"displayName": "Live Link",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": true,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"S.No."
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "name",
"value": "Content Req & Posting"
},
"documentId": {
"__rl": true,
"mode": "url",
"value": "YOUR_GOOGLE_SHEET_URL"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "Aam5AW9oxNhvIGd2",
"name": "Shiv@incrementors.com - Google Sheets"
}
},
"typeVersion": 4.7
},
{
"id": "38ba9188-ccc3-4d64-86de-2563673d5722",
"name": "新着ブログを告知",
"type": "n8n-nodes-base.discord",
"position": [
-64,
32
],
"webhookId": "YOUR_DISCORD_API_KEY",
"parameters": {
"content": "=<@1314814621777133568>\n\nA new article has just been published on the Hair Transplant Istanbul Website.\n\nCheck it out here: \n{{ $json['Live Link'] }}\n\n✅ Please review the content and let us know if you’d like any changes to the article publishing automation. ",
"guildId": {
"__rl": true,
"mode": "list",
"value": "YOUR_DISCORD_API_KEY",
"cachedResultUrl": "https://discord.com/channels/YOUR_DISCORD_API_KEY",
"cachedResultName": "Project Delivery"
},
"options": {},
"resource": "message",
"channelId": {
"__rl": true,
"mode": "id",
"value": "YOUR_DISCORD_API_KEY"
}
},
"credentials": {
"discordBotApi": {
"id": "FrBoFzk7ybIfABi8",
"name": "Nathan - Shan"
}
},
"typeVersion": 2
},
{
"id": "6a3e2526-b010-438d-b437-d47f12994b7c",
"name": "付箋9",
"type": "n8n-nodes-base.stickyNote",
"position": [
-6240,
-752
],
"parameters": {
"color": 4,
"width": 720,
"height": 1232,
"content": "## 🚀 Automation Summary\n\n### 🔹 What does this automation do?\nThis automation takes care of the entire blog publishing process automatically.\nYou don’t have to manually research, write, design, or post content. Instead:\n\nYou just add or approve a blog topic in Google Sheets.\nThe system will then research the topic, write the blog, create an image, publish it on WordPress, update the sheet, and notify your team – all without any manual effort.\n\n### 🔹 How does it work step by step?\n**Start –** The workflow runs on a schedule (like every morning) or whenever you trigger it manually.\n\n**Read Topics from Google Sheets –** It looks at your content sheet and picks only those topics that are approved and still pending to be published.\n\n**AI Research & Content Writing -**\nGoogle Gemini (AI) does in-depth research on the topic and target keyword.\nThen it writes a full 800–1000 word article in clear, simple language with SEO optimization.\n\n**Quality Check & Fixes: -**\nThe blog draft is checked to make sure it sounds natural, human-friendly, and well-written. Any grammar, flow, or readability issues are automatically improved.\n\n**Image Creation –**\nAn image prompt is created based on the blog title and content.\nThe prompt is sent to Ideogram AI, which generates a realistic and professional blog cover image.\n\n**Publish to WordPress –**\nThe article and image are uploaded directly to your WordPress site.\nThe image is set as the blog’s featured image, so the post looks complete and professional.\n\n**Update & Notify –**\nThe blog’s live link is saved back into your Google Sheet.\nA notification is sent to your team on Discord with the new blog link, so everyone knows it’s published.\n\n### 🔹 Which APIs power this workflow?\n**Google Sheets API →** To read topics and update status.\n**Google Gemini API →** For research and blog writing.\n**OpenAI API →** To create creative image prompts.\n**Ideogram API →** To generate professional blog images.\n**WordPress REST API →** To publish content and images.\n**Discord API →** To notify the team automatically.\n\n### 🔹 Why is this useful?\nSaves hours of manual work (research, writing, image design, posting).\nEnsures blogs are always SEO-optimized and published on time.\nKeeps everything organized in Google Sheets.\nKeeps the team updated instantly after publishing.\n\n### 👉 In short: Approve a topic in Google Sheets → The automation handles everything else from research to publishing.\n\n📩 For any questions or support, please contact:\n✉️ info@incrementors.com\nor fill out this form: https://www.incrementors.com/contact-us/"
},
"typeVersion": 1
},
{
"id": "8d955eea-8ca4-4dc3-a962-dde31f266308",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
-5152,
-256
],
"parameters": {
"color": 6,
"width": 448,
"height": 464,
"content": "### 🟡 Get the Client Data:\n\"Fetches client data from Google Sheet (Auth Code, Website URL, SEO Sheet, Frequency, etc.). Only picks rows where Project Status = Active and Blog Publishing = Automation.\"\n\n### 🟡 Check Blog Publishing Status:\n\"Checks the client’s publishing schedule. If Weekly Frequency matches the current day or is set to Daily, the workflow continues; otherwise, it stops.\""
},
"typeVersion": 1
},
{
"id": "d492e8f8-bcef-4309-913e-72c4db55c785",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-4432,
-256
],
"parameters": {
"color": 6,
"width": 640,
"height": 464,
"content": "### 🟡 Fetch Pending Topics from Content Req & Posting:\n\"Reads the client’s sheet and selects only those topics where status is Approved and Live Link is still Pending, meaning they are ready for publishing.\"\n\n### 🟡 If condition:\n\"Checks whether the selected topic has a Focus Keyword; if empty the process stops, if not empty the workflow continues to content creation.\"\n\n### 🟡 Pass 1 Blog Topic:\n\"Keeps only the first blog topic from the list so that the workflow processes one topic at a time.\""
},
"typeVersion": 1
},
{
"id": "86cfa16b-0242-4452-a388-ab19a5d560e4",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3760,
-256
],
"parameters": {
"color": 6,
"width": 704,
"height": 464,
"content": "### 🟡 Do the Research on the Topic:\n\"Generates an in-depth research report for the given keyword and topic, covering search intent, top competitors, content gaps, audience profile, trending subtopics, related keywords, and a suggested SEO-friendly blog outline.\"\n\n### 🟡 Write the Content:\n\"Creates a complete 800–1000 word blog article in clean HTML format, written in a simple and conversational style, naturally integrating keywords, adding internal links, and ensuring readability for the target audience.\""
},
"typeVersion": 1
},
{
"id": "66771410-a54c-4ef6-ad58-716b3d2ce537",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-3008,
-256
],
"parameters": {
"color": 6,
"width": 640,
"height": 464,
"content": "### 🟡 Check Content Quality:\n\"Analyzes the generated blog to ensure it reads like human-written content by checking tone, conversational flow, readability, sentence clarity, empathy, active voice usage, and overall engagement, then produces feedback on what to improve.\"\n\n### 🟡 Fix the Quality Issues:\n\"Takes the feedback from the quality check and improves the content by correcting grammar, punctuation, sentence flow, and readability issues while keeping the same HTML format, structure, and overall meaning of the blog intact.\""
},
"typeVersion": 1
},
{
"id": "8c3d27bd-8e51-4e00-818f-8eb948acb67d",
"name": "付箋5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2336,
-256
],
"parameters": {
"color": 6,
"width": 816,
"height": 464,
"content": "### 🟡 Extract Blog Title:\n\"Processes the AI-generated HTML content to extract the main <h1> title separately and remove it from the body text, ensuring the blog title and content are clean and distinct.\"\n\n### 🟡 Prepare Final Data:\n\"Collects all required fields (S. No, Blog Title, Content, Auth Code, Website URL, and OnPage SEO) into a structured format, preparing the data for final publishing to the correct WordPress site.\"\n\n### 🟡 Sticky Note for Generate Image Prompt:\n\"Generates a clean and professional AI image prompt from the blog title and content—keeping it realistic, minimal, and visually engaging for use in blog cover images.\""
},
"typeVersion": 1
},
{
"id": "f3e4c9e8-a7db-4fc5-91fa-8b6d60bdbf24",
"name": "付箋6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1504,
-256
],
"parameters": {
"color": 6,
"width": 448,
"height": 464,
"content": "### 🟡 Image Generate:\n\"This node connects to the Ideogram AI API and submits the blog’s tailored image prompt with fixed quality, resolution, and count settings, generating a polished blog visual and returning its direct URL for the next steps.\"\n\n### 🟡 Download Image in Binary File:\n\"This node takes the image URL produced by Ideogram, downloads the file, and converts it into binary format, making the image immediately usable for storage, sharing, or publishing on WordPress.\""
},
"typeVersion": 1
},
{
"id": "f2d28eb9-1156-4782-b62b-516b9260dc88",
"name": "付箋7",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1008,
-256
],
"parameters": {
"color": 6,
"width": 672,
"height": 464,
"content": "### 🟡 Upload Image in WordPress:\n\"Uploads the generated blog image into the WordPress media library using REST API, assigns it a filename from the blog title, and returns a unique media ID for use in the post.\"\n\n### 🟡 Publish Blog on WordPress:\n\"Creates and publishes a new WordPress post with the blog title, content, and embedded uploaded image, returning the post ID for further updates.\"\n\n### 🟡 Set Image as Featured Image:\n\"Updates the published blog post to assign the uploaded image as the featured thumbnail, ensuring the blog appears with a proper cover image on the website.\""
},
"typeVersion": 1
},
{
"id": "68b98d34-8aa7-4624-9434-c9046e9be648",
"name": "付箋8",
"type": "n8n-nodes-base.stickyNote",
"position": [
-304,
-256
],
"parameters": {
"color": 6,
"width": 368,
"height": 464,
"content": "### 🟡 Update row in sheet:\n\"Finds the correct row in the Google Sheet using s. no. and updates it with the blog’s Live Link, keeping the publishing tracker accurate and up-to-date.\"\n\n### 🟡 Send a message (Discord):\n\"Sends an automated notification to the project’s Discord channel, tagging the responsible person and sharing the live blog link so the team can review it immediately.\""
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"executionOrder": "v1"
},
"versionId": "cfad449c-e406-4804-8a8d-88063a1f9fd2",
"connections": {
"bcd14b3a-e70e-4faf-a1a1-db7284796a08": {
"main": [
[
{
"node": "a7d9e1aa-bc4f-4ca8-806c-aca8a8fd7762",
"type": "main",
"index": 0
}
],
[
{
"node": "0405e8b2-c932-448d-8cee-6b1438fd5be7",
"type": "main",
"index": 0
}
]
]
},
"8e9a83db-005f-42bc-acf3-ec2b5dcfc354": {
"main": [
[
{
"node": "e3118468-ded3-4e2c-a9ee-aceb2e2b034f",
"type": "main",
"index": 0
}
]
]
},
"0405e8b2-c932-448d-8cee-6b1438fd5be7": {
"main": [
[],
[
{
"node": "a951e883-0729-4142-9dbc-b9a834bf7408",
"type": "main",
"index": 0
}
]
]
},
"542bf697-9b66-44c9-a1ee-46a013828b00": {
"main": [
[
{
"node": "9fb77411-6eb6-4fb7-859a-3df4eecd47d6",
"type": "main",
"index": 0
}
]
]
},
"a7d9e1aa-bc4f-4ca8-806c-aca8a8fd7762": {
"main": [
[
{
"node": "9823b639-66c5-4cd8-b47d-94dc080e7eae",
"type": "main",
"index": 0
}
]
]
},
"e34a1527-856d-4d83-975e-87eb5b79a5ec": {
"main": [
[
{
"node": "da031e62-192f-4be0-b4e0-df6a60153fe0",
"type": "main",
"index": 0
}
]
]
},
"e9ff48d2-dce5-48bb-a96f-fb7a141a7afe": {
"main": [
[
{
"node": "aa0b797c-fcea-4fdf-8e11-86f16fc453b6",
"type": "main",
"index": 0
}
]
]
},
"b4f07418-a028-456c-8846-e650c23172c4": {
"ai_languageModel": [
[
{
"node": "c48aad87-2bf1-4b0a-a75d-b9722cc6a2da",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"aa0b797c-fcea-4fdf-8e11-86f16fc453b6": {
"main": [
[
{
"node": "c48aad87-2bf1-4b0a-a75d-b9722cc6a2da",
"type": "main",
"index": 0
}
]
]
},
"9fb77411-6eb6-4fb7-859a-3df4eecd47d6": {
"main": [
[
{
"node": "7db51d0d-7467-4b9b-983d-032e0b7b8a5c",
"type": "main",
"index": 0
}
]
]
},
"da031e62-192f-4be0-b4e0-df6a60153fe0": {
"main": [
[
{
"node": "62c25f2c-5311-4df1-8d55-202bbc033843",
"type": "main",
"index": 0
}
]
]
},
"62c25f2c-5311-4df1-8d55-202bbc033843": {
"main": [
[
{
"node": "e9ff48d2-dce5-48bb-a96f-fb7a141a7afe",
"type": "main",
"index": 0
},
{
"node": "0405e8b2-c932-448d-8cee-6b1438fd5be7",
"type": "main",
"index": 0
}
]
]
},
"c48aad87-2bf1-4b0a-a75d-b9722cc6a2da": {
"main": [
[
{
"node": "8e9a83db-005f-42bc-acf3-ec2b5dcfc354",
"type": "main",
"index": 0
}
]
]
},
"2c398975-2f74-43e6-8450-e69392869450": {
"ai_languageModel": [
[
{
"node": "9823b639-66c5-4cd8-b47d-94dc080e7eae",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"ece45d3f-313b-48ab-b086-1250b695ea86": {
"ai_languageModel": [
[
{
"node": "e34a1527-856d-4d83-975e-87eb5b79a5ec",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"eb1985f3-8c5c-47d4-82a9-7f4fa0d07115": {
"ai_languageModel": [
[
{
"node": "da031e62-192f-4be0-b4e0-df6a60153fe0",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"e4217e7b-d2bf-4612-9fd1-b1531d6a076d": {
"ai_languageModel": [
[
{
"node": "62c25f2c-5311-4df1-8d55-202bbc033843",
"type": "ai_languageModel",
"index": 0
}
]
]
},
"4f3f2c07-8388-4ce6-95c1-dad017caa081": {
"main": [
[
{
"node": "ed475e00-2634-40f8-8f86-8c3dd862e013",
"type": "main",
"index": 0
}
]
]
},
"44a76ee6-989a-4c06-a524-d59830a151b2": {
"main": [
[
{
"node": "4f3f2c07-8388-4ce6-95c1-dad017caa081",
"type": "main",
"index": 0
}
]
]
},
"ed475e00-2634-40f8-8f86-8c3dd862e013": {
"main": [
[
{
"node": "fc4a1ec4-7119-4e53-8684-e9892392c98a",
"type": "main",
"index": 0
}
]
]
},
"fc4a1ec4-7119-4e53-8684-e9892392c98a": {
"main": [
[
{
"node": "38ba9188-ccc3-4d64-86de-2563673d5722",
"type": "main",
"index": 0
}
]
]
},
"7db51d0d-7467-4b9b-983d-032e0b7b8a5c": {
"main": [
[
{
"node": "0405e8b2-c932-448d-8cee-6b1438fd5be7",
"type": "main",
"index": 0
}
]
]
},
"9823b639-66c5-4cd8-b47d-94dc080e7eae": {
"main": [
[
{
"node": "e34a1527-856d-4d83-975e-87eb5b79a5ec",
"type": "main",
"index": 0
}
]
]
},
"e3118468-ded3-4e2c-a9ee-aceb2e2b034f": {
"main": [
[
{
"node": "44a76ee6-989a-4c06-a524-d59830a151b2",
"type": "main",
"index": 0
}
]
]
},
"a951e883-0729-4142-9dbc-b9a834bf7408": {
"main": [
[
{
"node": "bcd14b3a-e70e-4faf-a1a1-db7284796a08",
"type": "main",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
WordPressブログの自動化プロフェッショナル版(先端研究)v2.1マーケットプラグイン
GPT-4o、Perplexity AI、そして多言語対応を使ったSEO最適化ブログ作成の自動化
If
Set
Xml
+
If
Set
Xml
125 ノードDaniel Ng
コンテンツ作成
YouTube 動画に基づく自律ブログ公開
YouTube 動画から ChatGPT、Sheets、Apify、Pexels、WordPress を使用してブログの自主公開
If
Set
Code
+
If
Set
Code
80 ノードOriol Seguí
コンテンツ作成
バッチSEOコンテンツ生成とAI画像付きWebflowドラフト作成(テンプレート)
GPT、Gemini画像、Webflowデラフトで行う大量SEOコンテンツ生成
If
Set
Code
+
If
Set
Code
54 ノードDahiana
コンテンツ作成
複数の顧客向けにGemini AIとElementorを使ってSEOブログ記事を生成&スケジュール
Gemini AI、Elementorを使って複数のクライアント向けにSEOブログ記事を生成し、スケジュール
If
N8n
Set
+
If
N8n
Set
39 ノードZain Khan
コンテンツ作成
GPT-4oとGoogle Search Consoleを使用してキーワードキャンバリングを検出
GPT-4oとGoogle Search Consoleを使ってキーワードのスローを検出する
If
Code
Merge
+
If
Code
Merge
27 ノードIncrementors
コンテンツ作成
コンテンツジェネレーター v3
AI驱动ブログ自動化:使用GPT-4生成并公開SEO記事至WordPressとTwitter
If
Set
Code
+
If
Set
Code
144 ノードJay Emp0
コンテンツ作成