[{"data":1,"prerenderedAt":783},["ShallowReactive",2],{"post-\u002Fblog\u002Fgeo-is-the-new-seo\u002F":3,"surround-\u002Fblog\u002Fgeo-is-the-new-seo\u002F":490,"related-\u002Fblog\u002Fgeo-is-the-new-seo\u002F":491},{"id":4,"title":5,"body":6,"canonicalUrl":472,"category":473,"cover":474,"coverImage":475,"date":476,"description":477,"extension":478,"meta":479,"minutes":480,"navigation":481,"path":482,"seo":483,"stem":484,"tags":485,"updated":488,"__hash__":489},"blog\u002Fblog\u002Fgeo-is-the-new-seo.md","GEO Is the New SEO: A Practitioner's Field Guide to Getting Cited by AI",{"type":7,"value":8,"toc":453},"minimark",[9,20,25,28,39,50,54,57,82,85,92,96,99,106,142,145,148,168,171,175,178,216,220,223,239,249,252,308,312,315,335,342,346,349,356,376,379,383,386,416,420,425,428,432,435,439,442,446],[10,11,12],"blockquote",{},[13,14,15,19],"p",{},[16,17,18],"strong",{},"TL;DR:"," Traditional SEO gets people to click your link. GEO — Generative\nEngine Optimization — gets AI models to cite your brand inside their answers.\nThe optimization targets are completely different: passages instead of pages,\nentities instead of keywords, crawler access instead of crawl budget. This is\nthe complete playbook I use, including what I found when I audited my own\nsite with it — the embarrassing parts included.",[21,22,24],"h2",{"id":23},"the-moment-the-game-changed","The moment the game changed",[13,26,27],{},"When someone asks ChatGPT \"what's a good tool for custom merch,\" the answer\ncontains three or four brand names. Either you're one of them, or you don't\nexist for that user. There is no page two. There isn't even a page one — just\nan answer.",[13,29,30,31,34,35,38],{},"That's the entire case for GEO in three sentences. The traffic entry point is\nmoving from the search box to the chat box, and the currency is moving from\n",[16,32,33],{},"ranking"," to ",[16,36,37],{},"citation",".",[13,40,41,42,49],{},"I run SEO and GEO for a living — I lead product at Custyle, and I built\n",[43,44,48],"a",{"href":45,"rel":46},"https:\u002F\u002Ffastergeo.co",[47],"nofollow","FasterGEO",", an open-source GEO toolkit. This post is\nthe field guide I wish existed when I started: what actually changed, the\nthree levers that work, and the results of turning the audit cannon on my own\nsite.",[21,51,53],{"id":52},"seo-vs-geo-same-goal-different-physics","SEO vs GEO: same goal, different physics",[13,55,56],{},"Both disciplines want the same thing — your brand in front of a person with\nintent. But the mechanics barely overlap:",[58,59,60,72],"ul",{},[61,62,63,66,67,71],"li",{},[16,64,65],{},"SEO optimizes ranking signals",": backlinks, keywords, Core Web Vitals,\ncrawl efficiency. The unit of competition is the ",[68,69,70],"em",{},"page",", and the prize is\na click.",[61,73,74,77,78,81],{},[16,75,76],{},"GEO optimizes citability",": structured facts, self-contained passages,\nentity clarity, AI-crawler access. The unit of competition is the\n",[68,79,80],{},"paragraph",", and the prize is being quoted — often without a click at all.",[13,83,84],{},"The overlap is real but thin: clean HTML, fast responses, and honest content\nhelp both. Everything else diverges. A site can rank #1 on Google and be\ninvisible to every AI engine, because the things that make a page rank are\nnot the things that make a passage quotable.",[13,86,87,88,91],{},"Here's the sentence I repeat to every client: ",[16,89,90],{},"models cite passages, not\npages."," A cleanly structured FAQ answer can outperform a 10,000-word pillar\npage in AI answers, because the model needs a self-contained unit of meaning\nit can lift and attribute — not a scroll-depth journey.",[21,93,95],{"id":94},"lever-1-let-the-crawlers-in-all-of-them","Lever 1: Let the crawlers in — all of them",[13,97,98],{},"The first lever is embarrassingly mechanical: most sites block or throttle\nthe crawlers that feed AI engines, often by accident.",[13,100,101,102,105],{},"The detail almost everyone misses is that ",[16,103,104],{},"training crawlers and retrieval\ncrawlers are different user agents with different jobs",":",[107,108,109,122],"table",{},[110,111,112],"thead",{},[113,114,115,119],"tr",{},[116,117,118],"th",{},"Job",[116,120,121],{},"User agents",[123,124,125,134],"tbody",{},[113,126,127,131],{},[128,129,130],"td",{},"Model training",[128,132,133],{},"GPTBot, ClaudeBot, Google-Extended, Applebot-Extended, Meta-ExternalAgent",[113,135,136,139],{},[128,137,138],{},"Live retrieval (answers cite you today)",[128,140,141],{},"OAI-SearchBot, ChatGPT-User, Claude-SearchBot, Claude-User, PerplexityBot",[13,143,144],{},"Blocking training bots while allowing retrieval bots is a legitimate policy\nchoice. Blocking retrieval bots means AI answers can never cite you, period.\nMy robots.txt enumerates both layers explicitly — not because the wildcard\nrule wouldn't cover them, but because a policy you can read is a policy you\ncan audit.",[13,146,147],{},"Two files extend this lever:",[58,149,150,162],{},[61,151,152,155,156,161],{},[16,153,154],{},"llms.txt"," — a curated map of your site for AI agents, per the\n",[43,157,160],{"href":158,"rel":159},"https:\u002F\u002Fllmstxt.org",[47],"llmstxt.org"," convention: who you are, what each page\ncontains, one line per article with a real description.",[61,163,164,167],{},[16,165,166],{},"llms-full.txt"," — the extension I'd call underused: every post, full\ntext, as one plain-markdown file. My entire blog is ~70KB of markdown. One\nfetch, zero HTML noise, no JavaScript required. For a retrieval pipeline\npaying per token, that's the difference between parsing 30KB of markup per\npage and reading the actual words.",[13,169,170],{},"One more mechanical point: my article pages are ~30KB of HTML of which about\n2.5KB is visible prose — the rest is markup and inlined styles. Crawlers\nstrip tags, but token-metered pipelines still pay for the noise. Static HTML\nwith the full text server-rendered is table stakes; a plain-text full-content\nendpoint is the courtesy that gets you read more often.",[21,172,174],{"id":173},"lever-2-write-passages-a-model-can-lift","Lever 2: Write passages a model can lift",[13,176,177],{},"A passage earns citations when it survives being ripped out of context. My\nworking rules:",[179,180,181,187,193,204,210],"ol",{},[61,182,183,186],{},[16,184,185],{},"Self-containment."," Each paragraph answers one question completely.\nIf a paragraph needs the previous three to make sense, the model can't\nuse it alone — so it won't.",[61,188,189,192],{},[16,190,191],{},"Definition sentences."," \"GEO is the practice of optimizing content to\nbe cited by generative AI engines\" is liftable. A vibes-based intro is\nnot. Every key concept on your site should have exactly one canonical\n\"X is Y\" sentence somewhere.",[61,194,195,198,199,203],{},[16,196,197],{},"Numbers with provenance."," \"3,034 founder profiles, 99.4% LinkedIn\ncoverage, scraped in one evening with plain curl\" — from\n",[43,200,202],{"href":201},"\u002Fblog\u002Fscrape-3000-founders\u002F","my own dataset"," — is the kind of specific,\nattributable fact models love to quote. A number without a source is a\nliability; models increasingly skip unattributed claims.",[61,205,206,209],{},[16,207,208],{},"Questions as headings."," A heading phrased as the question users\nactually ask, followed by a direct answer in the first sentence, is the\npassage shape that wins both featured snippets and AI answers.",[61,211,212,215],{},[16,213,214],{},"First-party data beats commentary."," Models have infinite commentary\nin their training sets. What they lack is fresh, specific, verifiable\nfact. Publish the numbers only you have, and you become the citation\ninstead of the echo.",[21,217,219],{"id":218},"lever-3-become-an-entity-not-a-string","Lever 3: Become an entity, not a string",[13,221,222],{},"This is the lever almost nobody works, and it's where I have the most\nuncomfortable first-hand data.",[13,224,225,226,229,230,234,235,238],{},"While auditing this site, I searched my own name. ",[16,227,228],{},"Every result for \"Arron\nYoung\" was someone else"," — a court case in Alaska, a real-estate agent in\nTexas, a high-school athlete. As far as the knowledge graph was concerned, I\ndidn't exist. And the reason wasn't missing schema on my site — it was that\nmy entity graph had only outbound edges: my site declared ",[231,232,233],"code",{},"sameAs"," links to\nGitHub, X, and LinkedIn, but ",[16,236,237],{},"nothing pointed back",". My GitHub profile\nsaid just \"Arron\" with an empty website field. My own product's site,\nfastergeo.co, mentioned my username eight times and my actual name zero\ntimes.",[13,240,241,242,245,246,248],{},"Search engines and AI models do entity reconciliation the same way: they\ntrust ",[68,243,244],{},"bidirectional"," identity claims. A ",[231,247,233],{}," graph with no return\nedges is an unverified assertion, and unverified assertions lose to a Texas\nrealtor with a complete profile.",[13,250,251],{},"The practical checklist that follows from this:",[58,253,254,271,281,291],{},[61,255,256,262,263,266,267,270],{},[16,257,258,259],{},"Give your Person schema an ",[231,260,261],{},"@id"," (mine is\n",[231,264,265],{},"https:\u002F\u002Farronyoung.com\u002F#person",") so every article's ",[231,268,269],{},"author"," field, on\nevery site you write for, can reference one canonical node.",[61,272,273,276,277,280],{},[16,274,275],{},"Point the edges back."," Your GitHub name and website field, your X\nbio link, the author box on every site that publishes you — each one is a\nvote that the string \"Arron Young\" resolves to ",[68,278,279],{},"this"," entity.",[61,282,283,286,287,290],{},[16,284,285],{},"Disambiguate proactively."," My schema carries\n",[231,288,289],{},"alternateName: [\"Arron\", \"arronyounging\"]"," because models silently\n\"correct\" Arron to Aaron. If your name, brand, or product has a common\nmisspelling, declare it — don't let the model average you away.",[61,292,293,296,297,300,301,303,304,307],{},[16,294,295],{},"Keep sameAs semantically honest."," Products you built are not ",[68,298,299],{},"you",";\nI moved FasterGEO and SnapCue out of ",[231,302,233],{}," and into ",[231,305,306],{},"owns",". Sloppy\nentity claims make the whole graph less trustworthy.",[21,309,311],{"id":310},"what-i-found-auditing-my-own-site","What I found auditing my own site",[13,313,314],{},"Build in public means auditing in public. This site — built by a GEO\npractitioner, weeks old — failed its own audit in ways worth sharing:",[58,316,317,323,329],{},[61,318,319,322],{},[16,320,321],{},"Three indexable copies of everything."," The apex domain, the www\nsubdomain, and the hosting provider's preview domain all served the full\nsite with no canonical tags and no redirects. Textbook duplicate content,\ninvisible until you look.",[61,324,325,328],{},[16,326,327],{},"A trailing-slash tax on every crawl."," The sitemap and every internal\nlink pointed at URLs that 308-redirected to their trailing-slash form.\nEvery crawler paid double for every page.",[61,330,331,334],{},[16,332,333],{},"An internal QA scorecard published by accident."," One syndicated post\nshipped with the content pipeline's self-review table still inside —\nincluding a claim that FAQ schema existed when it didn't. Machines read\neverything; they would have read that too.",[13,336,337,338,341],{},"All fixed the same day. The meta-lesson: ",[16,339,340],{},"GEO failures are mostly silent.","\nNothing looks broken in a browser. You find them by fetching your site the\nway a machine does — with curl, with a crawler UA, with no JavaScript — or\nby running tooling that does it for you.",[21,343,345],{"id":344},"why-i-built-fastergeo","Why I built FasterGEO",[13,347,348],{},"The GEO tools I could buy in 2025 fell into two buckets: consulting\ndeliverables wearing a SaaS interface, or single-engine dashboards priced\nfor enterprise contracts. Neither survived contact with my actual workflow,\nand none of them handled the half of the internet I also care about.",[13,350,351,352,355],{},"So I open-sourced the workflow instead. ",[43,353,48],{"href":45,"rel":354},[47],"\nis 11 npm packages plus an MCP server, built around three ideas:",[179,357,358,364,370],{},[61,359,360,363],{},[16,361,362],{},"A dual-engine matrix: CN + global."," Most GEO tooling watches ChatGPT,\nPerplexity, and Gemini and stops. But Chinese AI engines — Doubao,\nDeepSeek, Kimi, Yuanbao — are a parallel answer ecosystem with different\ncrawlers, different sources, and different citation behavior. A brand\nselling in both worlds needs visibility in both matrices; almost nobody\nmeasures the second one.",[61,365,366,369],{},[16,367,368],{},"An entity funnel, not a keyword list."," The pipeline goes from \"does\nthe model know the entity exists\" → \"does it describe the entity\ncorrectly\" → \"does it cite the entity for the queries that matter.\" Each\nstage has different fixes; collapsing them into one \"AI visibility\nscore\" hides the actual work.",[61,371,372,375],{},[16,373,374],{},"Machine-verified tickets."," Every recommendation ships as a concrete\nchange with a check the machine can re-run. \"Improve your content\" is\nconsulting. \"llms.txt missing per-article entries — here's the diff, and\nhere's the validator that turns green when it's live\" is engineering.",[13,377,378],{},"The MCP server matters more than it looks: it means an AI agent — the same\nkind of fleet that runs my publishing pipeline — can run detection,\npropose fixes, apply them, and verify, without a human in the loop. GEO\nwork itself is becoming agent work.",[21,380,382],{"id":381},"the-2026-playbook-in-order","The 2026 playbook, in order",[13,384,385],{},"If you run a brand site and want the shortest path:",[179,387,388,395,398,401,404,407,413],{},[61,389,390,391,394],{},"Fetch your key pages with ",[231,392,393],{},"curl"," using GPTBot's and PerplexityBot's user\nagents. If you don't get a 200 with full server-rendered text, fix that\nbefore anything else.",[61,396,397],{},"Enumerate training vs retrieval crawlers in robots.txt as deliberate\npolicy.",[61,399,400],{},"Ship llms.txt with one described line per important page; ship\nllms-full.txt if your content fits in a few hundred KB.",[61,402,403],{},"Collapse your duplicate hosts and unify your URL forms. Every silent\nredirect is a tax on being read.",[61,405,406],{},"Give every page one canonical \"X is Y\" definition and at least one\nfirst-party number with a source.",[61,408,409,410,412],{},"Anchor your entity: Person\u002FOrganization schema with ",[231,411,261],{},", then spend an\nafternoon making the edges point back — profiles, author boxes, bios.",[61,414,415],{},"Re-check monthly. Answers move faster than rankings ever did.",[21,417,419],{"id":418},"faq","FAQ",[421,422,424],"h3",{"id":423},"what-is-geo-in-one-sentence","What is GEO in one sentence?",[13,426,427],{},"GEO (Generative Engine Optimization) is the practice of making your content\nand brand citable by AI engines — ChatGPT, Perplexity, Gemini, Doubao,\nDeepSeek — so their answers mention you, the way SEO makes your pages\nrankable by search engines.",[421,429,431],{"id":430},"does-geo-replace-seo","Does GEO replace SEO?",[13,433,434],{},"No. Search boxes still drive enormous traffic, and the disciplines share a\nfoundation of crawlable, honest, well-structured content. But they optimize\ndifferent units (passages vs pages) for different judges (models vs ranking\nalgorithms), and budgets are already splitting between them.",[421,436,438],{"id":437},"whats-the-fastest-geo-win-for-a-small-site","What's the fastest GEO win for a small site?",[13,440,441],{},"Crawler access plus llms.txt — usually under an hour of work. Most small\nsites have never checked whether AI retrieval bots can read them at all,\nand a described map of your content is the cheapest way to make one fetch\ncount.",[421,443,445],{"id":444},"how-do-i-measure-whether-geo-is-working","How do I measure whether GEO is working?",[13,447,448,449,452],{},"Ask the engines your buyers' questions, on a schedule, in every market you\nsell to — and track three stages separately: does the model know your\nentity, does it describe you correctly, does it cite you for queries with\nintent. That funnel is exactly what ",[43,450,48],{"href":45,"rel":451},[47],"\nautomates, in both the global and Chinese engine matrices.",{"title":454,"searchDepth":455,"depth":455,"links":456},"",2,[457,458,459,460,461,462,463,464,465],{"id":23,"depth":455,"text":24},{"id":52,"depth":455,"text":53},{"id":94,"depth":455,"text":95},{"id":173,"depth":455,"text":174},{"id":218,"depth":455,"text":219},{"id":310,"depth":455,"text":311},{"id":344,"depth":455,"text":345},{"id":381,"depth":455,"text":382},{"id":418,"depth":455,"text":419,"children":466},[467,469,470,471],{"id":423,"depth":468,"text":424},3,{"id":430,"depth":468,"text":431},{"id":437,"depth":468,"text":438},{"id":444,"depth":468,"text":445},null,"SEO \u002F GEO","mint","\u002Fimages\u002Fcovers\u002Fgeo-is-the-new-seo.jpg","2026-08-05","What actually changed, the three levers that work, what I found auditing my own site, and why I built FasterGEO. Written from practice, not theory.","md",{},12,true,"\u002Fblog\u002Fgeo-is-the-new-seo",{"title":5,"description":477},"blog\u002Fgeo-is-the-new-seo",[486,487,48],"GEO","AI Search","2026-08-11","jl-26T_pyaGdMqjRNLTPbx8qbk-Lv6qgnqcHJrLuUmU",[472,472],{"id":4,"title":5,"body":492,"canonicalUrl":472,"category":473,"cover":474,"coverImage":475,"date":476,"description":477,"extension":478,"meta":780,"minutes":480,"navigation":481,"path":482,"seo":781,"stem":484,"tags":782,"updated":488,"__hash__":489},{"type":7,"value":493,"toc":764},[494,500,502,504,510,515,517,519,533,535,539,541,543,547,571,573,575,588,590,592,594,618,620,622,630,636,638,672,674,676,690,694,696,698,703,717,719,721,723,743,745,747,749,751,753,755,757,759],[10,495,496],{},[13,497,498,19],{},[16,499,18],{},[21,501,24],{"id":23},[13,503,27],{},[13,505,30,506,34,508,38],{},[16,507,33],{},[16,509,37],{},[13,511,41,512,49],{},[43,513,48],{"href":45,"rel":514},[47],[21,516,53],{"id":52},[13,518,56],{},[58,520,521,527],{},[61,522,523,66,525,71],{},[16,524,65],{},[68,526,70],{},[61,528,529,77,531,81],{},[16,530,76],{},[68,532,80],{},[13,534,84],{},[13,536,87,537,91],{},[16,538,90],{},[21,540,95],{"id":94},[13,542,98],{},[13,544,101,545,105],{},[16,546,104],{},[107,548,549,557],{},[110,550,551],{},[113,552,553,555],{},[116,554,118],{},[116,556,121],{},[123,558,559,565],{},[113,560,561,563],{},[128,562,130],{},[128,564,133],{},[113,566,567,569],{},[128,568,138],{},[128,570,141],{},[13,572,144],{},[13,574,147],{},[58,576,577,584],{},[61,578,579,155,581,161],{},[16,580,154],{},[43,582,160],{"href":158,"rel":583},[47],[61,585,586,167],{},[16,587,166],{},[13,589,170],{},[21,591,174],{"id":173},[13,593,177],{},[179,595,596,600,604,610,614],{},[61,597,598,186],{},[16,599,185],{},[61,601,602,192],{},[16,603,191],{},[61,605,606,198,608,203],{},[16,607,197],{},[43,609,202],{"href":201},[61,611,612,209],{},[16,613,208],{},[61,615,616,215],{},[16,617,214],{},[21,619,219],{"id":218},[13,621,222],{},[13,623,225,624,229,626,234,628,238],{},[16,625,228],{},[231,627,233],{},[16,629,237],{},[13,631,241,632,245,634,248],{},[68,633,244],{},[231,635,233],{},[13,637,251],{},[58,639,640,650,656,662],{},[61,641,642,262,646,266,648,270],{},[16,643,258,644],{},[231,645,261],{},[231,647,265],{},[231,649,269],{},[61,651,652,276,654,280],{},[16,653,275],{},[68,655,279],{},[61,657,658,286,660,290],{},[16,659,285],{},[231,661,289],{},[61,663,664,296,666,300,668,303,670,307],{},[16,665,295],{},[68,667,299],{},[231,669,233],{},[231,671,306],{},[21,673,311],{"id":310},[13,675,314],{},[58,677,678,682,686],{},[61,679,680,322],{},[16,681,321],{},[61,683,684,328],{},[16,685,327],{},[61,687,688,334],{},[16,689,333],{},[13,691,337,692,341],{},[16,693,340],{},[21,695,345],{"id":344},[13,697,348],{},[13,699,351,700,355],{},[43,701,48],{"href":45,"rel":702},[47],[179,704,705,709,713],{},[61,706,707,363],{},[16,708,362],{},[61,710,711,369],{},[16,712,368],{},[61,714,715,375],{},[16,716,374],{},[13,718,378],{},[21,720,382],{"id":381},[13,722,385],{},[179,724,725,729,731,733,735,737,741],{},[61,726,390,727,394],{},[231,728,393],{},[61,730,397],{},[61,732,400],{},[61,734,403],{},[61,736,406],{},[61,738,409,739,412],{},[231,740,261],{},[61,742,415],{},[21,744,419],{"id":418},[421,746,424],{"id":423},[13,748,427],{},[421,750,431],{"id":430},[13,752,434],{},[421,754,438],{"id":437},[13,756,441],{},[421,758,445],{"id":444},[13,760,448,761,452],{},[43,762,48],{"href":45,"rel":763},[47],{"title":454,"searchDepth":455,"depth":455,"links":765},[766,767,768,769,770,771,772,773,774],{"id":23,"depth":455,"text":24},{"id":52,"depth":455,"text":53},{"id":94,"depth":455,"text":95},{"id":173,"depth":455,"text":174},{"id":218,"depth":455,"text":219},{"id":310,"depth":455,"text":311},{"id":344,"depth":455,"text":345},{"id":381,"depth":455,"text":382},{"id":418,"depth":455,"text":419,"children":775},[776,777,778,779],{"id":423,"depth":468,"text":424},{"id":430,"depth":468,"text":431},{"id":437,"depth":468,"text":438},{"id":444,"depth":468,"text":445},{},{"title":5,"description":477},[486,487,48],1786455791882]