[{"data":1,"prerenderedAt":75},["ShallowReactive",2],{"help-article-the-seo-ai-prompt":3},{"data":4},{"title":5,"excerpt":6,"content":7,"help_category":8,"seo":11},"The SEO AI Prompt","How m18t generates SEO metadata with a constrained AI prompt that knows your brand, content type, and resolved canonical URL — running on your own AI key.","\u003Cp>\u003Cstrong>What you&#39;ll learn\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>How m18t generates SEO metadata with a constrained AI prompt.\u003C\u002Fli>\n\u003Cli>What gets injected into that prompt — including the resolved canonical URL.\u003C\u002Fli>\n\u003Cli>Why injecting the canonical keeps generated URLs from being invented.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch2>The concept: a constrained prompt beats a blank one\u003C\u002Fh2>\n\u003Cp>Writing meta titles and descriptions is the kind of repetitive task an LLM is good at — but only if you constrain it. Ask a general chatbot to &quot;write an SEO description for this article&quot; and you get generic filler that could describe any post. m18t&#39;s SEO generation isn&#39;t a blank prompt; it&#39;s a tightly scoped one that already knows your brand, your content type, and the exact URL the piece will live at.\u003C\u002Fp>\n\u003Cp>This runs on your own AI key — \u003Ca href=\"\u002Fhelp\u002Fbyok-why-we-do-this\">BYOK\u003C\u002Fa>. m18t calls your configured text model through the \u003Ca href=\"\u002Fhelp\u002Fthe-secret-vault\">secret vault\u003C\u002Fa>; there&#39;s no bundled AI. If no AI key is set, the generate buttons are disabled with a tooltip explaining why.\u003C\u002Fp>\n\u003Ch2>How to generate SEO\u003C\u002Fh2>\n\u003Col>\n\u003Cli>Draft the piece in the content editor.\u003C\u002Fli>\n\u003Cli>Open the \u003Cstrong>SEO\u003C\u002Fstrong> tab.\u003C\u002Fli>\n\u003Cli>Click \u003Cstrong>Generate Meta with AI\u003C\u002Fstrong> (the sparkles button) next to the meta title or description. There are separate generators for \u003Cstrong>meta title \u002F description\u003C\u002Fstrong>, \u003Cstrong>keywords\u003C\u002Fstrong>, and \u003Cstrong>JSON-LD\u003C\u002Fstrong> (the JSON-LD button reads \u003Cstrong>Generate JSON-LD with AI\u003C\u002Fstrong>).\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The result lands in the field. It&#39;s a draft — edit it before publishing.\u003C\u002Fp>\n\u003Ch2>What gets injected into the prompt\u003C\u002Fh2>\n\u003Cp>m18t doesn&#39;t just forward your article text. For an SEO-category prompt, it assembles context before calling the model:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Brand context\u003C\u002Fstrong> — the active brand&#39;s name and voice signals, so the output matches how the brand sounds.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The content type&#39;s SEO hints\u003C\u002Fstrong> — the schema.org \u003Ccode>@type\u003C\u002Fcode> and the seed keywords from the type&#39;s \u003Ca href=\"\u002Fhelp\u002Fconfiguring-seo-defaults\">SEO defaults\u003C\u002Fa>.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The resolved canonical URL\u003C\u002Fstrong> — m18t computes the \u003Ca href=\"\u002Fhelp\u002Fcanonical-urls\">canonical\u003C\u002Fa> from the brand website, path prefix, locale, and slug, and injects that exact string into the prompt.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The article body\u003C\u002Fstrong> — the content the metadata is summarizing.\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>The canonical injection matters most for JSON-LD generation. The prompt carries an explicit instruction: use \u003Cem>only\u003C\u002Fem> the provided canonical URL, and if no canonical is available, omit the URL field entirely rather than guessing. That instruction is what stops the model from putting a made-up address into your structured data. It constrains the model strongly — it isn&#39;t a hard guarantee that a model can never err, but in practice the model is given the correct URL and told not to invent one.\u003C\u002Fp>\n\u003Ch2>Common variations\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Editing the output.\u003C\u002Fstrong> Generated metadata is a starting draft, not a final answer. The text goes into the field so you can tweak it before moving the piece toward \u003Ca href=\"\u002Fhelp\u002Fscheduling-vs-publishing\">publishing\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>No SEO defaults configured for the type.\u003C\u002Fstrong> If the (brand × type) has no defaults yet, the prompt falls back to sensible values (e.g. schema type \u003Ccode>Article\u003C\u002Fcode>, robots \u003Ccode>index, follow\u003C\u002Fcode>) and the canonical may be empty — in which case the JSON-LD omits the URL. Configure the type&#39;s \u003Ca href=\"\u002Fhelp\u002Fconfiguring-seo-defaults\">SEO defaults\u003C\u002Fa> to get a real canonical injected.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Tuning the prompt.\u003C\u002Fstrong> SEO prompts are AI Prompt Configs like any other, editable at \u003Ccode>\u002Fstudio\u002Fconfig\u002Fprompts\u003C\u002Fcode>. Platform defaults show a \u003Cstrong>Locked\u003C\u002Fstrong> badge; overriding them is an advanced move — usually you get better results by setting the brand and type up well rather than rewriting the prompt.\u003C\u002Fp>\n\u003Ch2>What&#39;s next\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fcanonical-urls\">Canonical URLs\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fstructured-data-json-ld\">Structured Data &amp; JSON-LD\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fbyok-why-we-do-this\">Why m18t uses BYOK\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fthe-seo-philosophy\">The SEO Philosophy\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>FAQ\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Why is the &quot;Generate Meta with AI&quot; button greyed out?\u003C\u002Fstrong>\nNo AI key is configured. SEO generation is BYOK — add an \u003Ca href=\"\u002Fhelp\u002Fget-an-openai-key\">OpenAI\u003C\u002Fa>, \u003Ca href=\"\u002Fhelp\u002Fget-a-gemini-key\">Gemini\u003C\u002Fa>, or \u003Ca href=\"\u002Fhelp\u002Fget-an-anthropic-key\">Anthropic\u003C\u002Fa> key in the \u003Ca href=\"\u002Fhelp\u002Fthe-secret-vault\">vault\u003C\u002Fa> and the buttons enable.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Can the AI hallucinate a wrong URL into my structured data?\u003C\u002Fstrong>\nm18t injects the resolved \u003Ca href=\"\u002Fhelp\u002Fcanonical-urls\">canonical URL\u003C\u002Fa> into the prompt and instructs the model to use only that URL — and to omit the URL field entirely if none is provided. That sharply reduces invented URLs; it isn&#39;t an absolute guarantee, so review JSON-LD before publishing.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Do I have to use the AI to fill SEO fields?\u003C\u002Fstrong>\nNo. Every SEO field is editable by hand. The AI generators are optional drafting helpers.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Which model does the SEO prompt use?\u003C\u002Fstrong>\nWhichever text model you&#39;ve configured for the prompt. m18t doesn&#39;t bundle a model — you bring your own provider key.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Can I change what the SEO prompt says?\u003C\u002Fstrong>\nYes, at \u003Ccode>\u002Fstudio\u002Fconfig\u002Fprompts\u003C\u002Fcode>, though platform prompts are Locked by default. For most brands, configuring the brand voice and the content type&#39;s defaults gives better output than rewriting the prompt.\u003C\u002Fp>\n",{"slug":9,"title":10},"seo","SEO",{"meta_title":12,"meta_description":6,"keywords":13,"canonical_url":14,"og_title":5,"og_description":15,"og_image":16,"robots":17,"json_ld":18},"The SEO AI Prompt | m18t Help","SEO AI prompt, generate meta with AI, BYOK, canonical injection, structured prompt, JSON-LD generation, meta title generation","https:\u002F\u002Fm18t.com\u002Fhelp\u002Fthe-seo-ai-prompt","A constrained prompt that already knows your brand, type, and exact canonical URL — generating SEO metadata on your own AI key.","https:\u002F\u002Fm18t.com\u002Fog-default.png","index, follow",{"@context":19,"@graph":20},"https:\u002F\u002Fschema.org",[21,34,59],{"@type":22,"headline":5,"description":6,"articleSection":10,"inLanguage":23,"datePublished":24,"dateModified":24,"image":16,"author":25,"publisher":29,"mainEntityOfPage":32},"Article","en","2026-06-25",{"@type":26,"name":27,"url":28},"Organization","m18t","https:\u002F\u002Fm18t.com",{"@type":26,"name":27,"url":28,"logo":30},{"@type":31,"url":16},"ImageObject",{"@type":33,"@id":14},"WebPage",{"@type":35,"mainEntity":36},"FAQPage",[37,43,47,51,55],{"@type":38,"name":39,"acceptedAnswer":40},"Question","Why is the \"Generate Meta with AI\" button greyed out?",{"@type":41,"text":42},"Answer","No AI key is configured. SEO generation is BYOK — add an OpenAI, Gemini, or Anthropic key in the vault and the buttons enable.",{"@type":38,"name":44,"acceptedAnswer":45},"Can the AI hallucinate a wrong URL into my structured data?",{"@type":41,"text":46},"m18t injects the resolved canonical URL into the prompt and instructs the model to use only that URL — and to omit the URL field entirely if none is provided. That sharply reduces invented URLs; it isn't an absolute guarantee, so review JSON-LD before publishing.",{"@type":38,"name":48,"acceptedAnswer":49},"Do I have to use the AI to fill SEO fields?",{"@type":41,"text":50},"No. Every SEO field is editable by hand. The AI generators are optional drafting helpers.",{"@type":38,"name":52,"acceptedAnswer":53},"Which model does the SEO prompt use?",{"@type":41,"text":54},"Whichever text model you've configured for the prompt. m18t doesn't bundle a model — you bring your own provider key.",{"@type":38,"name":56,"acceptedAnswer":57},"Can I change what the SEO prompt says?",{"@type":41,"text":58},"Yes, at \u002Fstudio\u002Fconfig\u002Fprompts, though platform prompts are Locked by default. For most brands, configuring the brand voice and the content type's defaults gives better output than rewriting the prompt.",{"@type":60,"itemListElement":61},"BreadcrumbList",[62,66,70,73],{"@type":63,"position":64,"name":65,"item":28},"ListItem",1,"Home",{"@type":63,"position":67,"name":68,"item":69},2,"Help","https:\u002F\u002Fm18t.com\u002Fhelp",{"@type":63,"position":71,"name":10,"item":72},3,"https:\u002F\u002Fm18t.com\u002Fhelp\u002Fcategories\u002Fseo",{"@type":63,"position":74,"name":5,"item":14},4,1786312170343]