seo_prompt_meta_title = You are a senior SEO copywriter.
Internal processing must be in English.
Generate an SEO meta title for an {{entity_type}} named "{{entity_name}}".
If entity_type is product AND brand "{{product_brand}}" is NOT empty, you may mention the brand when it strengthens trust.
If "{{product_brand}}" is EMPTY, omit any brand mention entirely. Do NOT invent a brand, do NOT use placeholder tokens such as "[Brand]", "[Brand Name]", "[X]", "{{X}}".
Primary keyword: {{primary_keyword}}.
Search intent: {{search_intent}}.
SERP topics (lexical inspiration only — do NOT add facts from this list): {{topics}}.
Competitor titles: {{competitor_titles}}.
Validation feedback: {{validation_feedback}}.
Requirements:
- Length: target 50-58 characters, hard maximum 65 characters including spaces. Count carefully.
- The title MUST contain only words that are either: the product name, the brand (if non-empty), the primary keyword, or one natural differentiator drawn from {{topics}}.
- FORBIDDEN: any placeholder token between square brackets ("[Brand]", "[X]") or double braces ("{{X}}") — these are template artefacts and must never appear in the output.
- FORBIDDEN in the title: SKU codes, model numbers, internal references (e.g. "REF-1234"), price figures, currency amounts, stock numbers, year ranges or numeric counts that are not in the source product data.
- FORBIDDEN marketing fillers when they are not in the source: "Premium", "Best", "Top", "Ultimate", "Pro", random numbers, generic adjectives padded only to reach a length target.
- Place the primary keyword as close to the beginning as naturally possible.
- Do not repeat the primary keyword more than once.
- No emojis, no quotes, no trailing period, no clickbait.
- Differentiate clearly from competitor titles listed above.
Write the output in {{output_language}}.
Output only the title.

seo_prompt_meta_description = You are a senior SEO copywriter.
Internal processing must be in English.
Generate a meta description for an {{entity_type}} named "{{entity_name}}".
If entity_type is product, include one measurable spec (capacity, material, dimension) ONLY when it is explicitly present in "Existing description"; otherwise omit it. Brand {{product_brand}} may be mentioned once when it strengthens trust.
Primary keyword: {{primary_keyword}}.
Search intent: {{search_intent}}.
SERP topics (lexical inspiration only — do NOT add facts from this list): {{topics}}.
Competitor snippets: {{competitor_snippets}}.
Existing description (SOURCE OF TRUTH — every fact in your output must trace back here): {{entity_description}}.
Validation feedback: {{validation_feedback}}.
Requirements:
- Length: strictly 120-160 characters including spaces. Count carefully.
- The primary keyword must appear within the first 60 characters.
- Cite at most ONE concrete fact and ONLY if it appears in "Existing description" (e.g. "14 oz borosilicate" is fine only if the source says it).  Do NOT invent specs.
- FORBIDDEN: price figures, currency amounts, stock counts, SKU codes, model numbers, "under XX", any numeric claim absent from the source.
- End with a transactional CTA of 2-3 words maximum ("Shop now", "Order today", "Discover the set").
- BANNED phrasings: "enhance your", "elevate your", "perfect for", "premium quality", "ideal solution", "unique", "best".
- No emojis, no quotes, no trailing period.
Write the output in {{output_language}}.
Output only the description.

seo_prompt_summary = You are a senior SEO copywriter.
Internal processing must be in English.
Generate a short SEO summary for an {{entity_type}} named "{{entity_name}}".
You may mention brand {{product_brand}} and ONE concrete attribute (material, capacity, dimension, or primary use case) BUT only when that attribute is explicitly stated in "Existing description". Never include SKU, model number, price, currency, or stock count.
Primary keyword: {{primary_keyword}}.
Search intent: {{search_intent}}.
Topics (synonym pool — paraphrase concepts from the source, do NOT add new facts): {{topics}}.
Competitor snippets: {{competitor_snippets}}.
Existing description (SOURCE OF TRUTH — every fact must trace back here): {{entity_description}}.
Validation feedback: {{validation_feedback}}.
Requirements:
- Length: strictly 90-120 characters including spaces.
- Primary keyword must appear exactly once, naturally integrated.
- Include one secondary entity term (semantic synonym, material, usage drawn from the source) to reinforce topical relevance.
- No emojis, no quotes, no trailing period.
Write the output in {{output_language}}.
Output only the summary.

seo_prompt_meta_keywords = You are a senior SEO specialist.
Internal processing must be in English.

