私のブログ
上級
これはContent Creation, Multimodal AI分野の自動化ワークフローで、22個のノードを含みます。主にSet, Code, Github, GoogleSheets, Agentなどのノードを使用。 Gemini AI、GitHub、Jekyllを基にした自動ブログ生成と公開
前提条件
- •GitHub Personal Access Token
- •Google Sheets API認証情報
- •Google Gemini API Key
使用ノード (22)
ワークフロープレビュー
ノード接続関係を可視化、ズームとパンをサポート
ワークフローをエクスポート
以下のJSON設定をn8nにインポートして、このワークフローを使用できます
{
"id": "YOUR_WORKFLOW_ID",
"meta": {
"instanceId": "YOUR_INSTANCE_ID",
"templateCredsSetupCompleted": true
},
"name": "My blog",
"tags": [],
"nodes": [
{
"id": "2108f067-2829-4b5c-8ed5-23400753b134",
"name": "Geminiでブログを生成",
"type": "@n8n/n8n-nodes-langchain.agent",
"position": [
-208,
144
],
"parameters": {
"text": "=Write a technical blog post in Markdown using the context and topic below.\n\n## Topic:\n\"{{$json[\"Topic\"]}}\"\n\n## Context:\n{{$json[\"Context\"]}}",
"options": {
"systemMessage": "=You are a blogging assistant. Your job is to generate a complete, high-quality technical blog post in Markdown (`.md`) format. Follow these strict formatting and structure rules so the post can be directly used in a static site generator like Jekyll.\n\n---\n\n## 🔹 Front Matter Block\n\nAt the top of the file, include the following YAML front matter:\n\n---\ntitle: \"BLOG_TITLE\"\ndate: \"{{$now.toFormat('yyyy-MM-dd')}}\"\ncategories: [<blog categories with separtaed by comma>]\ntags: [<comma separated tags for the blog>]\nexcerpt: \"SHORT_EXCERPT_SUMMARIZING_THE_POST\"\nauthor: \"YOUR_NAME\"\n---\n\n## 🧱 Blog Content Structure\n\nAfter the front matter, structure the blog with clear, scannable sections using proper Markdown heading levels.\n\n## Table of Contents\n\nAdd a clickable table of contents using Markdown anchor links:\n## Table of Contents\n- [Introduction](#introduction)\n- [Main Section 1](#main-section-1)\n- [Main Section 2](#main-section-2)\n- ...\n- [Conclusion](#conclusion)\n\n## Introduction\nWrite 1–2 short paragraphs introducing the topic and its relevance to developers or the tech industry.\n\n## Main Content\nBreak down the main body using:\n# for top-level sections\n## for subsections\n### include:\n#### Code snippets using fenced code blocks with language tags (e.g. dart, yaml, bash)\n#### Bullet points and numbered lists\n#### Images using \n#### Links with [Link Text](https://url.com)\n#### Quotes with >\n\n## Conclusion\nSummarize the key takeaways from the blog. You may also include:\nA call to action (e.g. \"Try it yourself!\")\nSuggested reading or resources.\n\n## Markdown Formatting Guidelines\nUse proper heading levels (#, ##, ###)\n\n# Use **bold** and *italic* for emphasis\n# Always format code using triple backticks and the correct language\n# Avoid raw HTML unless absolutely required\n# Keep the writing technical but friendly and easy to follow\n\n## Output Requirements\n\n# Output only the Markdown content\n# Start with the YAML front matter\n# Do not include any explanation, metadata, or extra comments\n# The output must be ready to save as a .md file and publish directly\n\nYou have the access of multiple tools.\n\n## Wikipedia\nuse this tool to search about the blog topic . Also if possiable use the wikipedia image for the blog.\n"
},
"promptType": "define"
},
"typeVersion": 2
},
{
"id": "2f9e8ada-a1c2-4ff7-ab77-473fdcd5904d",
"name": "Wikipediaコンテキストを取得",
"type": "@n8n/n8n-nodes-langchain.toolWikipedia",
"position": [
-32,
384
],
"parameters": {},
"typeVersion": 1
},
{
"id": "cdf3b5fb-31f5-4584-bc74-0cf4f3a8d025",
"name": "ブログタイトルを抽出",
"type": "n8n-nodes-base.set",
"position": [
-1216,
144
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "303ff84c-3343-4ac5-8e4d-4b12c36bdb4f",
"name": "topic",
"type": "string",
"value": "={{ $json.Title }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "e9a37489-7d3f-43d0-aca3-f449ff032b07",
"name": "Google Geminiチャットモデル",
"type": "@n8n/n8n-nodes-langchain.lmChatGoogleGemini",
"position": [
-224,
352
],
"parameters": {
"options": {},
"modelName": "models/gemini-2.5-pro"
},
"credentials": {
"googlePalmApi": {
"id": "YOUR_GEMINI_CREDENTIAL_ID",
"name": "Your Gemini Account"
}
},
"typeVersion": 1
},
{
"id": "44ff6820-0d5d-449f-94f8-1a5b9166b35b",
"name": "検索結果を要約",
"type": "n8n-nodes-base.code",
"position": [
-592,
144
],
"parameters": {
"jsCode": "const topic = $json[\"query\"];\nconst results = $json[\"results\"];\n\nconst context = results.slice(0, 3).map(r => {\n return `### ${r.title}\\n${r.content}\\n[Source](${r.url})\\n`;\n}).join('\\n\\n');\n\nreturn [\n {\n json: {\n Topic: topic,\n Context: context\n }\n }\n];\n\n"
},
"typeVersion": 2
},
{
"id": "6e072fdd-4a78-4105-b443-3eb0e7ae79de",
"name": "ブログ投稿をGitHubにコミット",
"type": "n8n-nodes-base.github",
"position": [
704,
176
],
"webhookId": "YOUR_WEBHOOK_ID",
"parameters": {
"owner": {
"__rl": true,
"mode": "list",
"value": "YOUR_GITHUB_USERNAME",
"cachedResultUrl": "https://github.com/YOUR_GITHUB_USERNAME",
"cachedResultName": "YOUR_GITHUB_USERNAME"
},
"filePath": "=_posts/{{ $json.filePath }}",
"resource": "file",
"repository": {
"__rl": true,
"mode": "list",
"value": "YOUR_REPOSITORY_NAME",
"cachedResultUrl": "https://github.com/YOUR_GITHUB_USERNAME/YOUR_REPOSITORY_NAME",
"cachedResultName": "YOUR_REPOSITORY_NAME"
},
"fileContent": "={{ $json.fileContent }}",
"commitMessage": "={{ $json.commitMessage }}",
"authentication": "oAuth2"
},
"credentials": {
"githubOAuth2Api": {
"id": "YOUR_GITHUB_CREDENTIAL_ID",
"name": "GitHub account"
}
},
"typeVersion": 1.1
},
{
"id": "30e90692-ca16-43f3-beeb-32c113da36a6",
"name": "コミット用ファイルを準備",
"type": "n8n-nodes-base.set",
"position": [
384,
192
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a6800e46-165a-4713-b789-e0047a2196af",
"name": "filePath",
"type": "string",
"value": "={{ $now.format('yyyy-MM-dd') }}-{{ $('Extract Topic').item.json.topic.toLowerCase().replace(/ /g, '-') }}.md"
},
{
"id": "e8672360-e389-498d-8b79-8cccc1a7f918",
"name": "fileContent",
"type": "string",
"value": "={{$json[\"output\"]}}"
},
{
"id": "9794aa09-d0a0-4333-97a6-76364c0f14b1",
"name": "commitMessage",
"type": "string",
"value": "=Add blog post: {{ $('get topic').item.json.Title }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "9a2cac57-7930-48ee-a493-8ca39580a660",
"name": "Tavily Web検索",
"type": "@tavily/n8n-nodes-tavily.tavily",
"position": [
-928,
144
],
"parameters": {
"query": "={{ $json.topic }}",
"options": {
"search_depth": "advanced"
}
},
"credentials": {
"tavilyApi": {
"id": "YOUR_TAVILY_CREDENTIAL_ID",
"name": "Tavily account"
}
},
"typeVersion": 1
},
{
"id": "453f3a77-15c5-41a0-bb67-c5a50369079c",
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
-1776,
144
],
"parameters": {
"rule": {
"interval": [
{
"triggerAtHour": 9
}
]
}
},
"typeVersion": 1.2
},
{
"id": "fa2c8c82-6590-45b1-9727-fff9954dd1c0",
"name": "Googleシートからトピックを取得",
"type": "n8n-nodes-base.googleSheets",
"position": [
-1488,
144
],
"parameters": {
"options": {},
"filtersUI": {
"values": [
{
"lookupValue": "=",
"lookupColumn": "status"
}
]
},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_DOCUMENT_ID/edit#gid=0",
"cachedResultName": "blog list"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEETS_DOCUMENT_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_DOCUMENT_ID/edit?usp=drivesdk",
"cachedResultName": "My blogs"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "YOUR_GOOGLE_SHEETS_CREDENTIAL_ID",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "00c15394-315b-4038-a0c9-203439935c90",
"name": "シートのトピックを完了済みマーク",
"type": "n8n-nodes-base.googleSheets",
"position": [
1184,
176
],
"parameters": {
"columns": {
"value": {
"status": "done",
"row_number": "={{ $json.row_number }}"
},
"schema": [
{
"id": "Title",
"type": "string",
"display": true,
"removed": true,
"required": false,
"displayName": "Title",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "status",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "status",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "row_number",
"type": "number",
"display": true,
"removed": false,
"readOnly": true,
"required": false,
"displayName": "row_number",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [
"row_number"
],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "update",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_DOCUMENT_ID/edit#gid=0",
"cachedResultName": "blog list"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "YOUR_GOOGLE_SHEETS_DOCUMENT_ID",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/YOUR_GOOGLE_SHEETS_DOCUMENT_ID/edit?usp=drivesdk",
"cachedResultName": "My blogs"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "YOUR_GOOGLE_SHEETS_CREDENTIAL_ID",
"name": "Google Sheets account"
}
},
"typeVersion": 4.6
},
{
"id": "3ece85bb-0962-40e9-b16e-c6a7f42b8072",
"name": "付箋ノート",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2656,
-784
],
"parameters": {
"width": 752,
"height": 640,
"content": "## Automated Blog Creation \n\n**Description:**\nThis workflow automatically generates a complete blog post from a user-provided topic using an LLM (e.g., OpenAI, Gemini). It formats the content as Markdown, commits it directly to a specified GitHub repository, and triggers a Jekyll build—so your blog is live in minutes.\n\n**Features:**\n- User inputs a topic or prompts the workflow.\n- LLM generates and formats the blog post in Markdown.\n- The generated file is committed/pushed to GitHub.\n- (Optional) Triggers GitHub Pages + Jekyll build to update your site.\n- Fully automated, customizable, and end-to-end.\n\n**Required Integrations:**\n- LLM (OpenAI or similar; set API key in credentials)\n- GitHub (personal access token, target repository)\n- Jekyll static site (hosted on GitHub Pages)\n\n**Instructions/Setup:**\n1. Import the attached workflow JSON in your n8n instance.\n2. Set up credentials for Gemini (or chosen LLM provider).\n3. Set up GitHub credentials and specify repository path.\n4. (Optional) Adjust prompt/parameters for the LLM as desired.\n5. Deploy. On run, your blog will be generated and published automatically."
},
"typeVersion": 1
},
{
"id": "4acd5668-eab7-4883-b531-729a7c2b6a1c",
"name": "付箋ノート1",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1840,
16
],
"parameters": {
"width": 256,
"height": 288,
"content": "## Trigger node\n##### Configure the node for your preference or else you can use other option as well."
},
"typeVersion": 1
},
{
"id": "ac9b8a20-36dc-4231-9317-6c026325ce35",
"name": "付箋ノート2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1552,
16
],
"parameters": {
"height": 288,
"content": "## Get Topic from spreadsheet\n##### This will capture the topic which is not done yet."
},
"typeVersion": 1
},
{
"id": "1be2f024-a34d-4b0c-980f-74b1ebd520b5",
"name": "付箋ノート3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1280,
16
],
"parameters": {
"height": 288,
"content": "## Extract topic\n##### This will extract topic text from the sheet node."
},
"typeVersion": 1
},
{
"id": "0d800dd4-0e8d-4558-b5bd-f632026a144c",
"name": "付箋ノート4",
"type": "n8n-nodes-base.stickyNote",
"position": [
-1024,
-32
],
"parameters": {
"width": 320,
"height": 336,
"content": "## Deep Search about topic\n##### We have a system node that gathers information about a given topic from the web, providing relevant links and concise summaries."
},
"typeVersion": 1
},
{
"id": "7cffee89-e9aa-474b-83d9-08081767c575",
"name": "付箋ノート5",
"type": "n8n-nodes-base.stickyNote",
"position": [
-688,
-32
],
"parameters": {
"width": 320,
"height": 336,
"content": "## Format the result\n##### We have a system that receives input containing details about a topic along with associated links from a prior node. This new node extracts those details and formats them in a predefined sequence or structure.."
},
"typeVersion": 1
},
{
"id": "8524831c-4db2-4124-9eb9-a404d9e9fcbb",
"name": "付箋ノート6",
"type": "n8n-nodes-base.stickyNote",
"position": [
-320,
16
],
"parameters": {
"width": 496,
"height": 528,
"content": "## Ai agent\n##### We have a standardized system prompt that accepts a topic and a set of relevant search results from Tavily. The prompt then generates a well-structured markdown file formatted as a blog post"
},
"typeVersion": 1
},
{
"id": "82fe6efb-29e8-4253-9e96-47ba5ae81e95",
"name": "付箋ノート7",
"type": "n8n-nodes-base.stickyNote",
"position": [
192,
16
],
"parameters": {
"width": 400,
"height": 368,
"content": "## Set the file for github upload\n#####This node retrieves data generated by the AI agent and formats it according to standardized conventions, preparing the content for seamless upload and integration into a GitHub repository."
},
"typeVersion": 1
},
{
"id": "43e7bf08-4d0e-413a-b3ac-17d7aabc64a0",
"name": "付箋ノート8",
"type": "n8n-nodes-base.stickyNote",
"position": [
624,
16
],
"parameters": {
"width": 336,
"height": 384,
"content": "## Github upload\n##### This will upload to a github repo."
},
"typeVersion": 1
},
{
"id": "d515051d-b03e-4329-9a11-a53996b9a9dd",
"name": "付箋ノート9",
"type": "n8n-nodes-base.stickyNote",
"position": [
1008,
16
],
"parameters": {
"width": 416,
"height": 384,
"content": "## Change status\n##### Once the file is uploaded to GitHub, the status of the corresponding topic in the Google Spreadsheet will be updated to “Done.”"
},
"typeVersion": 1
},
{
"id": "5d623cb5-f839-4412-9e54-18de267dc2ee",
"name": "付箋ノート10",
"type": "n8n-nodes-base.stickyNote",
"position": [
-2656,
-128
],
"parameters": {
"width": 752,
"height": 832,
"content": "# n8n Integrations & GitHub Pages Jekyll Setup\n\n## Prerequisites\n- n8n account access\n- Tavily API key\n- Google Account for Sheets\n- LLM API key\n- GitHub account\n\n## Steps\n\n1. **Tavily API Key**\n - Sign up at [https://www.tavily.com/](https://www.tavily.com/)\n - Obtain your API key from the dashboard\n\n2. **Google Sheets Setup**\n - Add credentials in n8n and authenticate\n\n3. **LLM Connection**\n - Add LLM credentials in n8n and test\n\n4. **GitHub OAuth Setup**\n - Authorize and connect via OAuth in n8n\n\n5. **Jekyll Setup for GitHub Pages**\n - Create a repository (`<username>.github.io`)\n - Initialize a Jekyll site locally\n - Push site files to GitHub\n - Enable GitHub Pages for the repository\n - Configure `_config.yml` if needed\n"
},
"typeVersion": 1
}
],
"active": false,
"pinData": {},
"settings": {
"timezone": "Asia/Kolkata",
"callerPolicy": "workflowsFromSameOwner",
"executionOrder": "v1"
},
"versionId": "YOUR_VERSION_ID",
"connections": {
"Search": {
"main": [
[
{
"node": "summerise the resut",
"type": "main",
"index": 0
}
]
]
},
"AI Agent": {
"main": [
[
{
"node": "set files",
"type": "main",
"index": 0
}
]
]
},
"Wikipedia": {
"ai_tool": [
[
{
"node": "AI Agent",
"type": "ai_tool",
"index": 0
}
]
]
},
"get topic": {
"main": [
[
{
"node": "Extract Topic",
"type": "main",
"index": 0
}
]
]
},
"set files": {
"main": [
[
{
"node": "Create a file",
"type": "main",
"index": 0
}
]
]
},
"Create a file": {
"main": [
[
{
"node": "Update Status",
"type": "main",
"index": 0
}
]
]
},
"Extract Topic": {
"main": [
[
{
"node": "Search",
"type": "main",
"index": 0
}
]
]
},
"453f3a77-15c5-41a0-bb67-c5a50369079c": {
"main": [
[
{
"node": "get topic",
"type": "main",
"index": 0
}
]
]
},
"summerise the resut": {
"main": [
[
{
"node": "AI Agent",
"type": "main",
"index": 0
}
]
]
},
"e9a37489-7d3f-43d0-aca3-f449ff032b07": {
"ai_languageModel": [
[
{
"node": "AI Agent",
"type": "ai_languageModel",
"index": 0
}
]
]
}
}
}よくある質問
このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
ブログパブリッシャー – 完全AI駆動のコンテンツ調査、作成、最適化、公開の自動化
Gemini、Ideogram AI、WordPress でブログ作成と公開を自動化
If
Set
Code
+
If
Set
Code
35 ノードIncrementors
コンテンツ作成
コンテンツ集約
Gemini AIを使ってウェブ記事からLinkedInとX/Twitterへのソーシャルメディア投稿を自動化する
If
Set
Xml
+
If
Set
Xml
34 ノードVadim
コンテンツ作成
Instagram、YouTube Shorts等で活用のアイツーリステート動画ジェネレーター(GPT-4o、RunwayML、ElevenLabs利用)
GPT-4o、RunwayML、ElevenLabsソーシャルメディアアプリケーション
Set
Code
Wait
+
Set
Code
Wait
36 ノードMohan Gopal
コンテンツ作成
複数の顧客向けにGemini AIとElementorを使ってSEOブログ記事を生成&スケジュール
Gemini AI、Elementorを使って複数のクライアント向けにSEOブログ記事を生成し、スケジュール
If
N8n
Set
+
If
N8n
Set
39 ノードZain Khan
コンテンツ作成
Gemini AI と Flux 画像生成で人気投稿分析から LinkedIn コンテンツを自動作成
人気の投稿分析を通じて Gemini AI と Flux 画像生成による LinkedIn コンテンツの自動作成
Code
Wait
Filter
+
Code
Wait
Filter
20 ノードRoshan Ramani
コンテンツ作成
Groq、Gemini、Slack承認システムを使用してRSSからMediumへの公開を自動化
Groq、Gemini、Slack承認システムを用いたRSSからMediumへの自動公開プロセス
If
Set
Code
+
If
Set
Code
41 ノードObisDev
コンテンツ作成
ワークフロー情報
難易度
上級
ノード数22
カテゴリー2
ノードタイプ10
作成者
Saswat Saubhagya Rout
@saswatsaubhagya外部リンク
n8n.ioで表示 →
このワークフローを共有