Automate WooCommerce SEO with Yoast & AI-Powered Meta Tag Generation for FREE

Source

https://n8n.io/workflows/2963-automate-woocommerce-seo-with-yoast-and-ai-powered-meta-tag-generation-for-free/

Template

{
  "id": "JCp6tMYrzFDSOQ1C",
  "meta": {
    "instanceId": "a4bfc93e975ca233ac45ed7c9227d84cf5a2329310525917adaf3312e10d5462",
    "templateCredsSetupCompleted": true
  },
  "name": "WooCommerce SEO Yoast Meta Tag Generation",
  "tags": [],
  "nodes": [
    {
      "id": "02c4abf8-64f5-45e5-934f-0f1db4484c78",
      "name": "When clicking ‘Test workflow’",
      "type": "n8n-nodes-base.manualTrigger",
      "position": [
        120,
        -480
      ],
      "parameters": {},
      "typeVersion": 1
    },
    {
      "id": "d545f0e0-76dd-490b-85b6-7a83b65eb8f6",
      "name": "Structured Output Parser",
      "type": "@n8n/n8n-nodes-langchain.outputParserStructured",
      "position": [
        920,
        -280
      ],
      "parameters": {
        "schemaType": "manual",
        "inputSchema": "{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"metatitle\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"metadescription\": {\n\t\t\t\"type\": \"string\"\n\t\t}\n\t}\n}"
      },
      "typeVersion": 1.2
    },
    {
      "id": "a9873f0e-8325-4434-9219-45c711a7afad",
      "name": "Schedule Trigger",
      "type": "n8n-nodes-base.scheduleTrigger",
      "position": [
        120,
        -660
      ],
      "parameters": {
        "rule": {
          "interval": [
            {
              "field": "minutes"
            }
          ]
        }
      },
      "typeVersion": 1.2
    },
    {
      "id": "9a232d7e-97e7-4e47-85ab-5069108d53ab",
      "name": "Get product ID",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        320,
        -480
      ],
      "parameters": {
        "options": {
          "returnFirstMatch": true
        },
        "filtersUI": {
          "values": [
            {
              "lookupColumn": "METATITLE"
            }
          ]
        },
        "sheetName": {
          "__rl": true,
          "mode": "list",
          "value": "gid=0",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17eYoKhtUupkye9Bmv13BjfP2jyymBUW4UYQGWU6V2cs/edit#gid=0",
          "cachedResultName": "Foglio1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17eYoKhtUupkye9Bmv13BjfP2jyymBUW4UYQGWU6V2cs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17eYoKhtUupkye9Bmv13BjfP2jyymBUW4UYQGWU6V2cs/edit?usp=drivesdk",
          "cachedResultName": "Metatitle and Metadescription WooCommerce"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "b4324a6a-7c53-460e-9966-37a8df4d0ae9",
      "name": "Get product",
      "type": "n8n-nodes-base.wooCommerce",
      "position": [
        520,
        -480
      ],
      "parameters": {
        "operation": "get",
        "productId": "={{ $json['ID POST'] }}"
      },
      "credentials": {
        "wooCommerceApi": {
          "id": "vYYrjB5kgHQ0XByZ",
          "name": "WooCommerce (wp.test.7hype.com)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "28a911b7-0d74-4686-a349-f727b0ee9641",
      "name": "Generate metatitle e metadescription",
      "type": "@n8n/n8n-nodes-langchain.chainLlm",
      "position": [
        740,
        -480
      ],
      "parameters": {
        "text": "=Create metatitle and metadescription in the language of the following product:\n- Title: {{ $json.name }}\n- Description: {{ $json.description }}\n- Short description: {{ $json.short_description }}\n- Product category: {{ (JSON.stringify($json.categories)) }},",
        "messages": {
          "messageValues": [
            {
              "message": "=You are a SEO expert specialized in creating optimized meta tags. Your task is to analyze the provided content and generate:\n\n1. A meta title of maximum 60 characters that:\n   - Includes the main keyword in a strategic position\n   - Is engaging and encourages clicks\n   - Accurately reflects the page content\n   - Uses clear and direct language\n   - Avoids keyword stuffing\n\n2. A meta description of maximum 160 characters that:\n   - Provides an engaging summary of the content\n   - Includes an appropriate call-to-action\n   - Contains the main keyword and relevant variations\n   - Is grammatically correct and flows well\n   - Maintains consistency with the meta title\n\nANALYSIS PROCESS:\n1. Carefully read the provided content\n2. Identify:\n   - Main topic\n   - Primary and related keywords\n   - Search intent\n   - Unique selling proposition\n   - Target audience\n\n3. Formulate meta tags that:\n   - Maximize CTR\n   - Respect character limits\n   - Are SEO optimized\n   - Reflect the content\n   - Don't insert placeholder\n\nREQUIRED OUTPUT:\nProvide meta tags in the required format\n\nVALIDATION CRITERIA:\n- Verify that the meta title doesn't exceed 60 characters\n- Verify that the meta description doesn't exceed 160 characters\n- Check that both contain the main keyword\n- Ensure the language is persuasive and action-oriented\n- Confirm that meta tags are consistent with the content\n\nIMPORTANT:\n- Don't use excessive punctuation\n- Avoid using special characters unless necessary\n- Don't duplicate information between title and description\n- Maintain a professional yet accessible tone\n- Ensure content is unique and not duplicated\n\nRemember: the goal is to create meta tags that effectively balance SEO optimization and user appeal, maximizing the potential click-through rate in search results."
            }
          ]
        },
        "promptType": "define",
        "hasOutputParser": true
      },
      "typeVersion": 1.5
    },
    {
      "id": "0c995efc-e28e-467d-9b17-d22e792ff0d3",
      "name": "Update product",
      "type": "n8n-nodes-base.wooCommerce",
      "position": [
        1120,
        -480
      ],
      "parameters": {
        "imagesUi": {},
        "resource": "product",
        "operation": "update",
        "productId": "={{ $('Get product ID').item.json['ID POST'] }}",
        "metadataUi": {
          "metadataValues": [
            {
              "key": "_yoast_wpseo_title",
              "value": "={{ $json.output.metatitle }}"
            },
            {
              "key": "_yoast_wpseo_metadesc",
              "value": "={{ $json.output.metadescription }}"
            }
          ]
        },
        "dimensionsUi": {},
        "updateFields": {}
      },
      "credentials": {
        "wooCommerceApi": {
          "id": "vYYrjB5kgHQ0XByZ",
          "name": "WooCommerce (wp.test.7hype.com)"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "e1850ecf-792a-4b78-addb-f433732a215c",
      "name": "Update Sheet",
      "type": "n8n-nodes-base.googleSheets",
      "position": [
        1320,
        -480
      ],
      "parameters": {
        "columns": {
          "value": {
            "URL": "={{ $('Get product').item.json.permalink }}",
            "DATA": "={{ $now.format('dd/LL/yyyy HH:ii') }}",
            "METATITLE": "={{ $('Generate metatitle e metadescription').item.json.output.metatitle }}",
            "TITLE POST": "={{ $('Get product').item.json.name }}",
            "row_number": "={{ $('Get product ID').item.json.row_number }}",
            "METADESCRIPTION": "={{ $('Generate metatitle e metadescription').item.json.output.metadescription }}"
          },
          "schema": [
            {
              "id": "DATA",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "DATA",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "ID POST",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "ID POST",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "TYPE POST",
              "type": "string",
              "display": true,
              "removed": true,
              "required": false,
              "displayName": "TYPE POST",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "URL",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "URL",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "TITLE POST",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "TITLE POST",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "METATITLE",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "METATITLE",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "METADESCRIPTION",
              "type": "string",
              "display": true,
              "required": false,
              "displayName": "METADESCRIPTION",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "row_number",
              "type": "string",
              "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/1-eCFzNDrs1CiLJ4K5CSIaLeYt5Xf5PdubFNDvKWL-dA/edit#gid=0",
          "cachedResultName": "Foglio1"
        },
        "documentId": {
          "__rl": true,
          "mode": "list",
          "value": "17eYoKhtUupkye9Bmv13BjfP2jyymBUW4UYQGWU6V2cs",
          "cachedResultUrl": "https://docs.google.com/spreadsheets/d/17eYoKhtUupkye9Bmv13BjfP2jyymBUW4UYQGWU6V2cs/edit?usp=drivesdk",
          "cachedResultName": "Metatitle and Metadescription WooCommerce"
        }
      },
      "credentials": {
        "googleSheetsOAuth2Api": {
          "id": "JYR6a64Qecd6t8Hb",
          "name": "Google Sheets account"
        }
      },
      "typeVersion": 4.5
    },
    {
      "id": "a095dc5b-d234-40c5-9486-e34f24c1b1eb",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        280,
        -560
      ],
      "parameters": {
        "width": 180,
        "height": 240,
        "content": "Get the product ID that does not have metatitle or metadescription yet"
      },
      "typeVersion": 1
    },
    {
      "id": "bac079f9-890e-49e4-811e-31cf0cfb5d1b",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        480,
        -560
      ],
      "parameters": {
        "width": 180,
        "height": 240,
        "content": "Get all the product details starting from the product ID"
      },
      "typeVersion": 1
    },
    {
      "id": "c9c3d53a-a591-4ab4-8f81-c93edd3c5b9f",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        680,
        -560
      ],
      "parameters": {
        "width": 380,
        "height": 240,
        "content": "Based on the content of the product generates the metatitle and metadescription. In this example we use Gemini Think 2.0 which is FREE with OpenRouter"
      },
      "typeVersion": 1
    },
    {
      "id": "521240e4-fc75-45cc-a965-95d7d17dc727",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1080,
        -560
      ],
      "parameters": {
        "width": 180,
        "height": 240,
        "content": "Insert the generated data into WooCommerce"
      },
      "typeVersion": 1
    },
    {
      "id": "e8643582-c30a-4b16-8e15-15acc969a032",
      "name": "Gemini 2.0 Flash Exp",
      "type": "@n8n/n8n-nodes-langchain.lmChatOpenRouter",
      "position": [
        740,
        -280
      ],
      "parameters": {
        "model": "google/gemini-2.0-flash-exp:free",
        "options": {}
      },
      "credentials": {
        "openRouterApi": {
          "id": "pb06rfB4xmxzVe3Q",
          "name": "OpenRouter"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "be9042a1-e2f8-4ed0-850d-269cf6fc55e8",
      "name": "Sticky Note4",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        280,
        -820
      ],
      "parameters": {
        "color": 3,
        "width": 980,
        "content": "WooCommerce SEO Yoast Meta Tag Generation for FREE\n\nThis workflow streamlines the process of optimizing WooCommerce product pages for SEO, saving time and ensuring consistency in meta tag generation.\n\nCreate a copy of [this Sheet](https://docs.google.com/spreadsheets/d/17eYoKhtUupkye9Bmv13BjfP2jyymBUW4UYQGWU6V2cs/edit?usp=sharing) and insert only the WooCommerce product ID in the column \"B\"."
      },
      "typeVersion": 1
    }
  ],
  "active": false,
  "pinData": {},
  "settings": {
    "executionOrder": "v1"
  },
  "versionId": "aa239f84-430a-4e3f-a33f-3552834e635e",
  "connections": {
    "Get product": {
      "main": [
        [
          {
            "node": "Generate metatitle e metadescription",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update Sheet": {
      "main": [
        []
      ]
    },
    "Get product ID": {
      "main": [
        [
          {
            "node": "Get product",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Update product": {
      "main": [
        [
          {
            "node": "Update Sheet",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Gemini 2.0 Flash Exp": {
      "ai_languageModel": [
        [
          {
            "node": "Generate metatitle e metadescription",
            "type": "ai_languageModel",
            "index": 0
          }
        ]
      ]
    },
    "Structured Output Parser": {
      "ai_outputParser": [
        [
          {
            "node": "Generate metatitle e metadescription",
            "type": "ai_outputParser",
            "index": 0
          }
        ]
      ]
    },
    "When clicking ‘Test workflow’": {
      "main": [
        [
          {
            "node": "Get product ID",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Generate metatitle e metadescription": {
      "main": [
        [
          {
            "node": "Update product",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

© 2025 AW

Instagram 𝕏 GitHub