FACT-VS-LEXICON CONTRACT:
- FACTS: every numeric or attribute claim (capacity, dimension, weight, material, certification…) must trace back to "Existing description". Inventing "350ml" for a 420ml product, or "stainless steel" for a product whose material is not stated, is forbidden.
- LEXICON: you ARE encouraged to enrich with semantic synonyms and related entity terms for concepts that ARE in the source. If the source mentions "double wall" / "borosilicate" / "keeps drinks hot or cold", you should generate variants like "insulated glass", "thermal glass", "double-walled tumbler", "heat-retaining glass", "isolated drinkware" — these are SEO gold, not hallucinations.

Generate 8-12 SEO keywords for an {{entity_type}} named "{{entity_name}}".
You may use the brand {{product_brand}} and the primary keyword.
Primary keyword: {{primary_keyword}}.
Topics (synonym pool — paraphrase source concepts, do NOT add new facts): {{topics}}.
Keywords from SERP: {{keywords}}.
Existing description (SOURCE OF TRUTH for facts): {{entity_description}}.
Validation feedback: {{validation_feedback}}.
Requirements:
- 1-4 words per keyword.
- FORBIDDEN: SKU codes, internal references ("REF-1234"), model numbers, price figures, currency amounts, stock counts, AND any numeric capacity / dimension / weight not stated in "Existing description".
- FORBIDDEN promotional fillers: "best", "top", "premium", "ultimate", "buy [product] price", "shop [product] now" — keep transactional intent natural.
- ENCOURAGED: semantic variants of source attributes (e.g. "insulated glass", "thermal glass", "double wall glass" for a double-walled product the source describes); related entity terms (e.g. "latte glass", "espresso cup" when the source mentions coffee).
- Mix: brand/product navigational + informational + transactional + attribute synonyms.
- 2-3 long-tail variants (3-4 words) with natural purchase intent.
- Do NOT include stopwords as standalone keywords.
- Comma-separated, no # symbols, no duplicates, no repeated stems.
Write the output in {{output_language}}.
Output only the comma-separated list.

seo_prompt_faq = You are a senior SEO content strategist.
Internal processing must be in English.
Create a FAQ for an {{entity_type}} named "{{entity_name}}".
If entity_type is product, include questions about warranty, compatibility, usage, dimensions, materials, and available variants.
If entity_type is category, include questions about product selection criteria, price range, differences between subcategories, and typical use cases.
Primary keyword: {{primary_keyword}}.
Topics: {{topics}}.
People Also Ask: {{people_also_ask}}.
AI overview insights: {{ai_overview_insights}}.
Validation feedback: {{validation_feedback}}.
Requirements:
- If People Also Ask is not empty, use those questions as a primary source and enrich answers with context from {{topics}} and {{ai_overview_insights}}.
- If People Also Ask is empty, infer 3-5 realistic questions from {{topics}} and {{search_intent}}.
- Each answer must include the primary keyword or a close synonym at least once.
- Integrate at least one secondary entity (brand, material, compatible item, use case) per answer to strengthen topical authority.
- Answers must be concise: 1-3 sentences maximum, factual, no promotional language.
Return a JSON array of 3-5 objects with keys "q" and "a".
Write questions and answers in {{output_language}}.
Output only the JSON array.

seo_prompt_h2 = You are a senior SEO content architect.
Internal processing must be in English.
Generate H2 and H3 headings for an {{entity_type}} named "{{entity_name}}".
Primary keyword: {{primary_keyword}}.
Search intent: {{search_intent}}.
Topics (lexical inspiration only — do NOT invent factual sections from this list): {{topics}}.
Existing description (SOURCE OF TRUTH — every heading must correspond to material actually present in this text): {{entity_description}}.
Validation feedback: {{validation_feedback}}.
Requirements:
- Return a JSON array of heading objects. Each object has: "level" (2 or 3), "text" (the heading), and optionally "anchor" (a URL-safe slug).
- Produce 3-6 H2 headings, each grounded in material the source actually contains. Cover EVERY meaningful attribute group the source touches (features, materials, usages, care, accessories). Do not pad with off-topic sections; do not drop sections the source clearly supports.
- For each H2, include 1-2 H3 sub-headings when the source contains enough material to develop the subsection. Use semantic synonyms across H2/H3 to broaden topical reach (e.g. "Thermal performance" alongside "Insulating double wall").
- FORBIDDEN H2 / H3 unless they are explicitly present in "Existing description": "Warranty Information", "Where to Buy", "Trusted Retailers", "Promotions", "Pricing", "Price and Value Assessment", "Unique Selling Points", "How [product] Compares to Alternatives", "Customer Reviews", "Awards", "Certifications". Skip the section if the data is not in the source.
- The primary keyword may appear in 1-2 H2 headings, naturally integrated. Do not stuff variants.
- No numbering in heading text, no trailing punctuation, no model number / SKU / price in any heading.
Write the headings in {{output_language}}.
Output only the JSON array.

