Google Trends から WordPress へ SEOブログジェネレーター
これはContent Creation, Miscellaneous, Multimodal AI分野の自動化ワークフローで、24個のノードを含みます。主にSet, Code, Aggregate, Wordpress, HttpRequestなどのノードを使用。 GPTとPerplexity AIを使用して、Google TrendsからSEOブログ記事をWordPressへ生成
- •ターゲットAPIの認証情報が必要な場合あり
- •Google Sheets API認証情報
- •OpenAI API Key
{
"meta": {
"instanceId": "e5475e3f5ea4317f0b981b80d6948e4bd2ba92e8c8af9ecbbaf8d90708882234"
},
"nodes": [
{
"id": "de7e7025-fa2a-42f1-a0b7-ded8f9268d0a",
"name": "Google Trendsを取得",
"type": "n8n-nodes-base.httpRequest",
"position": [
1328,
608
],
"parameters": {
"url": "https://serpapi.com/search?engine=google_trends",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "=ai agent"
},
{
"name": "geo",
"value": "US"
},
{
"name": "hl",
"value": "en"
},
{
"name": "date",
"value": "={{ $now.minus({ days: 3 }).format('yyyy-MM-dd') }} {{ $now.format('yyyy-MM-dd') }}"
},
{
"name": "data_type",
"value": "RELATED_QUERIES"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "dbc47254-c260-44aa-86b8-183b68e9d500",
"name": "調査フォーマットを変換",
"type": "n8n-nodes-base.set",
"position": [
2736,
608
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "23b8e8c4-9191-415a-9661-1b60d413528a",
"name": "research",
"type": "string",
"value": "={{ $json.choices[0].message.content.replaceAll(\"[1]\", \" - source: \" +$json.citations[0]).replaceAll(\"[2]\",\" - source:\" +$json.citations[1]).replaceAll(\"[3]\",\" - source: \" +$json.citations[2]).replaceAll(\"[4]\",\" - source: \"+$json.citations[3]).replaceAll(\"[5]\",\" - source: \"+$json.citations[4]).replaceAll(\"[6]\",\" - source: \"+$json.citations[5]).replaceAll(\"[7]\",\" - source: \"+$json.citations[6]).replaceAll(\"[8]\",\" - source: \"+$json.citations[7]).replaceAll(\"[9]\",\" - source: \"+$json.citations[8]).replaceAll(\"[10]\",\" - source: \"+$json.citations[9]) }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "4209d536-18d9-40f2-98b2-c0854d4cc82a",
"name": "内部リンクデータセットを準備",
"type": "n8n-nodes-base.aggregate",
"position": [
1728,
896
],
"parameters": {
"options": {},
"aggregate": "aggregateAllItemData",
"destinationFieldName": "previous-posts"
},
"typeVersion": 1
},
{
"id": "e1acf94f-f7af-455d-b9f6-79808d9611a9",
"name": "カバー画像URLを保存",
"type": "n8n-nodes-base.set",
"position": [
1392,
1184
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "1f0541df-05ab-4e3d-a5d8-3904579fc8a9",
"name": "image-url",
"type": "string",
"value": "={{ $json.images_results[1].original }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "d78d08b5-2307-42cf-915c-ad31d3d6ade1",
"name": "スケジュールトリガー",
"type": "n8n-nodes-base.scheduleTrigger",
"position": [
1088,
608
],
"parameters": {
"rule": {
"interval": [
{}
]
}
},
"typeVersion": 1.2
},
{
"id": "0080012b-4f35-4588-a5e1-fcea4f9bd871",
"name": "付箋",
"type": "n8n-nodes-base.stickyNote",
"position": [
0,
-128
],
"parameters": {
"color": 5,
"width": 920,
"height": 2056,
"content": "# Auto-generate SEO blog posts from Google Trends to WordPress\n\nThis workflow provides complete blog automation from trend detection to publication. It eliminates manual content research, writing, and publishing by using AI agents, Google Trends analysis, and WordPress integration for hands-free blog management.\n\n## Overview\n\nThis workflow automatically handles the entire blog creation pipeline using advanced AI coordination and SEO optimization. It manages trend discovery, topic selection, content research, writing, HTML formatting, and WordPress publishing with built-in internal linking and comprehensive logging.\n\n**Core Function**: Autonomous blog generation that transforms trending topics into SEO-optimized WordPress posts with zero manual intervention.\n\n## Key Capabilities\n\n* **Automated trend detection** - Discovers emerging topics using Google Trends via SerpAPI\n* **AI-powered topic selection** - Intelligent evaluation of search volume, intent, and competition\n* **Content research automation** - Perplexity API integration for reliable source gathering\n* **SEO-optimized writing** - AI agents create keyword-focused, engaging content\n* **Internal linking intelligence** - Automatic cross-linking with existing posts for SEO boost\n* **WordPress publishing** - Direct publication with proper HTML formatting and metadata\n* **Performance tracking** - Complete logging in Google Sheets for analytics\n\n## Tools Used\n\n* **n8n**: Workflow orchestration and AI agent coordination\n* **SerpAPI**: Google Trends data and image sourcing for trend analysis\n* **Perplexity API**: Reliable content research and fact verification\n* **OpenRouter/OpenAI**: Multiple AI agents for specialized content tasks\n* **WordPress API**: Direct publishing with full metadata control\n* **Google Sheets**: Performance logging and internal link database\n* **Built-in SEO Logic**: Slug generation, meta descriptions, and HTML optimization\n\n## How to Install\n\n1. **Import the Workflow**: Download the JSON file and import into your n8n instance\n2. **Configure APIs**: Set up SerpAPI, Perplexity, and OpenRouter credentials\n3. **WordPress Integration**: Add WordPress site credentials and API access\n4. **Google Sheets Setup**: Create tracking sheet and configure connection\n5. **Schedule Configuration**: Set desired publication frequency (daily/weekly)\n6. **Test Run**: Execute manually first to verify all integrations\n\n## Use Cases\n\n* **Content Marketing Automation**: Maintain consistent blog publishing without manual work\n* **SEO Content Scaling**: Generate optimized posts targeting trending keywords\n* **Authority Building**: Regular publication on trending topics in your niche\n* **Traffic Generation**: Capture search traffic from emerging trends early\n* **Content Calendar Management**: Automated scheduling and publication pipeline\n* **Internal Link Building**: Systematic SEO improvement through cross-linking\n\n## Setup requirements\n\n- **SerpAPI account**: For Google Trends data and image sourcing\n- **Perplexity API**: For content research and fact-checking\n- **OpenRouter account**: Access to multiple AI models for content generation\n- **WordPress site**: With API access enabled for automated publishing\n- **Google Sheets**: For performance tracking and link database\n\nTotal setup time: 15-20 minutes with all API accounts configured.\n\n## How to customize\n\n**Topic Focus**: Modify trend detection keywords and search parameters for your niche. Adjust topic selection criteria based on your content strategy.\n\n**Content Style**: Customize AI writing prompts to match your brand voice, adjust article length requirements, or modify HTML template structure.\n\n**SEO Strategy**: Update internal linking logic, modify meta description templates, or adjust keyword optimization parameters.\n\n**Publishing Schedule**: Change automation frequency, add content review steps, or integrate with additional platforms like social media.\n\n## Connect with Me\n\n* **LinkedIn**: https://www.linkedin.com/in/daniel-lianes/\n* **Discovery Call**: https://cal.com/averis/asesoria\n* **Consulting Session**: https://cal.com/averis/consultoria-personalizada\n\n#n8n #automation #wordpress #seo #contentmarketing #ai #blogging #googletrends #serpapi #perplexity #workflow #contentautomation #seooptimization #aiwriting #blogautomation #digitalmarketing\n\n---\n\n"
},
"typeVersion": 1
},
{
"id": "468c22d2-13a1-4110-a4bb-de96342c36c0",
"name": "上位2つのトレンドを抽出",
"type": "n8n-nodes-base.set",
"position": [
1600,
608
],
"parameters": {
"mode": "raw",
"options": {},
"jsonOutput": "={\n \"most-trending\": {\n\n \"#1\": { \n\n \"query\":\"{{ $json.related_queries.rising[0].query }}\",\n \"score\":\"{{ $json.related_queries.rising[0].extracted_value }}\"\n\n },\n\n\n \"#2\": { \n\n \"query\":\"{{ $json.related_queries.rising[1].query }}\",\n \"score\":\"{{ $json.related_queries.rising[1].extracted_value }}\"\n\n }\n }\n}"
},
"typeVersion": 3.4
},
{
"id": "a4a393e5-2802-4986-b088-eeefaa0ee43b",
"name": "高ボリュームキーワードをフィルタリング",
"type": "n8n-nodes-base.code",
"position": [
1840,
608
],
"parameters": {
"jsCode": "// Get the top array from your JSON\nconst topItems = $('Get Google Trends').first().json.related_queries.top;\n\n// Filter the items to only include those with extracted_value > 30\nconst filtered = topItems.filter(item => item.extracted_value > 30);\n\n// Map the filtered items to their query values and join them with commas\nconst resultString = filtered.map(item => item.query).join(', ');\n\n// Return the result in a new JSON property\nreturn [{ json: { result: resultString } }];\n"
},
"typeVersion": 2
},
{
"id": "ef2c3a0e-a0e0-4226-950a-e9ffa76d308e",
"name": "最適なSEOトピックを選択",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2112,
608
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4",
"cachedResultName": "GPT-4"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are part of a team that creates world class blog posts. Your job is to choose the topic for each blog post. \n\nThe blog posts are posted on the website of a [COMPANY NAME + DESCRIPTION + PRODUCTS + TARGET MARKET]. The blog posts are mainly posted as part of an SEO campaign to get [COMPANY NAME] to rank high for its products and services.\n\nIn this instance, you are given a list of 2 keywords which have been trending the most on Google news search over the past few days. \n\nYour job is to pick one which you think would make for the most relevant blog post with the best SEO outcomes for the client. \n\nThe keywords have two attributes: \n\n1. query: This attribute determines the search query that users have been searching for which is trending. \n\n2. value: This attribute determines what percentage increase the keyword has seen compared to previous periods (i.e. the increase in search volume). \n\nYou must choose one out of the taking into consideration both the relevance of the keyword for [COMPANY NAME's] SEO efforts and the comparative trendiness determined by the value attribute. \n\nOutput the keyword you decided to post a blog on and nothing else. Don't explain your reasoning. Just output the keyword. \n\nThis instance: \n\nKeyword 1:\n{{ $('Extract Top 2 Trends').item.json['most-trending']['#1'].toJsonString() }} \n\nKeyword2: \n{{ $('Extract Top 2 Trends').item.json['most-trending']['#2'].toJsonString() }} "
}
]
}
},
"credentials": {
"openAiApi": {
"id": "UTi3Hh062Ao84SGu",
"name": "OpenAi Averis"
}
},
"typeVersion": 1.8
},
{
"id": "12da6344-e832-46ac-bdd7-4a0f3bb40db0",
"name": "信頼できる情報源を調査",
"type": "n8n-nodes-base.httpRequest",
"position": [
2496,
608
],
"parameters": {
"url": "https://api.perplexity.ai/chat/completions",
"method": "POST",
"options": {},
"jsonBody": "={\n \"model\": \"sonar-pro\",\n \"messages\": [\n {\n \"role\": \"system\",\n \"content\": \"Act as a professional news researcher who is capable of finding detailed summaries about a news topic from highly reputable sources.\"\n },\n {\n \"role\": \"user\",\n \"content\": \" Research the following topic and return everything you can find: '{{ $('Select Best SEO Topic').item.json.message.content }}' \"\n }\n ]\n}\n",
"sendBody": true,
"specifyBody": "json",
"authentication": "genericCredentialType",
"genericAuthType": "httpHeaderAuth"
},
"credentials": {
"httpHeaderAuth": {
"id": "3P23x7U4eYW4f3nU",
"name": "Twitter-API.io"
}
},
"typeVersion": 4.2
},
{
"id": "1ed934d0-921a-4deb-a794-27ea4c1ac8f2",
"name": "ブログコンテンツを下書き",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1120,
896
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4",
"cachedResultName": "GPT-4"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are part of a team that creates world class blog posts for SEO purposes. \n\nEvery week your team posts one blog post on the most trending news in this week of AI. As the copywriter for the blogs, you are provided with the folling information: \n\n- Query: The topic of this weeks blog post. This is the most trending news in the space.\n\n- Other keywords: This is a list of some high search volume keywords in the AI space. The goal is to include some of these into the blog post naturally. This is only optional and dependant on the natural dependancy of this weeks topic to the blog post. Include any of the keywords in the blog, if you can do so naturally without changing the meaning of the blog post. \n\n\n- Research findings: This is research found from very reputable resources in relation to the topic of the post. Your blog post must be based off this research.\n\n\nGiven the said info, you must write the blog post.\n \nThe blog post must: \n\n- Place the query in the blog title, H1 header and early in the introduction. \n\n- Include all detail in research findings. When including the research points, make sure to also include their source URL so that the copywriter can use them as hyperlinks. (source url for each statement is given in the research findings next to the text)\n\n- Be very detailed. \n\n- Be using tone similar to that of a reporter, invoking curiosity and excitement and thrill in the readers.\n\n- Flow naturally and make sense. \n\n- Be at minimum 1500 to 2000 words long. \n\n- Be suitable for a year 5 reading level. \n\nMake sure to create the entire blog post draft in your first output. Don't stop or cut it short. \n\nYour output must be the blog post and nothing else.\n\nHere are the details of your next blog post project: \n\nQuery: \n{{ $('Select Best SEO Topic').item.json.message.content }}\n\nDetailed Research: \n{{ $json.research }}\n\nWrite the blog post in perfect spanish.\n"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "UTi3Hh062Ao84SGu",
"name": "OpenAi Averis"
}
},
"typeVersion": 1.8
},
{
"id": "ce242655-b51c-4ff3-8374-1ac63dc6b2f7",
"name": "過去の投稿を検索",
"type": "n8n-nodes-base.googleSheets",
"position": [
1520,
896
],
"parameters": {
"options": {},
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D-dJ9OrRpJQ3QrUqXDQSZnJOf4iO0kw17A3G_gxDI3k/edit#gid=0",
"cachedResultName": "Hoja 1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1D-dJ9OrRpJQ3QrUqXDQSZnJOf4iO0kw17A3G_gxDI3k",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1D-dJ9OrRpJQ3QrUqXDQSZnJOf4iO0kw17A3G_gxDI3k/edit?usp=drivesdk",
"cachedResultName": "CONTROL BLOG WEB"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "OeyDebGZ6hnXoE0m",
"name": "Google Sheets daniel@averis.es"
}
},
"typeVersion": 4.5,
"alwaysOutputData": true
},
{
"id": "d3d3e76f-12fb-4bac-b4af-d61cf2b0c9c3",
"name": "内部SEOリンクを挿入",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1904,
896
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "o1-mini-2024-09-12",
"cachedResultName": "O1-MINI-2024-09-12"
},
"options": {},
"messages": {
"values": [
{
"content": "=You are part of a SPANISH team that creats world class blog posts. \n\nYou are in charge of internal linking between blog posts. \n\nFor each new blog post that comes across your desk, your job is to look through previously posted blogs and make atleast 5 internal links. \n\nTo choose the best internal linking opportunities you must: \n\n- Read the previous blog post summaries and look through their keywords. If there is a match where the previous blog post is highly relevant, then this is an internal linking opportunity. \n\n- Do not link if it is not highly relevant. Only make a link if it makes sense and adds value for the reader. \n\nOnce you've found the best linking opportunities, you must update the blog post with the internal links. To do this you must: \n\n- Add the link of the previous blog post at the relevant section of the new blog post. Drop the URL at the place which makes most sense. Later we will hyperlink the URL to the word in the blog post which it is placed next to. So your placing is very important. \n\nMake sure to not delete any existing URLs or change anything about the blog post provided to you. You must only add new internal linking URLs and output the revised blog post. \n\nYour output must be the blog post given to you plus the new urls. Don't remove any info. \n\nDon't return the previous blog posts. Only return the current blog post with the internal links added.\n\nCurrent blog Post: \n{{ $('Draft Blog Content').item.json.message.content }}\n\nPrevious Blog Posts: \n{{ $json['previous-posts'].toJsonString().split() }}\n\n"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "UTi3Hh062Ao84SGu",
"name": "OpenAi Averis"
}
},
"typeVersion": 1.8
},
{
"id": "8638519e-a8cb-4259-bb4f-de1e7d13dfda",
"name": "セマンティックHTMLを生成",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2288,
896
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "o1-preview",
"cachedResultName": "O1-PREVIEW"
},
"options": {},
"messages": {
"values": [
{
"content": "=DO NOT OUTPUT ANYTHING OTHER THAN THE CODE. I want you to follow the layout of the template as a guide to generate the WordPress code for a blog post. Here are the rules to follow:\n\nThe blog post should have a title, estimated reading time, key takeaways, table of contents, body, and FAQ in this order.\nMake it engaging by using italics, dot points, quotes, bold, spaces, and sometimes new lines. Never use emojis.\nThe blog post will have some URLs referenced next to certain keyphrases to show where the info came from. You must hyperlink the keyphrase with the provided URL so that the reader can click on the referenced URL. It is critical you get this right.\nWrap the entire content in a container <div> with inline CSS that sets the text color to white (#ffffff), uses a legible font such as Arial, sans-serif, and sets line-height to 1.6.\nEnsure that all non-heading text elements (e.g., paragraphs, list items) have an inline style or embedded style that sets their font size to 20px and color to white (#ffffff) using !important to override theme styles.\nHyperlinks, points in the table of contents, and FAQ questions must be styled in blue (#00c2ff).\nAll headings and subheadings should have an underline implemented via a bottom border in blue (#00c2ff) with appropriate padding.\nPlace a double break (<br><br>) between each section to improve readability.\nDo not output any extra text or mention code tags like HTML''' around the output; just output the HTML code.\nBlog post: \n\n{{ $json.message.content }}\n\nHere's an example of a well formatted output:\n\n<div style=\"color: #ffffff; font-family: Arial, sans-serif; line-height: 1.6;\"> <style> p, .wp-block-paragraph, ul.wp-block-list, li { color: #ffffff !important; font-size: 20px !important; } a { color: #00c2ff !important; } </style> <h1 id=\"h-devin-ai-the-hype-and-reality-of-an-ai-software-engineer\" class=\"wp-block-heading\" style=\"border-bottom: 2px solid #00c2ff; padding-bottom: 5px;\">Devin AI: The Hype and Reality of an AI Software Engineer</h1> <br><br> <p class=\"estimated-reading-time\" style=\"color: #ffffff; font-size: 20px !important;\">Estimated reading time: 5 minutes</p> <br><br> <h2 id=\"h-key-takeaways\" class=\"wp-block-heading\" style=\"border-bottom: 2px solid #00c2ff; padding-bottom: 5px;\"><strong>Key Takeaways</strong></h2> <br><br> <ul class=\"wp-block-list\"> <li><mark style=\"background-color: #ffd966;\"><strong>Devin AI</strong></mark> claims to be the world's first fully autonomous AI software engineer.</li> <br><br> <li>Initial demos and claims have generated significant <mark style=\"background-color: #ffff00;\">hype</mark> and interest.</li> <br><br> <li>Critics argue some capabilities may be exaggerated or misleading.</li> <br><br> <li>Real-world testing reveals both <em>strengths</em> and <em>limitations</em>.</li> <br><br> <li>The true impact on software engineering remains to be seen.</li> </ul> <br><br> <div class=\"wp-block-yoast-seo-table-of-contents yoast-table-of-contents\"> <h2 style=\"color: #ffffff; border-bottom: 2px solid #00c2ff; padding-bottom: 5px;\">Table of contents</h2> <br><br> <ul> <li><a href=\"#h-devin-ai-the-hype-and-reality-of-an-ai-software-engineer\" data-level=\"1\">Devin AI: The Hype and Reality of an AI Software Engineer</a></li> <br><br> <li><a href=\"#h-key-takeaways\" data-level=\"2\">Key Takeaways</a></li> <br><br> <li><a href=\"#h-what-is-devin-ai\" data-level=\"2\">What is Devin AI?</a></li> <br><br> <li><a href=\"#h-the-hype-around-devin-ai\" data-level=\"2\">The Hype Around Devin AI</a></li> <br><br> <li><a href=\"#h-putting-devin-to-the-test\" data-level=\"2\">Putting Devin to the Test</a></li> <br><br> <li><a href=\"#h-the-reality-check\" data-level=\"2\">The Reality Check</a></li> <br><br> <li><a href=\"#h-the-future-of-ai-in-software-development\" data-level=\"2\">The Future of AI in Software Development</a></li> <br><br> <li><a href=\"#h-frequently-asked-questions\" data-level=\"2\">Frequently Asked Questions</a></li> </ul> </div> <br><br> <p>Devin AI has burst onto the tech scene, promising to revolutionize software development as we know it. But does this AI-powered coding assistant live up to the hype? Let's dive into what Devin AI really is, what it can do, and what developers are saying after putting it to the test.</p> <br><br> <!-- Rest of blog post content goes here --> </div>\n"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "UTi3Hh062Ao84SGu",
"name": "OpenAi Averis"
}
},
"typeVersion": 1.8
},
{
"id": "06cc783c-61c6-4a9a-b323-262ba6fb1c25",
"name": "SEOスラッグを作成",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2608,
896
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"messages": {
"values": [
{
"content": "=Create a slug for the following blog post: \n{{ $('Insert Internal SEO Links').item.json.message.content }}\n\nA slug in a blog post is the part of the URL that comes after the domain name and identifies a specific page. It is typically a short, descriptive phrase that summarizes the content of the post, making it easier for users and search engines to understand what the page is about. For example, in the URL www.example.com/intelligent-agents, the slug is intelligent-agents. A good slug is concise, contains relevant keywords, and avoids unnecessary words to improve readability and SEO. \n\nThe slug must be 4 or 5 words max and must include the primary keyword of the blog post which is {{ $('Select Best SEO Topic').item.json.message.content }}\n\nYour output must be the slug and nothing else so that I can copy and paste your output and put it at the end of my blog post URL to post it right away. "
}
]
}
},
"credentials": {
"openAiApi": {
"id": "UTi3Hh062Ao84SGu",
"name": "OpenAi Averis"
}
},
"typeVersion": 1.8
},
{
"id": "b205436c-d54d-4feb-b61a-623283be197f",
"name": "ブログタイトルを生成",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
2992,
896
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-2024-11-20",
"cachedResultName": "GPT-4O-2024-11-20"
},
"options": {},
"messages": {
"values": [
{
"content": "=Extract the blog post title from the following blog post: \n{{ $('Insert Internal SEO Links').item.json.message.content }}\n\n\n\nThe blog post title must include the primary keyword '{{ $('Select Best SEO Topic').item.json.message.content }}' and must inform the users right away of what they can expect from reading the blog post. \n\n- Don't put the output in \"\". The output should just text with no markdown or formatting. \n\nYour output must only be the blog post title and nothing else. "
}
]
}
},
"credentials": {
"openAiApi": {
"id": "UTi3Hh062Ao84SGu",
"name": "OpenAi Averis"
}
},
"typeVersion": 1.8
},
{
"id": "c27126d7-1bd6-4d92-834f-e72fb99051a5",
"name": "メタディスクリプションを作成",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
3376,
896
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-2024-11-20",
"cachedResultName": "GPT-4O-2024-11-20"
},
"options": {},
"messages": {
"values": [
{
"content": "=Create a good meta description for the following blog post: \n\n{{ $('Insert Internal SEO Links').item.json.message.content }}\n\nA good meta description for a blog post that is SEO-optimized should:\n- Be Concise: Stick to 150-160 characters to ensure the full description displays in search results. \n- Include Keywords: Incorporate primary keywords naturally to improve visibility and relevance to search queries.\n\nPrimary keyword = {{ $('Select Best SEO Topic').item.json.message.content }}\n\n\n- Provide Value: Clearly describe what the reader will learn or gain by clicking the link. \n\n- Be Engaging: Use persuasive language, such as action verbs or a question, to encourage clicks. \n\n- Align with Content: Ensure the description accurately reflects the blog post to meet user expectations and reduce bounce rates. \n\nYour output must only be the meta description and nothing else. \n"
}
]
}
},
"credentials": {
"openAiApi": {
"id": "UTi3Hh062Ao84SGu",
"name": "OpenAi Averis"
}
},
"typeVersion": 1.8
},
{
"id": "056b2d84-3167-41cf-860e-716d32ed6847",
"name": "カバー画像を取得",
"type": "n8n-nodes-base.httpRequest",
"position": [
1136,
1184
],
"parameters": {
"url": "https://serpapi.com/search?engine=google_images",
"options": {},
"sendQuery": true,
"authentication": "genericCredentialType",
"genericAuthType": "httpQueryAuth",
"queryParameters": {
"parameters": [
{
"name": "q",
"value": "={{ $('Select Best SEO Topic').item.json.message.content }}"
},
{
"name": "gl",
"value": "us"
}
]
}
},
"typeVersion": 4.2
},
{
"id": "16721919-87a9-4cb5-b71b-26cc24a68f93",
"name": "WordPressに公開",
"type": "n8n-nodes-base.wordpress",
"position": [
1616,
1184
],
"parameters": {
"title": "={{ $('Generate Blog Title').item.json.message.content }}",
"additionalFields": {
"slug": "={{ $('Create SEO Slug').item.json.message.content }}",
"status": "draft",
"sticky": false,
"content": "=<img src=\"{{ $json['image-url'] }}\" alt=\"Cover Image\">\n{{ $('Generate Semantic HTML').item.json.message.content }}}",
"authorId": 5,
"categories": [
43
],
"postTemplate": {
"values": {}
},
"commentStatus": "closed"
}
},
"typeVersion": 1
},
{
"id": "9298b0b6-c50e-47b7-9150-a25d618118ff",
"name": "公開済み投稿を記録",
"type": "n8n-nodes-base.googleSheets",
"position": [
1856,
1184
],
"parameters": {
"columns": {
"value": {
"Link": "={{ $json.link }}",
"Título": "={{ $json.title.raw }}"
},
"schema": [
{
"id": "Link",
"type": "string",
"display": true,
"required": false,
"displayName": "Link",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Título",
"type": "string",
"display": true,
"required": false,
"displayName": "Título",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Transcripción",
"type": "string",
"display": true,
"required": false,
"displayName": "Transcripción",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "Estado",
"type": "string",
"display": true,
"required": false,
"displayName": "Estado",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "HTML",
"type": "string",
"display": true,
"required": false,
"displayName": "HTML",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
},
"options": {},
"operation": "append",
"sheetName": {
"__rl": true,
"mode": "list",
"value": "gid=0",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TXJxLUoreFyiz4Fx9U_Lna3Zpgjs0kfgUgd2Ng4uXQw/edit#gid=0",
"cachedResultName": "Hoja 1"
},
"documentId": {
"__rl": true,
"mode": "list",
"value": "1TXJxLUoreFyiz4Fx9U_Lna3Zpgjs0kfgUgd2Ng4uXQw",
"cachedResultUrl": "https://docs.google.com/spreadsheets/d/1TXJxLUoreFyiz4Fx9U_Lna3Zpgjs0kfgUgd2Ng4uXQw/edit?usp=drivesdk",
"cachedResultName": "VIDEO TRANSCRIPT PARA BLOG - LA TRIBU DIVISUAL"
}
},
"credentials": {
"googleSheetsOAuth2Api": {
"id": "OeyDebGZ6hnXoE0m",
"name": "Google Sheets daniel@averis.es"
}
},
"typeVersion": 4.5
},
{
"id": "7220c803-86a4-42d0-aa00-d739d919f390",
"name": "付箋1",
"type": "n8n-nodes-base.stickyNote",
"position": [
1056,
-128
],
"parameters": {
"width": 712,
"height": 552,
"content": "## AUTOMATED SEO BLOG GENERATOR\n\n**Complete Pipeline:** Discovers trending topics via Google Trends, researches content using Perplexity API, writes SEO-optimized articles with AI agents, and publishes directly to WordPress with full automation.\n\n**8-Step Process:**\n1. Trend Detection (SerpAPI + Google Trends)\n2. AI Topic Selection (best SEO potential)\n3. Content Research (Perplexity API)\n4. Blog Writing (AI agent)\n5. Internal Link Optimization\n6. HTML + Metadata Generation\n7. Image Sourcing\n8. WordPress Publishing + Logging\n\n**Key Features:**\n- Zero manual content creation\n- SEO optimization from start to finish\n- Internal linking automation\n- Performance tracking in Google Sheets\n- Consistent publishing schedule\n\n**Required APIs:** SerpAPI, Perplexity, OpenRouter, WordPress, Google Sheets"
},
"typeVersion": 1
},
{
"id": "520ca0f8-0744-44ca-8823-15efd58bb12e",
"name": "付箋2",
"type": "n8n-nodes-base.stickyNote",
"position": [
1840,
-128
],
"parameters": {
"color": 3,
"width": 664,
"height": 456,
"content": "### SETUP REQUIREMENTS\n\n**1. API Credentials:**\n- SerpAPI: For Google Trends data\n- Perplexity: Content research\n- OpenRouter: AI agents (GPT-4.1 recommended)\n- WordPress: Site publishing access\n\n**2. Google Sheets Template:**\nURL provided in workflow for tracking published posts and internal links database\n\n**3. WordPress Setup:**\n- Enable REST API\n- Set proper user permissions\n- Configure media upload settings\n\n**4. Customization:**\n- Adjust trend keywords for your niche\n- Modify AI prompts for brand voice\n- Set publication schedule frequency"
},
"typeVersion": 1
},
{
"id": "824a8054-9c38-4a93-99dd-bba5e62b0f7e",
"name": "付箋3",
"type": "n8n-nodes-base.stickyNote",
"position": [
3056,
352
],
"parameters": {
"color": 4,
"width": 424,
"height": 424,
"content": "## SEO OPTIMIZATION FEATURES\n\n**Trend Analysis:**\n- Real-time Google Trends monitoring\n- Keyword volume and competition analysis\n- Topic selection based on SEO potential\n\n**Content Optimization:**\n- Semantic HTML structure generation\n- Internal link building with existing posts\n- Meta descriptions and title optimization\n- SEO-friendly slug creation\n\n**Performance Tracking:**\n- Publication logging in Google Sheets\n- Keyword performance monitoring\n- Internal link database maintenance"
},
"typeVersion": 1
},
{
"id": "300b8f94-07c4-4e8f-8e4a-a569b0c4bfb3",
"name": "付箋4",
"type": "n8n-nodes-base.stickyNote",
"position": [
2160,
1184
],
"parameters": {
"color": 4,
"width": 824,
"height": 104,
"content": "Google Sheets Template: \nhttps://docs.google.com/spreadsheets/d/1ymP5AjpkCGSPrZF0W254lGMLVQ-0eHHCBL0Lz0sqilo/edit?usp=sharing\n\nColumns: Date Published | Title | Slug | Target Keyword | WordPress URL | Internal Links Added"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"06cc783c-61c6-4a9a-b323-262ba6fb1c25": {
"main": [
[
{
"node": "b205436c-d54d-4feb-b61a-623283be197f",
"type": "main",
"index": 0
}
]
]
},
"d78d08b5-2307-42cf-915c-ad31d3d6ade1": {
"main": [
[
{
"node": "de7e7025-fa2a-42f1-a0b7-ded8f9268d0a",
"type": "main",
"index": 0
}
]
]
},
"056b2d84-3167-41cf-860e-716d32ed6847": {
"main": [
[
{
"node": "e1acf94f-f7af-455d-b9f6-79808d9611a9",
"type": "main",
"index": 0
}
]
]
},
"de7e7025-fa2a-42f1-a0b7-ded8f9268d0a": {
"main": [
[
{
"node": "468c22d2-13a1-4110-a4bb-de96342c36c0",
"type": "main",
"index": 0
}
]
]
},
"1ed934d0-921a-4deb-a794-27ea4c1ac8f2": {
"main": [
[
{
"node": "ce242655-b51c-4ff3-8374-1ac63dc6b2f7",
"type": "main",
"index": 0
}
]
]
},
"ce242655-b51c-4ff3-8374-1ac63dc6b2f7": {
"main": [
[
{
"node": "4209d536-18d9-40f2-98b2-c0854d4cc82a",
"type": "main",
"index": 0
}
]
]
},
"b205436c-d54d-4feb-b61a-623283be197f": {
"main": [
[
{
"node": "c27126d7-1bd6-4d92-834f-e72fb99051a5",
"type": "main",
"index": 0
}
]
]
},
"468c22d2-13a1-4110-a4bb-de96342c36c0": {
"main": [
[
{
"node": "a4a393e5-2802-4986-b088-eeefaa0ee43b",
"type": "main",
"index": 0
}
]
]
},
"16721919-87a9-4cb5-b71b-26cc24a68f93": {
"main": [
[
{
"node": "9298b0b6-c50e-47b7-9150-a25d618118ff",
"type": "main",
"index": 0
}
]
]
},
"ef2c3a0e-a0e0-4226-950a-e9ffa76d308e": {
"main": [
[
{
"node": "12da6344-e832-46ac-bdd7-4a0f3bb40db0",
"type": "main",
"index": 0
}
]
]
},
"e1acf94f-f7af-455d-b9f6-79808d9611a9": {
"main": [
[
{
"node": "16721919-87a9-4cb5-b71b-26cc24a68f93",
"type": "main",
"index": 0
}
]
]
},
"8638519e-a8cb-4259-bb4f-de1e7d13dfda": {
"main": [
[
{
"node": "06cc783c-61c6-4a9a-b323-262ba6fb1c25",
"type": "main",
"index": 0
}
]
]
},
"dbc47254-c260-44aa-86b8-183b68e9d500": {
"main": [
[
{
"node": "1ed934d0-921a-4deb-a794-27ea4c1ac8f2",
"type": "main",
"index": 0
}
]
]
},
"c27126d7-1bd6-4d92-834f-e72fb99051a5": {
"main": [
[
{
"node": "056b2d84-3167-41cf-860e-716d32ed6847",
"type": "main",
"index": 0
}
]
]
},
"d3d3e76f-12fb-4bac-b4af-d61cf2b0c9c3": {
"main": [
[
{
"node": "8638519e-a8cb-4259-bb4f-de1e7d13dfda",
"type": "main",
"index": 0
}
]
]
},
"12da6344-e832-46ac-bdd7-4a0f3bb40db0": {
"main": [
[
{
"node": "dbc47254-c260-44aa-86b8-183b68e9d500",
"type": "main",
"index": 0
}
]
]
},
"a4a393e5-2802-4986-b088-eeefaa0ee43b": {
"main": [
[
{
"node": "ef2c3a0e-a0e0-4226-950a-e9ffa76d308e",
"type": "main",
"index": 0
}
]
]
},
"4209d536-18d9-40f2-98b2-c0854d4cc82a": {
"main": [
[
{
"node": "d3d3e76f-12fb-4bac-b4af-d61cf2b0c9c3",
"type": "main",
"index": 0
}
]
]
}
}
}このワークフローの使い方は?
上記のJSON設定コードをコピーし、n8nインスタンスで新しいワークフローを作成して「JSONからインポート」を選択、設定を貼り付けて認証情報を必要に応じて変更してください。
このワークフローはどんな場面に適していますか?
上級 - コンテンツ作成, その他, マルチモーダルAI
有料ですか?
このワークフローは完全無料です。ただし、ワークフローで使用するサードパーティサービス(OpenAI APIなど)は別途料金が発生する場合があります。
関連ワークフロー
Daniel Lianes
@daniellianesAs a strategic consultant in Automation and AI, I'm passionate about helping business owners simplify operations and scale smarter. My approach is a partnership: I listen to your unique needs to design custom solutions that solve real challenges. But I don't just build and leave—I also coach your team to master these new systems, empowering you for sustainable success. Beyond client work, I'm a true enthusiast, always exploring new possibilities and sharing what I learn with the community.
このワークフローを共有