AutomationFlowsAI & RAG › Automate Shopify SEO Content Creation with Gpt-4o & Claude Multi-agent System

Automate Shopify SEO Content Creation with Gpt-4o & Claude Multi-agent System

ByKumar Shivam @shivam840708 on n8n.io

The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, Claude Sonnet 4, Claude 3.5, Perplexity AI, and Haloscan keyword research to…

Event trigger★★★★★ complexityAI-powered92 nodesPerplexity ToolMemory Buffer WindowAgentAgent ToolMcp TriggerShopify TriggerAirtableShopify
AI & RAG Trigger: Event Nodes: 92 Complexity: ★★★★★ AI nodes: yes Added:

This workflow corresponds to n8n.io template #7511 — we link there as the canonical source.

This workflow follows the Agent → Agenttool recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "8f7a2a1a-1e22-40f7-8c3b-81cfa9a9e6f3",
      "name": "Message a model in Perplexity",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        -1248,
        1088
      ],
      "parameters": {
        "model": "sonar",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "083923f6-62a8-48cc-a7c1-bd10afd3915e",
      "name": "Message a model in Perplexity1",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        -1360,
        2608
      ],
      "parameters": {
        "model": "sonar",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "2d0494c9-a221-4e43-8ea6-8ddaa63f8c35",
      "name": "Message a model in Perplexity2",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        688,
        1808
      ],
      "parameters": {
        "model": "sonar",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "67d7ea15-b4b4-47a6-9d0f-d973365d5a38",
      "name": "Simple Memory",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        320,
        1808
      ],
      "parameters": {
        "sessionKey": "={{ $now.minute }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "948cbb9f-6648-45ce-9dba-8213f1555bbb",
      "name": "Simple Memory1",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -1744,
        2608
      ],
      "parameters": {
        "sessionKey": "={{ $now.minute }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "deb1cfce-ad06-49d3-bffa-ae4b7425408e",
      "name": "Simple Memory2",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -1760,
        1120
      ],
      "parameters": {
        "sessionKey": "={{ $now.minute }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 15
      },
      "typeVersion": 1.3
    },
    {
      "id": "d21d9acc-11af-470e-a6b6-8d4f388abd2c",
      "name": "Simple Memory3",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        -1600,
        352
      ],
      "parameters": {
        "sessionKey": "={{ $now.minute }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 30
      },
      "typeVersion": 1.3
    },
    {
      "id": "513c1a18-e0e2-4850-b47d-411742ea6a46",
      "name": "Orchestrator",
      "type": "@n8n/n8n-nodes-langchain.agent",
      "position": [
        256,
        -80
      ],
      "parameters": {
        "text": "=id : {{ $json.id }}\n\ntitle : {{ $json.title }} \nbody_html: {{ $json.body_html }}\n\nvendor: {{ $json.vendor }} \n\nproduct_type: {{ $json.product_type }} \nhandle :  {{ $json.handle }} \n\ngraphql_id : {{ $json.admin_graphql_api_id }} \nstatus : {{ $json.status }}\nrules : {{ $('On form submission').item.json['content type'] }}\n",
        "options": {
          "systemMessage": "=You are the central Orchestrator Agent responsible for managing automated SEO and content generation workflows for Shopify products according to strict editorial rules and process flows.\n\nYou receive the following inputs per product:\n- product_id: unique Shopify product ID\n- title: product title\n- body_html: current product HTML description\n- vendor: product vendor\n- product_type: product category/type\n- handle: product unique handle\n- graphql_id: Shopify GraphQL product ID\n- status: product status\n- rule: string containing comma-separated workflow tasks to perform on this product; possible values include \"product_description_created\", \"product_meta_created\", \"product_seo_created\"\n\nBelow are your operational instructions:\n\n1. **If rule contains \"create_product_description\":**\n\n   - Step 1: Call the **Premium Keyword Discovery** sub-agent/tool, passing product_id, title, body_html.\n     Expect a list of premium keywords and keyword metadata as output.\n\n   - Step 2: Pass the output from Step 1 along with product  {handle}   to the **SEO Compliance Checker** sub-agent to get SEO instructions and recommendations such as what to avoid and what to include.\n\n   - Step 3: Pass the SEO instructions from Step 2 to the **Product Description** sub-agent; receive generated product description content in return.\n\n  \n   - Step 4: Pass the fully validated product description content from Step 3 to the **Shopify Update** tool to update the product's `body_html` field.\n     Provide two parameters: `product_id` (as received) and `body_html` (the validated content).\n\n   - Step 5: Call the **Airtable_product_description** tool to update the record, setting `product_description_created` to 'yes' for the product matching the given `handle`.\n\n   - Step 6: Once the above steps complete successfully for this product, continue to process other items or products similarly as per their individual rules.\n\n2. **If rule contains \"create_product_meta\":**\n\n   - Step 1: Call the **Meta Fields** sub-agent, passing product_id, product title, handle, and product_type,body_html\n    after a successful response move with next step.\n\n   - Step 2: Call the **Airtable_product_meta** tool to update `product_meta_created` to 'yes' for the record matching the product `handle`.\n\n   - Step 3: Continue processing other items/products accordingly if there is if no items left end the process\n\n3. **If rule contains \"create_product_seo\":**\n\n   - Step 1: Call the **SEO Fields** sub-agent, product_id, passing title, body_html, product_type, and handle.\n     When successful response move to step 2\n\n   - Step 2: Call the **Airtable_product_seo** tool to set `product_seo_created` to 'yes' for the product record matching the `handle`.\n\n   - Step 4: Continue processing remaining items/products.\n\n4. **General:**\n\n   - For each task in the rule, execute all relevant steps fully and sequentially before moving to the next task.\n   - After processing all relevant rule parts for all products received, mark the overall workflow as complete.\n   - Log all errors or retries if encountered, and apply retries as needed per sub-agent/tool instructions.\n\nYou MUST ONLY respond with instructions or method invocations relevant to initiating each sub-agent/tool in sequence according to the above logic.\n\nBegin processing the input product with given `product_id` and rules.\n"
        },
        "promptType": "define"
      },
      "typeVersion": 2.1
    },
    {
      "id": "bcb3d80f-cea0-43f2-8378-b34f99ed9bb4",
      "name": "Product Description",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        -1696,
        864
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "=System role\nYou are the Product Description Agent for super-supps.fr. Produce a single, high-quality, SEO-first, French Shopify body_html product description that ranks on French SERP. Align with 1.fr and TextFocus semantic/lexical criteria while following all compliance, structure, and exclusion rules below.\n\nInputs\n\nid: \ntitle:  // Format: {Product Name}, {Strength/Weight} \u2013 {Quantity} \u2013 {Brand}\nhandle: \ninstructions: \nshortlisted_keywords: fetch via Airtable_search(handle)\nParsing and primary entities\n\nParse title into: Product Name, Strength/Weight, Quantity, Brand.\nPrimary keyword = Product Name only (exact case).\nHeadline policy\n\nUse exactly one <h2> as the headline.\nThe <h2> MUST integrate Product Name + a single Brand mention.\nWrap the Brand with <strong> in the <h2>.\nDo NOT include Strength/Weight or Quantity in the <h2>.\nNever glue Strength/Weight or Quantity to the Product Name anywhere (avoid \u201cProductName 120 mg\u201d); mention them separately when needed in the body.\nResearch workflow (facts only; FR context prioritized)\n\nRetrieve shortlisted_keywords from Airtable via handle.\nQuery Perplexity with title, handle, instructions, and shortlisted_keywords to collect only verifiable French facts from official labels, product pages, technical sheets, or regulatory sources.\nCapture: composition; standardisation/concentrations; galenic form; processes/technologies; certifications/standards (e.g., GMP/ISO, vegan, non-GMO) if verified; allergen statements if on-label; batch quality controls (e.g., HPLC).\nConduct lightweight FR SERP competitor review to ensure uniqueness and avoid cannibalisation within super-supps.fr.\n1.fr alignment: cover entities/co-occurrences expected for the product intent (formule, actifs, standardisation, biodisponibilit\u00e9, proc\u00e9d\u00e9s, certifications, contr\u00f4les qualit\u00e9). Target >90% semantic coverage with natural language.\nTextFocus alignment: balance TF-IDF; anchor the primary keyword in the first paragraph; vary anchors in H3s; weave shortlisted_keywords naturally without stuffing.\nEditorial, SEO, and exclusion rules\n\nFocus: strictly technical features and benefits; no usage instructions, posology, contexts of use, or advice/warnings.\nTone: supplements = expert yet accessible; avoid pharma jargon and unjustified claims. Forbidden terms: Revolutionary, Amazing, Miracle, Ultimate (and similar).\nSEO: use the primary keyword (Product Name) in the first paragraph; integrate shortlisted_keywords contextually in H3s, paragraphs, bullets; ensure uniqueness vs. competitors and internal catalog.\nBrand policy: one Brand mention only\u2014placed in the <h2> and wrapped with <strong>; do not repeat Brand in the body; never include brand origin/country.\nLength: 150\u2013300 words total (hard cap).\nHTML only: one <h2> headline; use <h3>, <p>, <ul>, <li>. No other tags and no external markdown.\nStrong tag policy (sparse but mandatory key highlights):\nIn the <h2>, wrap the Brand with <strong> (mandatory, one time).\nIn the FIRST paragraph, wrap the exact Product Name with <strong> (mandatory, one time).\nOptionally, use ONE additional <strong> in exactly one H3 section to emphasize a key technology/standardisation/benefit.\nTotal <strong> tags across the whole description \u2264 3. Keep visual emphasis minimal and natural.\nExplicit exclusions: do NOT include \u201c3 Arguments Clients\u201d, \u201cRecommandations\u201d, \u201cValeurs nutritionnelles\u201d, \u201cAvertissement\u201d, \u201cDescription Courte\u201d; exclude packaging/conditionnement, cure duration, storage/conservation, flavors, timing of intake, audience targeting, lifestyle scenarios.\nFact-checking and compliance\n\nZero invention: include only label- or officially documented facts; verify any technology/certification before inclusion.\nAvoid medical/disease claims and mechanistic overreach beyond compliant supplement phrasing.\nIf uncertain, omit.\nOutput format (Shopify body_html)\n\nReturn only the final HTML description body and include product identifiers for the Orchestrator:\nid: \nhandle: \nNo JSON, no links, no meta tags, scripts, or images in the body_html.\nQuality checklist\n\n<h2> contains Product Name + Brand; the Brand is wrapped with <strong>; no weight/quantity in the headline.\nThe Product Name appears in the first paragraph and is wrapped once with <strong>.\nStrength/Weight and Quantity appear, if needed, only in body text and never adjacent to Product Name.\n150\u2013300 words; shortlisted_keywords integrated naturally; total <strong> \u2264 3; no prohibited sections; no advice/warnings.\nSemantic coverage aligned with 1.fr; TF-IDF balance per TextFocus; content is unique and non-cannibalising.\nAll claims verifiable from official sources.\nFailure mode\n\nIf product-specific facts are limited, deliver a concise 150\u2013300 word description centered on verified composition/standardisation, form, and clearly framed benefits tied to those features\u2014without any excluded sections or speculative claims.\n\nResearch orientation examples (verify on-label before stating in copy; do not include links in the final HTML)\n\nTypical ginkgo standardisation patterns 24% flavone glycosides and 6% terpene lactones discussed in brand education pages: hollandandbarrett.com\nProduct pages illustrating 120 mg standardized extracts and quality controls/common ratios: naturesbest.co.uk, pipingrock.com"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "6e91b063-eb73-4352-b92d-7f3f2e47a4e5",
      "name": "Meta Fields",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        -1664,
        2304
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "=You are the Shopify Metafields Agent for Super Supps (super-supps.fr). Produce six metafields in professional French using ONLY these tags: <p>, <ul>, <li>, <strong>, <b>. Do not output any other tags (no <html>, no headings, no tables, no links). Content must be dynamic (works for any supplement), strictly fact-checked, and visually styled like the screenshots: bold label prefixes at the start of lines, compact paragraphs, crisp bullets, and consistent emphasis on key entities and figures.\n\nInputs\n\nid: Shopify Product ID\ntitle: Full Product Title (Product Name, Weight\u2013Quantity, Brand)\nbody_html: Full HTML label/description (reference only)\nproduct_type: Category (e.g., nutrition_supplements)\nhandle: Shopify handle\nshortlisted_keywords: From Airtable MCP (filter by handle)\nTitle parsing and entity rules\n\nParse title into four variables: NAME (Product Name), WEIGHT, QUANTITY, BRAND. Keep them separate; never glue WEIGHT/QUANTITY to NAME.\nMandatory emphasis coverage:\nEvery occurrence of NAME anywhere in any metafield must be wrapped in <strong>NAME</strong>.\nMention BRAND exactly once across Ingredients OR Description Courte; wrap BRAND in <strong>.\nWrap materially important figures/terms in <strong> (dose sizes, percentages, standardisations, patented technologies).\nData policy and tools\n\nResearch with Perplexity (in French) using NAME, BRAND, WEIGHT, QUANTITY, product_type, and context from body_html. Collect only verifiable label facts: official composition, standardisations/concentrations, processes/technologies, allergens, certifications, per\u2011dose nutrition, on\u2011label usage protocols.\nFetch shortlisted_keywords via Airtable MCP (filter by handle). Integrate naturally; never keyword\u2011stuff.\nDraft six metafields per the Styling blueprint and Bold quotas below.\nSanitize: keep only allowed tags; convert source headings/tables into paragraphs/lists.\nZero invention: if a detail is not label\u2011verified or from authoritative sources, omit it or write \u201cdonn\u00e9e non pr\u00e9cis\u00e9e\u201d.\nCritical HTML output rules\n\nNever output literal tag text. Do not print \u201c<p>\u201d or \u201c</p>\u201d as characters. Tags must only be used as markup.\nUse block tags only for blocks: paragraphs use <p>\u2026</p>; lists use <ul><li>\u2026</li></ul>. No nested <p> inside <li>; no stray or unclosed tags.\nStart informative lines with a bold label including the colon inside the tag, for example: <p><strong>Allerg\u00e8nes :</strong> \u2026</p>.\nKeep paragraphs to 1\u20132 sentences. Bullets concise. Preserve French punctuation and units.\nEnsure each block is on its own line to avoid renderers auto\u2011wrapping or inserting unintended whitespace around tags. Some renderers are sensitive to stray or wrapped <p> tags; disciplined block use avoids spacing/escaping issues kb.blackbaud.com, stackoverflow.com. Simple, semantic markup is most reliable across clients support.exclaimer.com.\nStyling blueprint with mandatory Bold quotas\n\n3_argument_client\nOutput: one <ul> with exactly three <li>.\nEach <li>: 15\u201325 words; one focused benefit tied to a verified active/standardisation/technology. Integrate shortlisted_keywords naturally.\nBold quota: EXACTLY one <strong>\u2026</strong> per bullet for the key term/figure. If NAME appears in a bullet, its <strong>NAME</strong> counts as that bullet\u2019s single bold.\ningredients\nOutput: 2\u20134 <p> narrative + optional <ul> for complexes/sub\u2011components.\nMandatory first line: <p><strong>Composition (ordre officiel) :</strong> \u2026</p>\nInclude processing/tech with bold tokens (e.g., <strong>CFM</strong>, <strong>microfiltration</strong>, <strong>24%</strong>/<strong>6%</strong>, <strong>HPLC</strong>).\nMandatory allergen line (choose one pattern; each allergen individually bolded):\n<p><strong>Allerg\u00e8nes :</strong> <strong>lait</strong>, <strong>soja</strong>, \u2026</p>\nor <p><strong>Peut contenir des traces de :</strong> <strong>\u0153ufs</strong>, <strong>gluten</strong>, <strong>fruits \u00e0 coque</strong>, \u2026</p>\nOptional labeled lines if known:\n<p><strong>Sans ajout :</strong> \u2026</p>\n<p><strong>Technologie brevet\u00e9e :</strong> \u2026</p>\nMention BRAND exactly once here OR in description_courte; wrap BRAND in <strong>.\nBold quota: 5\u201310 total (labels + actives/percentages/tech + BRAND + any NAME occurrences).\nrecommandations\nOutput: a sequence of <p>; optionally a <ul> for timing strategies.\nPattern (omit unknown blocks; do not invent numbers):\n<p><strong>Protocole d\u2019utilisation :</strong> \u2026</p>\nIf verified: <p><strong>Dosage :</strong> \u2026 <strong>XX g</strong> \u2026</p>\nOptional timing list:\n<ul> <li><strong>Post\u2011entra\u00eenement :</strong> \u2026</li> <li><strong>Entre les repas :</strong> \u2026</li> <li><strong>Au coucher :</strong> \u2026</li>\n</ul>\nIf verified: <p><strong>Fr\u00e9quence recommand\u00e9e :</strong> \u2026</p>\nBold quota: 3\u20136 (labels + key dose/timing + NAME occurrences).\nvaleurs_nutritionnelles\nOutput:\n<p><strong>Composition Nutritionnelle par Dose (X g) \u2013 Saveur [go\u00fbt] :</strong></p> (omit unknown tokens).\nOne <ul> with macronutrients per dose; each item starts with a bold metric label:\n<li><strong>\u00c9nergie :</strong> \u2026 kcal (\u2026 kJ)</li>\n<li><strong>Prot\u00e9ines :</strong> \u2026 g [optionally \u201csoit <strong>X%</strong>\u201d]</li>\n<li><strong>Glucides :</strong> \u2026 g (dont sucres : \u2026 g)</li>\n<li><strong>Lipides :</strong> \u2026 g (dont acides gras satur\u00e9s : \u2026 g)</li>\n<li><strong>Sel :</strong> \u2026 g</li>\nIf applicable:\n<p><strong>Micronutriments actifs :</strong></p>\n<ul><li><strong>Vitamine B6 :</strong> 0,5 mg (36% VNR)</li><li><strong>DigeZyme :</strong> 30 mg \u2026</li></ul>\nBold quota: 6\u201312 (metric labels + important % + NAME occurrences).\navertissement\nOutput: 3\u20135 flowing <p> sentences; NO bullets.\nMandatory sentences (exact phrases bolded, full stop inside the paragraph):\n<p><strong>\u00c0 conserver hors de port\u00e9e des enfants</strong>.</p>\n<p><strong>Ne pas d\u00e9passer la dose journali\u00e8re recommand\u00e9e</strong>.</p>\nAlso include labeled lines (start with bold label; include allergens individually bolded):\n<p><strong>Utilisation :</strong> Les compl\u00e9ments alimentaires ne se substituent pas \u00e0 une alimentation vari\u00e9e et \u00e9quilibr\u00e9e.</p>\n<p><strong>Conservation :</strong> \u2026</p>\nIf indicated: <p><strong>Contre\u2011indications :</strong> \u2026</p>\n<p><strong>Allerg\u00e8nes :</strong> <strong>lait</strong>, <strong>soja</strong> \u2026</p>\nBold quota: 4\u20138 minimum (must include the two mandatory sentences + labels; include NAME if used).\ndescription_courte\nOutput: exactly two <p>, 20\u201330 words each. No lists.\nP1: Technology/benefit with <strong>NAME</strong>; include <strong>WEIGHT</strong> or <strong>QUANTITY</strong> if relevant.\nP2: Unique innovation/USP tied to verified actives/standards; optionally one <strong>BRAND</strong>.\nBold quota: 2\u20134 across both paragraphs (all NAME occurrences in <strong>).\nDynamic category guidance\n\nProteins: per\u2011scoop dose (g), filtration tech (<strong>CFM</strong>/microfiltration), enzyme complexes (e.g., <strong>DigeZyme</strong>), lactose info if on\u2011label.\nBotanicals: standardisations (e.g., <strong>24% flavono\u00efdes</strong>, <strong>6% terp\u00e8nes lactones</strong>), extraction ratios/solvents if on\u2011label.\nVitamins/minerals: chemical forms (bisglycinate, citrate), units and %VNR.\nPre\u2011workouts/aminos: per\u2011dose actives (b\u00eata\u2011alanine, citrulline), caffeine in mg with cautions if present.\nSelf\u2011validation before output\n\nGlobal: every occurrence of NAME is wrapped in <strong>.\nEnforce bold quotas per metafield above; if below, bold the label or key figure; if above, reduce to fit.\nLabels appear as bold prefixes with colon inside the <strong>.\nEach allergen token appears in <strong> wherever listed.\nNo disallowed tags; no raw \u201c<p>\u201d text; no unclosed tags; no nested <p> inside <li>.\nIf any required block is unknown, keep the labeled line and use \u201cdonn\u00e9e non pr\u00e9cis\u00e9e\u201d.\nOutput to meta tool (final step)\nSend exactly this JSON and wait for the tool\u2019s response:\n{\n\"id\": \"<Shopify Product ID>\",\n\"3_argument_client\": \"<HTML content>\",\n\"ingredients\": \"<HTML content>\",\n\"recommandations\": \"<HTML content>\",\n\"valeurs_nutritionnelles\": \"<HTML content>\",\n\"avertissement\": \"<HTML content>\",\n\"description_courte\": \"<HTML content>\"\n}\nThen end with \u201csuccess\u201d."
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "53acc383-5b1c-46a7-9bc0-6ea45d3460d4",
      "name": "Seo fields",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        352,
        1536
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "=You are an expert Shopify SEO specialist focused on creating optimized meta descriptions for the French market.\n\nCONTEXT & OBJECTIVE:\nYour mission is to create compelling meta descriptions in French for Shopify product pages, targeting French consumers. These descriptions will appear in Google search results and must encourage clicks while being informative and trustworthy.\n\nSTRICT LINEAR WORKFLOW:\nFollow this EXACT sequence - do NOT repeat steps or call tools multiple times:\n\nSTEP 1: RESEARCH PHASE (Call Perplexity ONCE):\n- Make ONE comprehensive Perplexity search covering:\n  * \"meta description SEO best practices {{$today.year}} French ecommerce avoid keyword stuffing\"\n  * Include: organic reach optimization, CTR improvement, French market trends\n- Complete ALL research in this single call\n- Do NOT call Perplexity again after this step\n\nSTEP 2: DATA COLLECTION (Call Airtable_search2):\n- Search Airtable using the product 'handle' as filter\n- Retrieve the 'shortlisted_keywords' field specifically\n- Collect any additional product information available\n- Complete data gathering in this single call\n\nSTEP 3: META DESCRIPTION CREATION:\n- Use ALL collected data to create the French meta description:\n  * Product data from input (id, title, body_html, product_type, handle)\n  * shortlisted_keywords from Airtable\n  * SEO insights from Perplexity research\n- Create the optimized meta description following requirements below\n\nSTEP 4: FINAL PROCESSING (Call meta_description tool):\n- Send the created meta description to meta_description tool\n- Wait for tool response and apply any final optimizations\n\nSTEP 5: RETURN RESULT:\n- Provide final JSON response\n\nINPUT DATA STRUCTURE:\nYou will receive:\n- id: Shopify Product ID (keep as-is)\n- title: Complete product title (brand, flavor, size, etc.)\n- body_html: Full HTML description (reference only)\n- product_type: Product category\n- handle: Shopify product handle (use this to search Airtable for shortlisted_keywords)\n\nAIRTABLE SEARCH INSTRUCTIONS:\n- Filter by: handle = [provided handle value]\n- Retrieve: shortlisted_keywords field\n- Get any additional product details available\n- Use this data for keyword integration\n\nMETA DESCRIPTION REQUIREMENTS:\n\n1. LANGUAGE & STYLE:\n   - Write EXCLUSIVELY in correct, natural French\n   - Professional but accessible tone for French consumers\n   - Use contemporary French expressions based on research findings\n\n2. TECHNICAL CONSTRAINTS:\n   - Maximum 155 characters (including spaces)\n   - No HTML tags, markdown, or special formatting\n   - Natural punctuation that improves readability\n\n3. CONTENT STRATEGY (Based on Research):\n   - Start with most compelling product benefit\n   - Naturally integrate 1-2 shortlisted keywords from Airtable\n   - Highlight unique selling proposition\n   - Apply SEO best practices from Perplexity research\n   - Focus on French market preferences\n\n4. OPTIMIZATION PRINCIPLES:\n   - Apply anti-keyword stuffing techniques from research\n   - Use semantic keyword variations when appropriate\n   - Create click-worthy content without overselling\n   - Ensure factual accuracy using only provided data\n\nTOOL CALL SEQUENCE:\n1. Perplexity (research) \u2192 ONCE ONLY\n2. Airtable_search2 (get shortlisted_keywords by handle) \u2192 ONCE ONLY  \n3. Create meta description using all data\n4. meta_description (final processing) \u2192 ONCE ONLY\n5. Return JSON result\n\nRESPONSE FORMAT:\nAfter completing ALL steps, respond with ONLY this exact JSON object:\n\n{\n  \"id\": \"<copy the provided id>\",\n  \"description\": \"<your research-optimized French meta description>\"\n}\n\nCRITICAL EXECUTION RULES:\n- Call each tool EXACTLY ONCE in the specified order\n- Do NOT loop back to previous steps\n- Do NOT call Perplexity multiple times\n- DO use the handle field to filter Airtable search for shortlisted_keywords\n- Complete data collection BEFORE creating meta description\n- Apply research insights throughout the creation process\n\nMANDATORY VERIFICATION:\nBefore final response, confirm:\n\u2713 Perplexity research completed (ONCE)\n\u2713 Airtable searched using handle filter for shortlisted_keywords\n\u2713 Meta description created using ALL available data\n\u2713 meta_description tool processed the result\n\u2713 Description is in perfect French (155 chars max)\n\u2713 Keywords naturally integrated from Airtable data\n\u2713 JSON properly formatted\n\nQUALITY EXAMPLES:\n\u274c \"Bum Essential Performance, Blue Rathberry - 618 grams\" (direct copy, no optimization)\n\u2705 \"Compl\u00e9ment performance aux fruits rouges, 618g. Formule premium pour sportifs exigeants. Go\u00fbt naturel de myrtille.\" (natural, benefit-focused, keyword-integrated)\n\nExecute the workflow in the exact order specified - no deviations, no repeated tool calls."
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "814eb6de-d92e-4a93-8681-e8e5bea142d4",
      "name": "Simple Memory4",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        2848,
        1248
      ],
      "parameters": {
        "sessionKey": "={{ $now.minute }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "f14493ab-492a-4651-b542-c3a9fbd18fe0",
      "name": "MCP Server Trigger",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        4976,
        -304
      ],
      "parameters": {
        "path": "468824ea-714c-4967-b0cc-9e14f8356e1a"
      },
      "typeVersion": 2
    },
    {
      "id": "b10ef40e-80d1-479b-bb0d-8a879a7e1eb7",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        4496,
        -592
      ],
      "parameters": {
        "color": 6,
        "width": 1408,
        "height": 1008,
        "content": "# Airtable Server"
      },
      "typeVersion": 1
    },
    {
      "id": "78a1a31d-1b43-424a-bfd2-3d04a41085f7",
      "name": "Seo Compliance  Checker",
      "type": "@n8n/n8n-nodes-langchain.agentTool",
      "position": [
        2576,
        2720
      ],
      "parameters": {
        "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Prompt__User_Message_', ``, 'string') }}",
        "options": {
          "systemMessage": "=You are the SEO Compliance Checker Agent in a French-focused Shopify SEO automation workflow.\n\n### Inputs:\n\nYou will receive from the Orchestrator either:\n\n1. **Premium Keyword Discovery JSON input**:  \nA JSON object containing at least the fields:\n\n- `\"haloscan_keyword_overview\"`  \n- `\"perplexity_summary\"`\n\nalong with the associated product `handle` string.\n\n\n\n### Input type detection and routing:\n\n- If the input is a JSON object that contains both `\"haloscan_keyword_overview\"` and `\"perplexity_summary\"` fields, treat it as **Premium Keyword Discovery JSON input** and process accordingly.\n\n\n\n### Workflow for **Premium Keyword Discovery JSON input**:\n\n1. Extract all related keywords by:\n\n   - Taking the first keyword in `\"keyword_match\"` as the primary keyword.\n   \n   - Including all keywords from `\"keyword_match\"` and `\"similar_highlight\"` arrays.\n   \n   - Deduplicating the combined keyword list.\n\n2. For each keyword **individually**, build this payload:\n\n{\n\"keyword\": \"<keyword>\",\n\"period\": \"5 months\"\n}\n\n\n\nand call the Haloscan `/api/keywords/serp-compare` HTTP endpoint.\n\n3. Collect all responses.\n\n4. Analyze overlap data to identify keywords **already ranking on your domain** (e.g., `https://www.super-bw-supps.fr`), excluding those linked to the current product or its variants.\n\n5. Remove such keywords from your candidate list to avoid cannibalization.\n\n6. Select from the remaining keywords the one with the lowest overlap and highest search volume as the assigned secondary keyword.\n\n7. Update Airtable by setting the `shortlisted_keywords` field with the filtered keyword list (JSON string or comma-separated) where the record's `Handle` matches the product handle.\n\n8. Using:\n\n   - The filtered shortlisted keywords,  \n   - The original `\"perplexity_summary\"`,  \n   - The latest SEO trends and French buyer search intent,\n\nformulate a prompt and call the Perplexity agent to generate a rich, actionable **SEO content strategy**.\n\n9. Return the **SEO strategy text** generated by Perplexity back to the Orchestrator agent.\n\n---\n\n\n\n### General Guidelines:\n\n- Always detect input type accurately before processing.\n\n- Ensure **serp-compare API calls happen before Perplexity** in the JSON input path.\n\n- Apply retries on API or agent calls as needed.\n\n- Return **only** the expected outputs for the input type.\n\n- Never output raw or intermediate API responses to the Orchestrator unless explicitly requested.\n\n- Follow French SEO and legal standards strictly.\n\n- Maintain clear, concise, and technically precise communication.\n\n---\n\n### Workflow Entry Point:\n\n- On receiving input, identify its type by examining key fields or content structure.\n\n- If JSON Premium Keyword Discovery, execute keyword extraction, per-keyword serp-compare calls, filtering, Airtable update, Perplexity SEO strategy generation, and return strategy text.\n\n"
        }
      },
      "typeVersion": 2.2
    },
    {
      "id": "b1aa4037-f0f5-4e33-8a0f-a2d48d7947c2",
      "name": "Message a model in Perplexity4",
      "type": "n8n-nodes-base.perplexityTool",
      "position": [
        2944,
        2960
      ],
      "parameters": {
        "model": "sonar",
        "options": {},
        "messages": {
          "message": [
            {
              "content": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('message0_Text', ``, 'string') }}"
            }
          ]
        },
        "requestOptions": {}
      },
      "credentials": {
        "perplexityApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "632544c0-5ccd-43e3-8829-475c17f87768",
      "name": "Simple Memory5",
      "type": "@n8n/n8n-nodes-langchain.memoryBufferWindow",
      "position": [
        2560,
        2992
      ],
      "parameters": {
        "sessionKey": "={{ $now.minute }}",
        "sessionIdType": "customKey",
        "contextWindowLength": 10
      },
      "typeVersion": 1.3
    },
    {
      "id": "56215f09-5eed-42c6-811f-2ff49e4421cd",
      "name": "Shopify Trigger",
      "type": "n8n-nodes-base.shopifyTrigger",
      "position": [
        4944,
        -784
      ],
      "parameters": {
        "topic": "products/create",
        "authentication": "accessToken"
      },
      "credentials": {
        "shopifyAccessTokenApi": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 1
    },
    {
      "id": "ed0f0796-4bbb-479b-9840-d518ed9be382",
      "name": "Create a record3",
      "type": "n8n-nodes-base.airtable",
      "position": [
        5200,
        -784
      ],
      "parameters": {
        "base": {
          "__rl": true,
          "mode": "list",
          "value": "app65XMer1P0UAiZn",
          "cachedResultUrl": "https://airtable.com/app65XMer1P0UAiZn",
          "cachedResultName": "Shopify _Dor_Kiss"
        },
        "table": {
          "__rl": true,
          "mode": "list",
          "value": "tbl5wYuZzO4ShCrGi",
          "cachedResultUrl": "https://airtable.com/app65XMer1P0UAiZn/tbl5wYuZzO4ShCrGi",
          "cachedResultName": "Product_table"
        },
        "columns": {
          "value": {
            "Title": "={{ $json.title }}",
            "Handle": "={{ $json.handle }}"
          },
          "schema": [
            {
              "id": "Handle",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Handle",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Title",
              "type": "string",
              "display": true,
              "removed": false,
              "readOnly": false,
              "required": false,
              "displayName": "Title",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Body (HTML)",
              "type": "string",
              "display": true,
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Body (HTML)",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Vendor",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Rule One",
                  "value": "Rule One"
                },
                {
                  "name": "5% Nutrition",
                  "value": "5% Nutrition"
                },
                {
                  "name": "Raw Nutrition",
                  "value": "Raw Nutrition"
                },
                {
                  "name": "Nordic Naturals",
                  "value": "Nordic Naturals"
                },
                {
                  "name": "JNX Sports",
                  "value": "JNX Sports"
                },
                {
                  "name": "AllMax Nutrition",
                  "value": "AllMax Nutrition"
                },
                {
                  "name": "Nutrend",
                  "value": "Nutrend"
                },
                {
                  "name": "Weider",
                  "value": "Weider"
                },
                {
                  "name": "Nutrex",
                  "value": "Nutrex"
                },
                {
                  "name": "Revive",
                  "value": "Revive"
                },
                {
                  "name": "Doctor's Best",
                  "value": "Doctor's Best"
                },
                {
                  "name": "Life Extension",
                  "value": "Life Extension"
                },
                {
                  "name": "MuscleMeds",
                  "value": "MuscleMeds"
                },
                {
                  "name": "Garden of Life",
                  "value": "Garden of Life"
                },
                {
                  "name": "BPI Sports",
                  "value": "BPI Sports"
                },
                {
                  "name": "MHP",
                  "value": "MHP"
                },
                {
                  "name": "Animal",
                  "value": "Animal"
                },
                {
                  "name": "Allnutrition",
                  "value": "Allnutrition"
                },
                {
                  "name": "Skill Nutrition",
                  "value": "Skill Nutrition"
                },
                {
                  "name": "Dorian Yates",
                  "value": "Dorian Yates"
                },
                {
                  "name": "Applied Nutrition",
                  "value": "Applied Nutrition"
                },
                {
                  "name": "Carlson Labs",
                  "value": "Carlson Labs"
                },
                {
                  "name": "NOW Foods",
                  "value": "NOW Foods"
                },
                {
                  "name": "Olimp Nutrition",
                  "value": "Olimp Nutrition"
                },
                {
                  "name": "Xtend",
                  "value": "Xtend"
                },
                {
                  "name": "Bucked Up",
                  "value": "Bucked Up"
                },
                {
                  "name": "Evogen",
                  "value": "Evogen"
                },
                {
                  "name": "Puritan's Pride",
                  "value": "Puritan's Pride"
                },
                {
                  "name": "Enzymedica",
                  "value": "Enzymedica"
                },
                {
                  "name": "Mutant",
                  "value": "Mutant"
                },
                {
                  "name": "Osavi",
                  "value": "Osavi"
                },
                {
                  "name": "",
                  "value": ""
                },
                {
                  "name": "Universal Nutrition",
                  "value": "Universal Nutrition"
                },
                {
                  "name": "Swanson",
                  "value": "Swanson"
                },
                {
                  "name": "OstroVit",
                  "value": "OstroVit"
                },
                {
                  "name": "SmartShake",
                  "value": "SmartShake"
                },
                {
                  "name": "Natural Vitality",
                  "value": "Natural Vitality"
                },
                {
                  "name": "NeoCell",
                  "value": "NeoCell"
                },
                {
                  "name": "EFX Sports",
                  "value": "EFX Sports"
                },
                {
                  "name": "ProSupps",
                  "value": "ProSupps"
                },
                {
                  "name": "GAT",
                  "value": "GAT"
                },
                {
                  "name": "HR Labs",
                  "value": "HR Labs"
                },
                {
                  "name": "PEScience",
                  "value": "PEScience"
                },
                {
                  "name": "American Supps",
                  "value": "American Supps"
                },
                {
                  "name": "Trec Nutrition",
                  "value": "Trec Nutrition"
                },
                {
                  "name": "Gaspari Nutrition",
                  "value": "Gaspari Nutrition"
                },
                {
                  "name": "Trained by JP",
                  "value": "Trained by JP"
                },
                {
                  "name": "Stacker2 Europe",
                  "value": "Stacker2 Europe"
                },
                {
                  "name": "Cellucor",
                  "value": "Cellucor"
                },
                {
                  "name": "Warrior",
                  "value": "Warrior"
                },
                {
                  "name": "Hype",
                  "value": "Hype"
                },
                {
                  "name": "Naughty Boy",
                  "value": "Naughty Boy"
                },
                {
                  "name": "Reflex Nutrition",
                  "value": "Reflex Nutrition"
                },
                {
                  "name": "ZOE Nutrition",
                  "value": "ZOE Nutrition"
                },
                {
                  "name": "Axe & Sledge",
                  "value": "Axe & Sledge"
                },
                {
                  "name": "Yamamoto Nutrition",
                  "value": "Yamamoto Nutrition"
                },
                {
                  "name": "Kaged Muscle",
                  "value": "Kaged Muscle"
                },
                {
                  "name": "RYSE",
                  "value": "RYSE"
                },
                {
                  "name": "Redcon1",
                  "value": "Redcon1"
                },
                {
                  "name": "EVLution Nutrition",
                  "value": "EVLution Nutrition"
                },
                {
                  "name": "Bum Energy",
                  "value": "Bum Energy"
                },
                {
                  "name": "Strom Sports",
                  "value": "Strom Sports"
                },
                {
                  "name": "Jarrow Formulas",
                  "value": "Jarrow Formulas"
                },
                {
                  "name": "Zoomad Labs",
                  "value": "Zoomad Labs"
                },
                {
                  "name": "MuscleTech",
                  "value": "MuscleTech"
                },
                {
                  "name": "CNP",
                  "value": "CNP"
                },
                {
                  "name": "Alien8",
                  "value": "Alien8"
                },
                {
                  "name": "ALRI",
                  "value": "ALRI"
                },
                {
                  "name": "Levann",
                  "value": "Levann"
                },
                {
                  "name": "Efectiv Nutrition",
                  "value": "Efectiv Nutrition"
                },
                {
                  "name": "SAN",
                  "value": "SAN"
                },
                {
                  "name": "Himalaya",
                  "value": "Himalaya"
                },
                {
                  "name": "Zenwise",
                  "value": "Zenwise"
                },
                {
                  "name": "Zein Pharma",
                  "value": "Zein Pharma"
                },
                {
                  "name": "Natrol",
                  "value": "Natrol"
                },
                {
                  "name": "KIKI Health",
                  "value": "KIKI Health"
                },
                {
                  "name": "Child Life",
                  "value": "Child Life"
                },
                {
                  "name": "Holland & Barrett",
                  "value": "Holland & Barrett"
                },
                {
                  "name": "Pro Tan",
                  "value": "Pro Tan"
                },
                {
                  "name": "Primaforce",
                  "value": "Primaforce"
                },
                {
                  "name": "Nature's Answer",
                  "value": "Nature's Answer"
                },
                {
                  "name": "BetterYou",
                  "value": "BetterYou"
                },
                {
                  "name": "Controlled Labs",
                  "value": "Controlled Labs"
                },
                {
                  "name": "Labrada",
                  "value": "Labrada"
                },
                {
                  "name": "Absolute Nutrition",
                  "value": "Absolute Nutrition"
                },
                {
                  "name": "Molecular Nutrition",
                  "value": "Molecular Nutrition"
                },
                {
                  "name": "Trace Minerals",
                  "value": "Trace Minerals"
                },
                {
                  "name": "Obvi",
                  "value": "Obvi"
                },
                {
                  "name": "Gorillalpha",
                  "value": "Gorillalpha"
                },
                {
                  "name": "LifeSeasons",
                  "value": "LifeSeasons"
                },
                {
                  "name": "MitoQ",
                  "value": "MitoQ"
                },
                {
                  "name": "Remedy Relief",
                  "value": "Remedy Relief"
                },
                {
                  "name": "Brain Gains",
                  "value": "Brain Gains"
                }
              ],
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Vendor",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Product Category",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Herbal Supplements",
                  "value": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Herbal Supplements"
                },
                {
                  "name": "Uncategorized",
                  "value": "Uncategorized"
                },
                {
                  "name": "",
                  "value": ""
                },
                {
                  "name": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Amino Acids",
                  "value": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Amino Acids"
                },
                {
                  "name": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements",
                  "value": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements"
                },
                {
                  "name": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Multivitamin Supplements",
                  "value": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Multivitamin Supplements"
                },
                {
                  "name": "Health & Beauty > Health Care > Fitness & Nutrition > Nutrition Drinks & Shakes",
                  "value": "Health & Beauty > Health Care > Fitness & Nutrition > Nutrition Drinks & Shakes"
                },
                {
                  "name": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Protein Supplements",
                  "value": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Protein Supplements"
                },
                {
                  "name": "Health & Beauty > Health Care > Medical Tests",
                  "value": "Health & Beauty > Health Care > Medical Tests"
                },
                {
                  "name": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Minerals",
                  "value": "Health & Beauty > Health Care > Fitness & Nutrition > Vitamins & Supplements > Minerals"
                }
              ],
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Product Category",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Type",
              "type": "options",
              "display": true,
              "options": [
                {
                  "name": "Slimming and Weight Management",
                  "value": "Slimming and Weight Management"
                },
                {
                  "name": "Nitric Oxide Boosters",
                  "value": "Nitric Oxide Boosters"
                },
                {
                  "name": "Pre & Post Workout",
                  "value": "Pre & Post Workout"
                },
                {
                  "name": "Health and Wellbeing",
                  "value": "Health and Wellbeing"
                },
                {
                  "name": "Amino Acids and BCAAs",
                  "value": "Amino Acids and BCAAs"
                },
                {
                  "name": "Health Foods",
                  "value": "Health Foods"
                },
                {
                  "name": "Protein",
                  "value": "Protein"
                },
                {
                  "name": "Post Cycle Recovery",
                  "value": "Post Cycle Recovery"
                },
                {
                  "name": "Creatine Supplements",
                  "value": "Creatine Supplements"
                },
                {
                  "name": "Joint Support",
                  "value": "Joint Support"
                },
                {
                  "name": "Omegas, EFAs, CLA, Oils",
                  "value": "Omegas, EFAs, CLA, Oils"
                },
                {
                  "name": "Hair and Nails",
                  "value": "Hair and Nails"
                },
                {
                  "name": "Natural Testosterone Support",
                  "value": "Natural Testosterone Support"
                },
                {
                  "name": "Vitamins & Minerals",
                  "value": "Vitamins & Minerals"
                },
                {
                  "name": "Special Formula",
                  "value": "Special Formula"
                },
                {
                  "name": "L-Glutamine, Glutamine",
                  "value": "L-Glutamine, Glutamine"
                },
                {
                  "name": "Sexual Health",
                  "value": "Sexual Health"
                },
                {
                  "name": "Weight Gainers & Carbs",
                  "value": "Weight Gainers & Carbs"
                },
                {
                  "name": "",
                  "value": ""
                },
                {
                  "name": "Supplements for Women",
                  "value": "Supplements for Women"
                },
                {
                  "name": "Accessories",
                  "value": "Accessories"
                },
                {
                  "name": "Intra Workout",
                  "value": "Intra Workout"
                },
                {
                  "name": "Children's Health",
                  "value": "Children's Health"
                },
                {
                  "name": "Mood Enhancement",
                  "value": "Mood Enhancement"
                },
                {
                  "name": "Pet supplements",
                  "value": "Pet supplements"
                },
                {
                  "name": "Hydration/Isotonic Drinks",
                  "value": "Hydration/Isotonic Drinks"
                },
                {
                  "name": "BCAAs & EAAs",
                  "value": "BCAAs & EAAs"
                },
                {
                  "name": "Carb Supplements",
                  "value": "Carb Supplements"
                },
                {
                  "name": "Drinks and Shakes",
                  "value": "Drinks and Shakes"
                },
                {
                  "name": "Vegan Products",
                  "value": "Vegan Products"
                },
                {
                  "name": "Beauty",
                  "value": "Beauty"
                },
                {
                  "name": "[MGO] Import Powerbody",
                  "value": "[MGO] Import Powerbody"
                },
                {
                  "name": "Protein Bars",
                  "value": "Protein Bars"
                },
                {
                  "name": "Endurance",
                  "value": "Endurance"
                },
                {
                  "name": "Single Vitamins",
                  "value": "Single Vitamins"
                },
                {
                  "name": "Immune System Support",
                  "value": "Immune System Support"
                },
                {
                  "name": "Single Minerals",
                  "value": "Single Minerals"
                },
                {
                  "name": "Liver Support",
                  "value": "Liver Support"
                },
                {
                  "name": "Sylwetka",
                  "value": "Sylwetka"
                },
                {
                  "name": "Stacks & Kits",
                  "value": "Stacks & Kits"
                },
                {
                  "name": "Antioxidants",
                  "value": "Antioxidants"
                },
                {
                  "name": "Digestive Health, Fiber",
                  "value": "Digestive Health, Fiber"
                },
                {
                  "name": "Essential Oils",
                  "value": "Essential Oils"
                },
                {
                  "name": "Bars",
                  "value": "Bars"
                },
                {
                  "name": "Vitality",
                  "value": "Vitality"
                },
                {
                  "name": "High Carb Gainers",
                  "value": "High Carb Gainers"
                },
                {
                  "name": "Healthy Skin",
                  "value": "Healthy Skin"
                },
                {
                  "name": "Whey Protein Isolate",
                  "value": "Whey Protein Isolate"
                },
                {
                  "name": "Post Workout Recovery",
                  "value": "Post Workout Recovery"
                },
                {
                  "name": "Mental Focus and Memory",
                  "value": "Mental Focus and Memory"
                },
                {
                  "name": "Meal Replacements",
                  "value": "Meal Replacements"
                },
                {
                  "name": "Pre Workout Energy",
                  "value": "Pre Workout Energy"
                },
                {
                  "name": "Samples",
                  "value": "Samples"
                },
                {
                  "name": "Masa",
                  "value": "Masa"
                },
                {
                  "name": "Vegetarian",
                  "value": "Vegetarian"
                },
                {
                  "name": "Energy Drinks",
                  "value": "Energy Drinks"
                },
                {
                  "name": "Combos",
                  "value": "Combos"
                },
                {
                  "name": "Toothpaste",
                  "value": "Toothpaste"
                },
                {
                  "name": "Men's Vitamins",
                  "value": "Men's Vitamins"
                }
              ],
              "removed": true,
              "readOnly": false,
              "required": false,
              "displayName": "Type",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "Tags",
              "type": "array",
              "display": true,
              "options": [
                {
                  "name": "iso",
                  "value": "iso"
                },
                {
                  "name": "nitrique",
                  "value": "nitrique"
                },
                {
                  "name": "pre",
                  "value": "pre"
                },
                {
                  "name": "thermo",
                  "value": "thermo"
                },
                {
                  "name": "intra",
                  "value": "intra"
                },
                {
                  "name": "post",
                  "value": "post"
                },
                {
                  "name": "bcaapoudre",
                  "value": "bcaapoudre"
                },
                {
                  "name": "diu",
                  "value": "diu"
                },
                {
                  "name": "frambois",
                  "value": "frambois"
                },
                {
                  "name": "test",
                  "value": "test"
                },
                {
                  "name": "multivit",
                  "value": "multivit"
                },
                {
                  "name": "zma",
                  "value": "zma"
                },
                {
                  "name": "tribulus",
                  "value": "tribulus"
                },
                {
                  "name": "boissons",
                  "value": "boissons"
                },
                {
                  "name": "eaa",
                  "value": "eaa"
                },
                {
                  "name": "aasimple",
                  "value": "aasimple"
                },
                {
                  "name": "crea",
                  "value": "crea"
                },
                {
                  "name": "creaautre",
                  "value": "creaautre"
                },
                {
   

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

How this works

This workflow automatically generates SEO-optimised product descriptions, titles and metadata for Shopify stores by combining Perplexity keyword research with a multi-agent system powered by GPT-4o and Claude models. It suits Shopify merchants and e-commerce teams who need consistent, high-quality content at scale without manual research or drafting. The key step is the orchestrator agent that coordinates research, writing and review across the different models before pushing finished content back into Shopify.

Use it for regular product launches or large catalogues where speed and consistency matter; avoid it for one-off items or when brand voice requires heavy human editing. Common variations include swapping the final review agent for a human approval step or restricting output to title and meta descriptions only.

About this workflow

The AI-Powered Shopify SEO Content Automation is an enterprise-grade workflow that transforms product content creation for e-commerce stores. This sophisticated multi-agent system integrates GPT-4o, Claude Sonnet 4, Claude 3.5, Perplexity AI, and Haloscan keyword research to…

Source: https://n8n.io/workflows/7511/ — original creator credit. Request a take-down →

More AI & RAG workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

AI & RAG

How it Works

Memory Buffer Window, Agent, Output Parser Structured +9
AI & RAG

Deep Research new (fr). Uses outputParserStructured, formTrigger, chainLlm, form. Event-driven trigger; 82 nodes.

Output Parser Structured, Form Trigger, Chain Llm +8
AI & RAG

Typeform IA - YT. Uses typeformTrigger, agent, lmChatOpenAi, toolWorkflow. Event-driven trigger; 75 nodes.

Typeform Trigger, Agent, OpenAI Chat +7
AI & RAG

Agent Nodes. Uses lmChatOpenAi, slack, stopAndError, errorTrigger. Event-driven trigger; 72 nodes.

OpenAI Chat, Slack, Stop And Error +12
AI & RAG

Who is this for? Agencies, consultants, and service providers who conduct discovery calls and need to quickly turn conversations into professional proposals.

Tool Think, Tool Calculator, Agent Tool +18