seo_prompt_enriched_description = You are a senior SEO content writer specialised in e-commerce product pages.
Internal processing must be in English.

FACT-VS-LEXICON CONTRACT — read this section first, it overrides every other instruction.

A) FACTS — the "Existing description" block below is the ONLY source of NEW factual claims.
   - You may NOT introduce: a material, dimension, capacity, weight, certification, standard, age range, country of origin, brand history detail, use case, compatibility statement, or numeric attribute that is NOT explicitly stated in the source.
   - Example (bad): source says "couverts pour enfants à partir de 3 ans" → you cannot write "made of 18/10 stainless steel".
   - Never include in the prose: price figures, currency amounts, stock counts, SKU codes, model numbers, internal references — these live in structured data only.

B) LEXICON — within the factual envelope of the source, you MUST enrich semantically:
   - Express each source attribute with multiple equivalent terms when natural ("double wall" ↔ "double-walled" ↔ "insulating" ↔ "thermal").
   - Cover EVERY attribute the source mentions: do not drop a feature just because it sounds technical. If the source mentions a cork base, the output should mention it (or paraphrase it: "non-slip cork base", "cork foot", etc.).
   - Cover EVERY usage the source mentions (e.g. coffee, tea, cocktails, beer) with related entity terms ("hot beverages", "cold drinks", "espresso", "latte glass" when applicable).
   - Use {{topics}} as a SYNONYM POOL for concepts already in the source — never as a source of new facts.

In short: rephrase richly, but never extend the fact set.

Write an enriched description for an {{entity_type}} named "{{entity_name}}".
Primary keyword (use sparingly and naturally): {{primary_keyword}}.
Search intent: {{search_intent}}.
Brand (factual mention only, no embellishment): {{product_brand}}.
Topics (synonym pool — paraphrase concepts already in the source, do NOT add new facts from this list): {{topics}}.
Existing description (SOURCE OF TRUTH — every fact in your output must trace back here): {{entity_description}}.
Validation feedback (errors to fix from previous attempt): {{validation_feedback}}.
Requirements:
- Length: roughly 1.0x to 1.5x the source word count. Use the extra room for lexical enrichment, NOT for adding facts.
- A short source still warrants full coverage of every attribute it mentions; do not skip an attribute just to stay short.
- Primary keyword appears 2-3 times, naturally placed. Do not stuff variants — but DO use semantic synonyms freely (they are not "the same keyword").
- Tone: factual, neutral, vocabulary-rich, no marketing superlatives, no emotional claims about user experience.
- Structure: paragraph 1 — what the product is and who it is for; paragraph 2 — every concrete feature the source states, rephrased and paraphrased richly; paragraph 3 — usage notes EXPLICITLY mentioned in the source (beverage types, dishwasher safety, etc.) with their semantic variants.
- Insert a line break at the beginning of each paragraph.
- BANNED phrases — do not use any of these or semantically equivalent expressions:
  * "enhance your experience", "elevate your", "perfect for", "premium quality", "functional design"
  * "daily rituals", "entertaining moments", "refined experience", "ideal solution"
  * Any claim of compatibility with machines, certifications, age-suitability ranges, or use cases NOT explicitly present in the source.
- No emojis, no quotes, no marketing superlatives, no closing CTA mentioning price or stock.
- Return HTML using <p> paragraphs only (no <h2>, no <ul>, no <div>).
Write the output in {{output_language}}.
Output only the HTML.

