[{"data":1,"prerenderedAt":71},["ShallowReactive",2],{"help-article-the-seo-philosophy":3},{"data":4},{"title":5,"excerpt":6,"content":7,"help_category":8,"seo":11},"The SEO Philosophy","Why m18t sets SEO defaults per brand and content type instead of per piece, how it serves both search and answer engines, and how a piece overrides defaults.","\u003Cp>\u003Cstrong>What you&#39;ll learn\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cul>\n\u003Cli>Why m18t sets SEO defaults per (brand × content type) instead of per piece.\u003C\u002Fli>\n\u003Cli>The difference between optimizing for search engines and for answer engines.\u003C\u002Fli>\n\u003Cli>Where those defaults live and how a single piece can override them.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Chr>\n\u003Ch2>The concept: defaults first, per-piece second\u003C\u002Fh2>\n\u003Cp>Most tools treat SEO as the last chore before publishing. You write the post, then open a plugin and fill in a meta title, a description, and a robots directive — from scratch, every time. With one writer that&#39;s tedious. With a \u003Ca href=\"\u002Ffor\u002Fteams\">team\u003C\u002Fa> or an \u003Ca href=\"\u002Ffor\u002Fagencies\">agency\u003C\u002Fa> running several brands, it drifts: one post ends its title with a dash, the next with a pipe, a third forgets the brand name, and a fourth gets indexed when it shouldn&#39;t be.\u003C\u002Fp>\n\u003Cp>m18t inverts the order. You decide the SEO shape of a \u003Cem>kind of content\u003C\u002Fem> once, and every new piece of that kind starts from those defaults. A blog post for one brand can carry a different URL prefix, schema.org type, robots policy, meta-title template, and fallback social image than a help article for another brand. The per-piece SEO panel is still there for the cases that genuinely differ — but the boring 90% is already filled in.\u003C\u002Fp>\n\u003Cp>These defaults are attached to a \u003Cstrong>content type\u003C\u002Fstrong>, and content types are configured in one place. See \u003Ca href=\"\u002Fhelp\u002Fconfiguring-seo-defaults\">Configuring SEO Defaults (in Content Types)\u003C\u002Fa> for the field-by-field walkthrough. There is no separate &quot;SEO&quot; settings area to keep in sync — the defaults travel with the type.\u003C\u002Fp>\n\u003Ch2>Why per-(brand × type) is the right grain\u003C\u002Fh2>\n\u003Cp>A meta-title template like \u003Ccode>{{BRAND_TITLE}} | {{POST_TITLE}}\u003C\u002Fcode> only makes sense scoped to a brand: the brand name is the constant, the post title is the variable. A path prefix like \u003Ccode>\u002Fblog\u002F\u003C\u002Fcode> only makes sense scoped to a type: blog posts live under \u003Ccode>\u002Fblog\u002F\u003C\u002Fcode>, help articles under \u003Ccode>\u002Fhelp\u002F\u003C\u002Fcode>, landing pages at the root. Pin the default to \u003Cem>both\u003C\u002Fem> axes and it resolves cleanly for every new piece without anyone re-typing it.\u003C\u002Fp>\n\u003Cp>This is also what makes \u003Ca href=\"\u002Fhelp\u002Fcanonical-urls\">canonical URLs\u003C\u002Fa> deterministic. m18t builds a canonical from the brand&#39;s website URL, the type&#39;s path prefix, the locale, and the piece&#39;s slug. Because the prefix is a default on the type — not a free-text field a writer fills in — the URL comes out the same way for every piece of that type. That consistency is the whole point: predictable URLs, predictable titles, predictable structured data.\u003C\u002Fp>\n\u003Ch2>Search engines and answer engines want different things\u003C\u002Fh2>\n\u003Cp>m18t&#39;s SEO surface is built for two audiences, and they don&#39;t overlap as much as people assume.\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cp>\u003Cstrong>Search engines\u003C\u002Fstrong> (Google, Bing) reward clean canonical URLs, a sensible robots policy, a meta title and description that match intent, and fast pages. This is the classic stuff: the \u003Ca href=\"\u002Fhelp\u002Fcanonical-urls\">canonical URL\u003C\u002Fa>, the meta title template, the keywords field, the robots directives.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003Cli>\u003Cp>\u003Cstrong>Answer engines\u003C\u002Fstrong> (LLM-backed tools like ChatGPT, Claude, and Perplexity) lean heavily on \u003Ca href=\"\u002Fhelp\u002Fstructured-data-json-ld\">structured data — JSON-LD\u003C\u002Fa>. They parse the explicit schema.org markup on a page to understand what an entity \u003Cem>is\u003C\u002Fem> before they cite it. A meta description doesn&#39;t help them much; a well-formed \u003Ccode>Article\u003C\u002Fcode> or \u003Ccode>FAQPage\u003C\u002Fcode> block does.\u003C\u002Fp>\n\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>You don&#39;t have to choose. The same content type carries both: the schema.org \u003Ccode>@type\u003C\u002Fcode> that feeds answer engines and the title\u002Frobots\u002Fcanonical defaults that feed search engines. Set the type up once and every piece is shaped for both channels.\u003C\u002Fp>\n\u003Ch2>What the defaults actually drive\u003C\u002Fh2>\n\u003Cp>When you create a piece and pick its type, the type&#39;s SEO defaults flow into:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>The canonical URL\u003C\u002Fstrong>, derived from the brand website + path prefix + locale + slug.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The meta title\u003C\u002Fstrong>, pre-filled from the template (you can edit or regenerate it).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The robots directive\u003C\u002Fstrong> (e.g. \u003Ccode>index, follow\u003C\u002Fcode>, or \u003Ccode>noindex, nofollow\u003C\u002Fcode> for an internal type).\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The schema.org \u003Ccode>@type\u003C\u002Fcode>\u003C\u002Fstrong> used when JSON-LD is generated.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>A fallback OG image\u003C\u002Fstrong>, used when a piece doesn&#39;t set its own social-share image.\u003C\u002Fli>\n\u003Cli>\u003Cstrong>The seed keywords\u003C\u002Fstrong> the \u003Ca href=\"\u002Fhelp\u002Fthe-seo-ai-prompt\">SEO AI prompt\u003C\u002Fa> starts from.\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>None of these are locked. The per-piece SEO tab in the content editor overrides any of them when a specific post needs something different. The default is a starting point, not a cage.\u003C\u002Fp>\n\u003Ch2>An honest limit\u003C\u002Fh2>\n\u003Cp>m18t owns the \u003Cem>metadata\u003C\u002Fem>: it computes the canonical, fills the title, emits the JSON-LD, and pushes all of that to your CMS. It does \u003Cstrong>not\u003C\u002Fstrong> render your public website. If your front-end (Nuxt, Next.js, Astro, or whatever serves the brand site) doesn&#39;t read the SEO fields out of the CMS and put them in the page&#39;s \u003Ccode>&lt;head&gt;\u003C\u002Fcode>, the data is correct in m18t and invisible to Google. That last hop is your front-end&#39;s job — see \u003Ca href=\"\u002Fhelp\u002Fseo-troubleshooting\">SEO troubleshooting\u003C\u002Fa> for how to tell which side is at fault.\u003C\u002Fp>\n\u003Ch2>What&#39;s next\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fconfiguring-seo-defaults\">Configuring SEO Defaults (in Content Types)\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fcanonical-urls\">Canonical URLs\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fthe-seo-ai-prompt\">The SEO AI Prompt\u003C\u002Fa>\u003C\u002Fli>\n\u003Cli>\u003Ca href=\"\u002Fhelp\u002Fstructured-data-json-ld\">Structured Data &amp; JSON-LD\u003C\u002Fa>\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2>FAQ\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>Where do I set SEO defaults in m18t?\u003C\u002Fstrong>\nInside Content Types, at \u003Ccode>\u002Fstudio\u002Fconfig\u002Fcontent-types\u003C\u002Fcode>. Each type holds its own SEO defaults — path prefix, schema.org type, robots, meta-title template, fallback OG image, supported locales. There is no longer a standalone &quot;SEO Indices&quot; page; the old route 301-redirects to Content Types.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Can a single post override the brand-level defaults?\u003C\u002Fstrong>\nYes. Every piece has an SEO tab in the content editor. Anything you set there — meta title, description, canonical, robots, OG image, JSON-LD — overrides the type default for that piece only.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Does m18t optimize for AI answer engines or just Google?\u003C\u002Fstrong>\nBoth. The same content type carries the schema.org \u003Ccode>@type\u003C\u002Fcode> that answer engines parse and the title\u002Frobots\u002Fcanonical defaults that search engines use. See \u003Ca href=\"\u002Fhelp\u002Fstructured-data-json-ld\">Structured Data &amp; JSON-LD\u003C\u002Fa>.\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Why aren&#39;t my meta tags showing on my live site even though they&#39;re correct in m18t?\u003C\u002Fstrong>\nm18t produces and pushes the metadata; your front-end has to render it into the page \u003Ccode>&lt;head&gt;\u003C\u002Fcode>. That rendering is outside m18t. Walk the chain in \u003Ca href=\"\u002Fhelp\u002Fseo-troubleshooting\">SEO troubleshooting\u003C\u002Fa>.\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 Philosophy | m18t Help","SEO philosophy, SEO defaults, answer engine optimization, AEO, search engine optimization, per-piece override, structured data","https:\u002F\u002Fm18t.com\u002Fhelp\u002Fthe-seo-philosophy","Decide the SEO shape of a kind of content once; every new piece starts from those defaults, shaped for both search and answer engines.","https:\u002F\u002Fm18t.com\u002Fog-default.png","index, follow",{"@context":19,"@graph":20},"https:\u002F\u002Fschema.org",[21,34,55],{"@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],{"@type":38,"name":39,"acceptedAnswer":40},"Question","Where do I set SEO defaults in m18t?",{"@type":41,"text":42},"Answer","Inside Content Types, at \u002Fstudio\u002Fconfig\u002Fcontent-types. Each type holds its own SEO defaults — path prefix, schema.org type, robots, meta-title template, fallback OG image, supported locales. There is no longer a standalone SEO Indices page; the old route 301-redirects to Content Types.",{"@type":38,"name":44,"acceptedAnswer":45},"Can a single post override the brand-level defaults?",{"@type":41,"text":46},"Yes. Every piece has an SEO tab in the content editor. Anything you set there — meta title, description, canonical, robots, OG image, JSON-LD — overrides the type default for that piece only.",{"@type":38,"name":48,"acceptedAnswer":49},"Does m18t optimize for AI answer engines or just Google?",{"@type":41,"text":50},"Both. The same content type carries the schema.org @type that answer engines parse and the title\u002Frobots\u002Fcanonical defaults that search engines use.",{"@type":38,"name":52,"acceptedAnswer":53},"Why aren't my meta tags showing on my live site even though they're correct in m18t?",{"@type":41,"text":54},"m18t produces and pushes the metadata; your front-end has to render it into the page head. That rendering is outside m18t. Walk the chain in SEO troubleshooting.",{"@type":56,"itemListElement":57},"BreadcrumbList",[58,62,66,69],{"@type":59,"position":60,"name":61,"item":28},"ListItem",1,"Home",{"@type":59,"position":63,"name":64,"item":65},2,"Help","https:\u002F\u002Fm18t.com\u002Fhelp",{"@type":59,"position":67,"name":10,"item":68},3,"https:\u002F\u002Fm18t.com\u002Fhelp\u002Fcategories\u002Fseo",{"@type":59,"position":70,"name":5,"item":14},4,1786312170137]