Générateur de blog SEO de Google Trends vers WordPress

Avancé

Ceci est unContent Creation, Miscellaneous, Multimodal AIworkflow d'automatisation du domainecontenant 24 nœuds.Utilise principalement des nœuds comme Set, Code, Aggregate, Wordpress, HttpRequest. Utiliser GPT et Perplexity AI pour générer des articles de blog SEO depuis Google Trends vers WordPress

Prérequis
  • Peut nécessiter les informations d'identification d'authentification de l'API cible
  • Informations d'identification Google Sheets API
  • Clé API OpenAI
Aperçu du workflow
Visualisation des connexions entre les nœuds, avec support du zoom et du déplacement
Exporter le workflow
Copiez la configuration JSON suivante dans n8n pour importer et utiliser ce workflow
{
  "meta": {
    "instanceId": "e5475e3f5ea4317f0b981b80d6948e4bd2ba92e8c8af9ecbbaf8d90708882234"
  },
  "nodes": [
    {
      "id": "de7e7025-fa2a-42f1-a0b7-ded8f9268d0a",
      "name": "Obtenir les Tendances Google",
      "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": "Convertir le Format de Recherche",
      "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": "Préparer le Jeu de Données de Liens Internes",
      "type": "n8n-nodes-base.aggregate",
      "position": [
        1728,
        896
      ],
      "parameters": {
        "options": {},
        "aggregate": "aggregateAllItemData",
        "destinationFieldName": "previous-posts"
      },
      "typeVersion": 1
    },
    {
      "id": "e1acf94f-f7af-455d-b9f6-79808d9611a9",
      "name": "Stocker l'URL de l'Image de Couverture",
      "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": "Déclencheur Planifié",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        1088,
        608
      ],
      "parameters": {
        "rule": {
          "interval": [
            {}
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "0080012b-4f35-4588-a5e1-fcea4f9bd871",
      "name": "Note Adhésive",
      "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": "Extraire les 2 Tendances Principales",
      "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": "Filtrer les Mots-Clés à Haut Volume",
      "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": "Sélectionner le Meilleur Sujet 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": "Rechercher des Sources Fiables",
      "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": "Rédiger le Contenu du Blog",
      "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": "Trouver les Articles Précédents",
      "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": "Insérer des Liens SEO Internes",
      "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": "Générer du HTML Sémantique",
      "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": "Créer un Slug 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": "Générer le Titre du Blog",
      "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": "Créer la Meta Description",
      "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": "Récupérer l'Image de Couverture",
      "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": "Publier sur 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": "Journaliser l'Article Publié",
      "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": "Note Adhésive1",
      "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": "Note Adhésive2",
      "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": "Note Adhésive3",
      "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": "Note Adhésive4",
      "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
          }
        ]
      ]
    }
  }
}
Foire aux questions

Comment utiliser ce workflow ?

Copiez le code de configuration JSON ci-dessus, créez un nouveau workflow dans votre instance n8n et sélectionnez "Importer depuis le JSON", collez la configuration et modifiez les paramètres d'authentification selon vos besoins.

Dans quelles scénarios ce workflow est-il adapté ?

Avancé - Création de contenu, Divers, IA Multimodale

Est-ce payant ?

Ce workflow est entièrement gratuit et peut être utilisé directement. Veuillez noter que les services tiers utilisés dans le workflow (comme l'API OpenAI) peuvent nécessiter un paiement de votre part.

Workflows recommandés

Analyse intelligente quotidienne des groupes WhatsApp : Analyse GPT-4.1 et transcription des messages vocaux
Analyse intelligente des groupes WhatsApp quotidiens : analyse GPT-4.1 et transcription des messages vocaux
If
Set
Code
+
If
Set
Code
52 NœudsDaniel Lianes
Divers
Génération de blog WordPress optimisé pour le SEO avec Gemini, Tavily et une révision humaine
Utiliser Gemini, Tavily et une révision manuelle pour générer des articles de blog WordPress optimisés SEO
If
Set
Code
+
If
Set
Code
38 NœudsAryan Shinde
Création de contenu
Convertir les points de douleur commerciaux Reddit en contenu viral LinkedIn avec l'IA et Freepik
Utiliser l'IA et Freepik pour convertir les points de douleur métier Reddit en contenu LinkedIn viral
If
Set
Code
+
If
Set
Code
48 NœudsDaniel Lianes
Création de contenu
Utiliser Dumpling AI pour générer automatiquement des publications spécifiques à la plateforme à partir de vidéos YouTube
Génération automatique de publications Instagram, Facebook et LinkedIn à partir de vidéos YouTube avec GPT-4o et Dumpling AI
Set
Code
Merge
+
Set
Code
Merge
20 NœudsYang
Création de contenu
Flux de travail automatisé SEO pour blog de mots-clés à WordPress avec GPT-5 et images fal.ai
Automatisation du flux de blog SEO des mots-clés vers WordPress avec GPT-5 et les images fal.ai
Set
Code
Wait
+
Set
Code
Wait
96 NœudsPaul
Création de contenu
Version professionnelle de l'automatisation de blog WordPress (recherche approfondie) v2.1 sur le marché
Automatisation de la création de blog optimisé pour le SEO avec GPT-4o, Perplexity AI et support multilingue
If
Set
Xml
+
If
Set
Xml
125 NœudsDaniel Ng
Création de contenu
Informations sur le workflow
Niveau de difficulté
Avancé
Nombre de nœuds24
Catégorie3
Types de nœuds9
Description de la difficulté

Adapté aux utilisateurs avancés, avec des workflows complexes contenant 16+ nœuds

Auteur
Daniel Lianes

Daniel Lianes

@daniellianes

As 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.

Liens externes
Voir sur n8n.io

Partager ce workflow

Catégories

Catégories: 34