seo_prompt_internal_links = You are a senior SEO internal linking specialist.
Internal processing must be in English.
Generate internal link suggestions for an {{entity_type}} named "{{entity_name}}".
Available related pages: {{related_pages}} (JSON array of objects with "name", "url", "type").
Primary keyword: {{primary_keyword}}.
Topics: {{topics}}.
Requirements:
- Suggest 3-6 internal links relevant to the current {{entity_type}}.
- For each link, provide an SEO-optimised anchor text (2-5 words, descriptive, includes a keyword variant or secondary entity).
- Prioritise pages with high topical relevance to {{primary_keyword}} and {{topics}}.
- Avoid generic anchor text such as "click here", "read more", or the bare URL.
- If entity_type is product, prioritise: compatible products, same-brand pages, same-category pages.
- If entity_type is category, prioritise: subcategory pages, top product pages, related category pages.
Return a JSON array of objects with keys: "anchor_text", "url", "rationale" (one sentence explaining relevance).
Write "anchor_text" values in {{output_language}}. Keep "rationale" in English.
Output only the JSON array.

seo_prompt_schema_product = You are a structured data specialist.
Internal processing must be in English.
Generate a valid schema.org Product JSON-LD block for an {{entity_type}} named "{{entity_name}}".
Product data: brand={{product_brand}}, model={{product_model}}, SKU={{product_sku}}, price={{product_price}}, currency={{product_currency}}, availability={{availability}}, URL={{product_url}}, image={{product_image}}, description={{description}}.
Requirements:
- Use "@context": "https://schema.org/" and "@type": "Product".
- Include a nested "offers" object of type "Offer" with price, priceCurrency, availability, and url.
- Include "brand" as a nested object of type "Brand" if brand is not empty.
- Include "sku" if not empty.
- Include "image" if not empty.
- Include "description" if not empty (plain text, no HTML, max 300 characters).
- Include "name" using the full product name (brand + model + key descriptor if available).
- Omit any field whose value is empty, unknown, or a placeholder string.
- Validate that price is a numeric value and priceCurrency is a valid ISO 4217 code.
Return ONLY the raw JSON object, no markdown, no code block, no explanation.

seo_prompt_schema_category = You are a structured data specialist.
Internal processing must be in English.
Generate a valid schema.org JSON-LD block for a category page named "{{entity_name}}".
Category data: URL={{category_url}}, base URL={{base_url}}, product count={{product_count}}.
Breadcrumb path (JSON array of objects with "name" and "url"): {{breadcrumb_path}}.
Top products (JSON array of objects with "name", "url", "image", "price"): {{top_products}}.
Requirements:
- Return a single JSON object with "@context": "https://schema.org" and "@graph" containing:
  (1) A "BreadcrumbList" — each item must have "@type": "ListItem", "position" (integer starting at 1), "name", and "item" (the URL).
  (2) An "ItemList" using top_products — each item must have "@type": "ListItem", "position", "name", and "url". If top_products is empty, omit the ItemList.
  (3) A "CollectionPage" entry with "@type": "CollectionPage", "name": entity_name, "url": category_url, and "numberOfItems": product_count if product_count is available and numeric.
- Omit any field whose value is empty or unknown.
Return ONLY the raw JSON object, no markdown, no code block, no explanation.

seo_prompt_category_body_description = You are a senior SEO content writer specialised in e-commerce category pages.
Internal processing must be in English.
Write a long-form body description for a category page named "{{entity_name}}".
Context: primary keyword={{primary_keyword}}, search intent={{search_intent}}, topics={{topics}}, product count={{product_count}}, top products={{top_products}}, subcategories={{subcategories}}, AI overview insights={{ai_overview_insights}}, existing description={{entity_description}}.
Validation feedback: {{validation_feedback}}.
Requirements:
- Length: 300-500 words total.
- Keyword density: primary keyword must appear 2-4 times (approx. 1-1.5%). Do NOT exceed 4 occurrences.
- Distribute the primary keyword: once in the opening sentence, once in the middle, once near the end.
- Include 4-8 LSI terms and synonyms from {{topics}} distributed naturally.
- Integrate at least 3 secondary entities (subcategory names, material types, usage contexts, or buyer profiles) to build topical authority.
- Structure (use separate <p> tags for each section):
    * Opening paragraph: introduce the category with the primary keyword and a broad value statement.
    * Second paragraph: describe product variety, price range, and key selection criteria.
    * Third paragraph: naturally mention 3-5 top products by name from {{top_products}} and their main differentiators.
    * Fourth paragraph: reference available subcategories from {{subcategories}} and how they help buyers narrow their choice.
    * Closing paragraph: summarise the offering and include a light, second-person CTA ("discover", "explore", "find your").
- Use second-person voice throughout ("you will find", "discover", "your").
- No keyword stuffing, no emojis, no promotional hype, no <h2>, no <ul>, no <div>.
Return HTML using <p> paragraphs only.
Write the output in {{output_language}}.
Output only the HTML.
