[{"data":1,"prerenderedAt":981},["ShallowReactive",2],{"blog-category-seo":3},[4],{"id":5,"title":6,"author":7,"body":11,"category":932,"description":933,"extension":934,"featured":935,"image":936,"meta":937,"navigation":935,"path":969,"published":935,"publishedAt":970,"readingTime":442,"robots":971,"seo":972,"slug":973,"stem":974,"tags":975,"updatedAt":979,"__hash__":980},"blog/blog/framer-site-chatgpt-ai-discovery.md","llms.txt for Framer: Get Cited by ChatGPT and AI Search",{"name":8,"avatar":9,"bio":10},"Shahul","/shahul-profile-pic.jpg","Founder of FramerHub",{"type":12,"value":13,"toc":910},"minimark",[14,31,44,47,54,59,62,65,70,97,101,111,129,134,137,153,157,160,175,179,196,206,240,244,247,258,266,270,280,283,287,300,314,318,359,474,488,492,518,521,525,528,548,551,555,562,604,608,611,614,651,655,658,735,743,747,750,775,778,782,785,822,825,829,835,841,846,849,853,856,862,867,884,906],[15,16,17,18,22,23,26,27,30],"p",{},"AI tools like ",[19,20,21],"strong",{},"ChatGPT",", ",[19,24,25],{},"Perplexity",", and ",[19,28,29],{},"Gemini"," are already reading your Framer website.",[15,32,33,34,38,39,43],{},"But do they ",[35,36,37],"em",{},"understand"," it the way you want them to? On a Framer site that mostly comes down to one small file, ",[40,41,42],"code",{},"llms.txt",", and to whether the rest of the page is structured so a model can quote it.",[15,45,46],{},"Most designers still think SEO stops at Google. It doesn't. Search is increasingly AI-mediated, a user asks a question, and an AI model synthesizes an answer from a handful of sources instead of showing ten blue links. If your Framer site isn't structured for AI discovery, you're invisible to that entire layer of traffic, even if you rank fine in traditional Google search.",[15,48,49,50,53],{},"This guide covers the concrete techniques to make your ",[19,51,52],{},"Framer site discoverable by ChatGPT"," and other large language models, what's changed recently, what actually works, and how to verify it's working.",[55,56,58],"h2",{"id":57},"why-ai-search-is-a-different-game-than-google","Why AI Search Is a Different Game Than Google",[15,60,61],{},"When someone asks ChatGPT \"best Framer templates for SaaS,\" it doesn't guess from memory alone for anything time-sensitive, modern AI search tools (ChatGPT with browsing, Perplexity, Gemini) actively crawl the live web, read structured data, and synthesize an answer from what they find.",[15,63,64],{},"If your site doesn't emit the right signals, you're excluded from that answer entirely, not ranked lower, simply absent.",[15,66,67],{},[19,68,69],{},"The core building blocks for AI visibility:",[71,72,73,79,85,91],"ol",{},[74,75,76,78],"li",{},[19,77,42],{},", tells AI models who you are and how to talk about you.",[74,80,81,84],{},[19,82,83],{},"JSON-LD structured data",", gives AI unambiguous, machine-readable facts about your content.",[74,86,87,90],{},[19,88,89],{},"Clear, extractable content structure",", AI models favor content that states claims directly, rather than burying them in marketing fluff.",[74,92,93,96],{},[19,94,95],{},"Crawler access",", your robots.txt has to actually allow the AI crawlers you want visiting.",[55,98,100],{"id":99},"part-1-add-llmstxt-to-your-framer-site","Part 1: Add llms.txt to Your Framer Site",[15,102,103,104,106,107,110],{},"Think of ",[40,105,42],{}," as the ",[19,108,109],{},"AI-era equivalent of robots.txt",", but focused on interpretation rather than access control.",[15,112,113,114,117,118,121,122,124,125,128],{},"While ",[40,115,116],{},"robots.txt"," tells search engines what they're ",[35,119,120],{},"allowed"," to crawl, ",[19,123,42],{}," tells AI models how to ",[35,126,127],{},"interpret and credit"," your content once they've read it.",[130,131,133],"h3",{"id":132},"what-happens-without-llmstxt","What Happens Without llms.txt?",[15,135,136],{},"Without it, AI tools can:",[138,139,140,143,146],"ul",{},[74,141,142],{},"Misrepresent what your product or content actually does",[74,144,145],{},"Miss important context about your positioning or offering",[74,147,148,149,152],{},"Skip your site entirely in AI-generated answers, defaulting to competitors who ",[35,150,151],{},"do"," provide this context",[130,154,156],{"id":155},"what-happens-with-llmstxt","What Happens With llms.txt?",[15,158,159],{},"With a well-written llms.txt, you can:",[138,161,162,165,168],{},[74,163,164],{},"Define, in your own words, how AI should describe your brand",[74,166,167],{},"Point AI models toward your most important pages directly",[74,169,170,171,174],{},"Improve your odds of being cited in ",[19,172,173],{},"AI search optimization"," results, rather than paraphrased incorrectly",[130,176,178],{"id":177},"how-to-add-llmstxt-to-framer-in-site-settings-5-minutes","How to add llms.txt to Framer in Site Settings (5 minutes)",[71,180,181,190],{},[74,182,183,186,187,189],{},[19,184,185],{},"Create a plain text file"," named ",[40,188,42],{},".",[74,191,192,195],{},[19,193,194],{},"Add your brand info, links, and usage rules."," Example:",[197,198,203],"pre",{"className":199,"code":201,"language":202},[200],"language-text","# FramerHub - Premium Framer Components and Plugins\n\n## About\nFramerHub provides high-quality code components and plugins for Framer designers and agencies.\n\n## Links\n- Home: https://framerhub.io\n- Components: https://framerhub.io/components\n- Blog: https://framerhub.io/blog\n\n## Usage Rules\n- Attribution required for content quotes\n- Commercial use allowed with proper credit\n","text",[40,204,201],{"__ignoreMap":205},"",[71,207,209,225,230],{"start":208},3,[74,210,211,214,215,218,219,221,222,189],{},[19,212,213],{},"Upload it in Framer:"," Go to ",[40,216,217],{},"Site Settings → Hosting → Files"," and upload ",[40,220,42],{},", Framer serves it at ",[40,223,224],{},"/llms.txt",[74,226,227],{},[19,228,229],{},"Publish your site.",[74,231,232,235,236,239],{},[19,233,234],{},"Test it:"," Visit ",[40,237,238],{},"yourdomain.com/llms.txt",", if you see your file rendered as plain text, you're done.",[130,241,243],{"id":242},"keeping-llmstxt-useful-over-time","Keeping llms.txt Useful Over Time",[15,245,246],{},"Treat it like a lightweight sitemap for AI models, not a set-and-forget file:",[138,248,249,252,255],{},[74,250,251],{},"Update the Links section when you launch a major new page, product, or collection.",[74,253,254],{},"Keep the \"About\" section current if your positioning changes, an AI model reading a two-year-old description of your product will describe you inaccurately today.",[74,256,257],{},"Avoid over-stuffing it with marketing copy. AI models parsing llms.txt respond better to direct, factual statements than to sales language.",[259,260],"blog-cta",{"button-link":261,"button-text":262,"description":263,"title":264,"variant":265},"/newsletter","Join the newsletter","We write up what we learn running framerhub.io: llms.txt, schema, CMS structure and the Framer SEO settings that actually move something.","Get the next Framer SEO teardown","blue",[55,267,269],{"id":268},"part-2-add-json-ld-schema-to-framer-cms-pages","Part 2: Add JSON-LD Schema to Framer CMS Pages",[15,271,272,275,276,279],{},[19,273,274],{},"Structured data"," is how you tell both AI and Google what your content ",[35,277,278],{},"is",", unambiguously.",[15,281,282],{},"Is a page a blog post? A product? An FAQ? Without schema, every crawler has to guess from surrounding text, and guesses are frequently wrong, especially on pages with mixed content types.",[130,284,286],{"id":285},"the-mechanism-cms-variables-in-json-ld","The Mechanism: CMS Variables in JSON-LD",[15,288,289,290,295,296,299],{},"Framer lets you embed ",[291,292,294],"a",{"href":293},"/blog/framer-cms-complete-guide","CMS field values"," into custom JSON using the ",[40,297,298],{},"{{FieldName | json}}"," syntax.",[15,301,302,303,22,306,309,310,313],{},"This means you can add ",[19,304,305],{},"BlogPosting",[19,307,308],{},"Product",", or ",[19,311,312],{},"FAQPage"," schema to every CMS detail-page template once, and it applies automatically to every item in that collection, making each page readable by both humans and machines without per-page manual work.",[130,315,317],{"id":316},"step-by-step-add-schema-to-blog-posts","Step-by-Step: Add Schema to Blog Posts",[71,319,320,327,346,356],{},[74,321,322,323,326],{},"In your Framer project, open your ",[19,324,325],{},"CMS Collection"," (e.g., \"Blog\").",[74,328,329,330,22,333,22,336,22,339,342,343,189],{},"Confirm you have fields like ",[40,331,332],{},"Title",[40,334,335],{},"Description",[40,337,338],{},"ImageURL",[40,340,341],{},"DatePublished",", and ideally ",[40,344,345],{},"AuthorName",[74,347,348,349,352,353,189],{},"On the ",[19,350,351],{},"CMS Detail Page"," template, open ",[40,354,355],{},"Page Settings → Custom Code (Head or End of Body)",[74,357,358],{},"Paste this JSON-LD script:",[197,360,364],{"className":361,"code":362,"language":363,"meta":205,"style":205},"language-html shiki shiki-themes github-light github-dark","\u003Cscript type=\"application/ld+json\">\n{\n  \"@context\": \"https://schema.org\",\n  \"@type\": \"BlogPosting\",\n  \"headline\": {{Title | json}},\n  \"description\": {{Description | json}},\n  \"datePublished\": {{DatePublished | json}},\n  \"image\": {{ImageURL | json}},\n  \"author\": {\n    \"@type\": \"Person\",\n    \"name\": \"Your Name\"\n  }\n}\n\u003C/script>\n","html",[40,365,366,393,399,404,410,416,422,428,434,440,446,452,458,464],{"__ignoreMap":205},[367,368,371,375,379,383,386,390],"span",{"class":369,"line":370},"line",1,[367,372,374],{"class":373},"sVt8B","\u003C",[367,376,378],{"class":377},"s9eBZ","script",[367,380,382],{"class":381},"sScJk"," type",[367,384,385],{"class":373},"=",[367,387,389],{"class":388},"sZZnC","\"application/ld+json\"",[367,391,392],{"class":373},">\n",[367,394,396],{"class":369,"line":395},2,[367,397,398],{"class":373},"{\n",[367,400,401],{"class":369,"line":208},[367,402,403],{"class":373},"  \"@context\": \"https://schema.org\",\n",[367,405,407],{"class":369,"line":406},4,[367,408,409],{"class":373},"  \"@type\": \"BlogPosting\",\n",[367,411,413],{"class":369,"line":412},5,[367,414,415],{"class":373},"  \"headline\": {{Title | json}},\n",[367,417,419],{"class":369,"line":418},6,[367,420,421],{"class":373},"  \"description\": {{Description | json}},\n",[367,423,425],{"class":369,"line":424},7,[367,426,427],{"class":373},"  \"datePublished\": {{DatePublished | json}},\n",[367,429,431],{"class":369,"line":430},8,[367,432,433],{"class":373},"  \"image\": {{ImageURL | json}},\n",[367,435,437],{"class":369,"line":436},9,[367,438,439],{"class":373},"  \"author\": {\n",[367,441,443],{"class":369,"line":442},10,[367,444,445],{"class":373},"    \"@type\": \"Person\",\n",[367,447,449],{"class":369,"line":448},11,[367,450,451],{"class":373},"    \"name\": \"Your Name\"\n",[367,453,455],{"class":369,"line":454},12,[367,456,457],{"class":373},"  }\n",[367,459,461],{"class":369,"line":460},13,[367,462,463],{"class":373},"}\n",[367,465,467,470,472],{"class":369,"line":466},14,[367,468,469],{"class":373},"\u003C/",[367,471,378],{"class":377},[367,473,392],{"class":373},[71,475,476],{"start":412},[74,477,478,481,482,189],{},[19,479,480],{},"Publish and test"," via ",[291,483,487],{"href":484,"rel":485},"https://search.google.com/test/rich-results",[486],"nofollow","Google's Rich Results Test",[130,489,491],{"id":490},"extending-schema-to-faq-and-product-pages","Extending Schema to FAQ and Product Pages",[15,493,494,495,497,498,501,502,504,505,22,508,22,511,26,514,517],{},"The same pattern works for other content types. For an FAQ section, use ",[40,496,312],{}," schema with a ",[40,499,500],{},"mainEntity"," array of question/answer pairs. For a product or component listing page, use ",[40,503,308],{}," schema with ",[40,506,507],{},"name",[40,509,510],{},"description",[40,512,513],{},"offers",[40,515,516],{},"image"," fields mapped to your CMS variables.",[15,519,520],{},"The principle is identical each time: map your existing CMS fields into the corresponding schema.org properties, once, on the shared template.",[130,522,524],{"id":523},"why-this-works","Why This Works",[15,526,527],{},"When ChatGPT or another AI crawler reads your blog post, it doesn't just see plain text. With schema in place, it sees:",[138,529,530,536,542],{},[74,531,532,535],{},[40,533,534],{},"\"@type\": \"BlogPosting\""," → \"This is a blog post, not a product page or a forum thread.\"",[74,537,538,541],{},[40,539,540],{},"\"headline\": \"How to Build...\""," → \"This is the definitive title, not a random heading.\"",[74,543,544,547],{},[40,545,546],{},"\"datePublished\": \"2026-01-26\""," → \"This has a known publish date\" (and freshness matters for time-sensitive queries).",[15,549,550],{},"This context makes your content meaningfully more likely to be surfaced and cited accurately by AI, compared to an equivalent page with no structured data at all.",[55,552,554],{"id":553},"part-3-write-content-ai-can-actually-extract","Part 3: Write Content AI Can Actually Extract",[15,556,557,558,561],{},"Structure alone doesn't guarantee citation, the ",[35,559,560],{},"content itself"," needs to be extractable. A few practical habits:",[138,563,564,570,576,582,588,598],{},[74,565,566,569],{},[19,567,568],{},"State the answer directly, early."," If the page answers \"how much does X cost,\" say the number plainly in the first few sentences, not buried three paragraphs in after a story.",[74,571,572,575],{},[19,573,574],{},"Use real headings that match likely questions."," \"How much does a Framer site cost\" as an H2 is more extractable than a vague \"Pricing Thoughts.\"",[74,577,578,581],{},[19,579,580],{},"Avoid burying facts in marketing language."," \"Our industry-leading solution delivers unparalleled value\" contains zero extractable facts. \"Framer plans start at $5/month for a Mini site\" does.",[74,583,584,587],{},[19,585,586],{},"Keep FAQ answers self-contained."," An AI model often lifts a single Q&A pair verbatim, write each answer so it makes sense without the surrounding paragraphs.",[74,589,590,593,594,597],{},[19,591,592],{},"Update dates when content changes meaningfully."," AI models weigh freshness signals (schema ",[40,595,596],{},"dateModified",", visible \"last updated\" text) when a query is time-sensitive, a page claiming to be current but carrying a two-year-old timestamp is a weaker citation candidate than one with a recent, accurate date.",[74,599,600,603],{},[19,601,602],{},"Prefer concrete numbers over vague qualifiers."," \"Significantly faster\" is not extractable. \"Loads in under 1.5 seconds\" is a fact an AI model can quote with confidence.",[55,605,607],{"id":606},"part-4-confirm-ai-crawlers-can-actually-reach-your-site","Part 4: Confirm AI Crawlers Can Actually Reach Your Site",[15,609,610],{},"None of the above matters if your robots.txt is silently blocking the crawlers you want.",[15,612,613],{},"The crawler names below were checked on 23 August 2026. Vendors add and rename agents often, so re-check them against each vendor's own crawler documentation before you write a rule around one.",[138,615,616,639,642,645],{},[74,617,618,619,622,623,626,627,22,630,22,633,309,636,189],{},"Check your robots.txt (",[40,620,621],{},"yourdomain.com/robots.txt",") for ",[40,624,625],{},"Disallow"," rules that might catch ",[40,628,629],{},"GPTBot",[40,631,632],{},"PerplexityBot",[40,634,635],{},"ClaudeBot",[40,637,638],{},"Google-Extended",[74,640,641],{},"If you're using Cloudflare in front of a custom domain, verify its bot-management settings aren't blocking these agents by default, some \"Block AI bots\" toggles are on by default and will silently undo everything above.",[74,643,644],{},"Periodically check server or Cloudflare analytics logs for hits from these user agents to confirm you're actually being crawled, not just correctly configured on paper.",[74,646,647,648,650],{},"If you see no AI crawler traffic after several weeks, double-check nothing upstream, a firewall rule, a bot-fight-mode setting, or an overly broad ",[40,649,625],{},", is quietly filtering these agents out before they ever reach your pages.",[55,652,654],{"id":653},"traditional-seo-vs-ai-search-optimization","Traditional SEO vs. AI Search Optimization",[15,656,657],{},"The two disciplines overlap heavily but aren't identical. Understanding the difference helps you prioritize effort correctly.",[659,660,661,677],"table",{},[662,663,664],"thead",{},[665,666,667,671,674],"tr",{},[668,669,670],"th",{},"Factor",[668,672,673],{},"Traditional SEO (Google)",[668,675,676],{},"AI Search Optimization (AEO/GEO)",[678,679,680,692,703,714,724],"tbody",{},[665,681,682,686,689],{},[683,684,685],"td",{},"Goal",[683,687,688],{},"Rank in a list of results",[683,690,691],{},"Be one of the few sources synthesized into a direct answer",[665,693,694,697,700],{},[683,695,696],{},"Key signal",[683,698,699],{},"Backlinks, keyword relevance, Core Web Vitals",[683,701,702],{},"Structured data, clear extractable claims, freshness",[665,704,705,708,711],{},[683,706,707],{},"Content style",[683,709,710],{},"Keyword-optimized headings and copy",[683,712,713],{},"Direct, self-contained factual statements",[665,715,716,719,721],{},[683,717,718],{},"Access control",[683,720,116],{},[683,722,723],{},"robots.txt + llms.txt + CDN bot settings",[665,725,726,729,732],{},[683,727,728],{},"Citation format",[683,730,731],{},"A clicked link",[683,733,734],{},"A quoted or paraphrased answer, often with no click at all",[15,736,737,738,742],{},"In practice, you don't choose one over the other, solid traditional SEO (semantic HTML, ",[291,739,741],{"href":740},"/blog/optimize-framer-site-performance","fast Core Web Vitals",", genuine backlinks) is still the foundation everything else builds on. AEO/GEO signals are additive on top of that existing foundation, not a wholesale replacement for the fundamentals you've already invested in.",[55,744,746],{"id":745},"tools-to-verify-your-ai-discovery-setup","Tools to Verify Your AI Discovery Setup",[15,748,749],{},"A handful of free checks confirm whether your setup is actually working, rather than just configured correctly on paper:",[138,751,752,758,763,769],{},[74,753,754,757],{},[19,755,756],{},"llms.txt validator sites",", several community tools check your file's syntax against the emerging spec.",[74,759,760,762],{},[19,761,487],{},", confirms your JSON-LD schema parses correctly and shows which rich result types it qualifies for.",[74,764,765,768],{},[19,766,767],{},"Schema Markup Validator (schema.org)",", a stricter check against the full schema.org vocabulary, useful for catching typos in property names.",[74,770,771,774],{},[19,772,773],{},"Direct AI queries",", periodically ask ChatGPT or Perplexity a question your site should be able to answer, and see whether you're cited, paraphrased incorrectly, or absent entirely. This is the most honest signal you have, since it reflects real crawling and synthesis behavior rather than a syntax check.",[15,776,777],{},"Re-run these checks after any major content or schema change, a small JSON-LD typo can silently invalidate an entire structured-data block, and you may not notice for months if you only check once at launch and never again.",[55,779,781],{"id":780},"combining-everything-for-maximum-ai-visibility","Combining Everything for Maximum AI Visibility",[15,783,784],{},"Here's the full stack, in order of what each piece does:",[71,786,787,795,803,812],{},[74,788,789,791,792,189],{},[19,790,42],{}," tells AI ",[35,793,794],{},"who you are",[74,796,797,791,800,189],{},[19,798,799],{},"JSON-LD schema",[35,801,802],{},"what your content is",[74,804,805,808,809,189],{},[19,806,807],{},"Extractable writing"," gives AI ",[35,810,811],{},"a clean fact to quote",[74,813,814,817,818,821],{},[19,815,816],{},"Open crawler access"," makes sure AI ",[35,819,820],{},"can actually get in"," to read all of the above.",[15,823,824],{},"Skip any one of these four, and the other three lose most of their effect, schema on a page an AI crawler can't reach does nothing.",[55,826,828],{"id":827},"real-world-use-case","Real-World Use Case",[15,830,831,832],{},"Imagine a potential client asks ChatGPT: ",[35,833,834],{},"\"What are the best Framer component libraries?\"",[15,836,837,838,840],{},"If you have all four pieces in place, an ",[40,839,42],{}," explaining your offerings, structured data on your product pages, direct extractable claims, and open crawler access, ChatGPT can confidently respond:",[15,842,843],{},[35,844,845],{},"\"FramerHub offers premium Framer components for agencies and freelancers, focused on performance and CMS integration.\"",[15,847,848],{},"Without these signals, you're not part of that answer at all, you simply don't come up, regardless of how good your site looks to a human visitor.",[55,850,852],{"id":851},"conclusion","Conclusion",[15,854,855],{},"The web is no longer read only by humans. AI models are actively crawling, indexing, and citing Framer sites right now, and that channel will only grow as a share of how people find products and information.",[15,857,858,859,861],{},"By adding ",[19,860,42],{},", structured data, and writing content built to be quoted directly, you future-proof your Framer site for a search landscape that increasingly bypasses the traditional results page entirely.",[15,863,864],{},[19,865,866],{},"Next steps:",[71,868,869,875,878,881],{},[74,870,871,872,874],{},"Add ",[40,873,42],{}," to your Framer site today via Site Settings → Hosting → Files.",[74,876,877],{},"Add JSON-LD schema to every CMS detail-page template.",[74,879,880],{},"Confirm your robots.txt and any CDN bot settings aren't blocking AI crawlers.",[74,882,883],{},"Test with Google's Rich Results Test, and periodically check your logs for AI crawler activity.",[15,885,886,887,890,891,895,896,900,901,905],{},"Want to build a Framer site that ranks in both Google ",[35,888,889],{},"and"," ChatGPT? Start with these four pieces, then pair them with the broader tactics in our ",[291,892,894],{"href":893},"/blog/framer-seo-guide","complete Framer SEO guide"," and our ",[291,897,899],{"href":898},"/blog/seo-checklist-for-framer-templates","Ultimate SEO Checklist for Framer Templates"," for a full ranking strategy across both traditional and AI-driven search. If you're building on top of ",[291,902,904],{"href":903},"/plugins","FramerHub's plugins and components",", most of the CMS structure needed for clean schema markup is already in place, you're mainly adding the JSON-LD layer on top of data you're already collecting.",[907,908,909],"style",{},"html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":205,"searchDepth":395,"depth":395,"links":911},[912,913,919,925,926,927,928,929,930,931],{"id":57,"depth":395,"text":58},{"id":99,"depth":395,"text":100,"children":914},[915,916,917,918],{"id":132,"depth":208,"text":133},{"id":155,"depth":208,"text":156},{"id":177,"depth":208,"text":178},{"id":242,"depth":208,"text":243},{"id":268,"depth":395,"text":269,"children":920},[921,922,923,924],{"id":285,"depth":208,"text":286},{"id":316,"depth":208,"text":317},{"id":490,"depth":208,"text":491},{"id":523,"depth":208,"text":524},{"id":553,"depth":395,"text":554},{"id":606,"depth":395,"text":607},{"id":653,"depth":395,"text":654},{"id":745,"depth":395,"text":746},{"id":780,"depth":395,"text":781},{"id":827,"depth":395,"text":828},{"id":851,"depth":395,"text":852},"SEO","Add llms.txt to a Framer site through Site Settings, then wire schema and content structure so ChatGPT, Perplexity and Gemini can quote you.","md",true,"/framerhub/img/blog/framer-ai-discovery.webp",{"metaTitle":938,"metaDescription":939,"primaryKeyword":940,"secondaryKeywords":941,"heroImage":936,"ogImage":936,"schema":947,"createdAt":950},"llms.txt for Framer: Get Cited by AI Search | FramerHub","Add llms.txt to a Framer site via Site Settings, and structure content so ChatGPT, Perplexity and Gemini can quote it. With our own file.","framer llms.txt",[942,943,944,945,946],"llms.txt framer","chatgpt framer","well known files framer","framer ai discovery","ai search optimization framer",[948,952],{"type":949,"headline":6,"datePublished":950,"dateModified":951},"Article","2026-01-26","2026-08-23",{"type":312,"questions":953},[954,957,960,963,966],{"question":955,"answer":956},"What is llms.txt and does Framer support it?","llms.txt is a plain-text file (proposed as an emerging standard, similar in spirit to robots.txt) that tells AI models how to interpret and credit your content. Framer supports uploading it directly through Site Settings → Well-Known Files, so it's served at yourdomain.com/llms.txt without needing custom hosting.",{"question":958,"answer":959},"Does adding schema markup actually help you get cited by ChatGPT?","Structured data (JSON-LD) makes it far easier for any crawler, AI or traditional, to understand what a page is (an article, product, FAQ) rather than guess from unstructured text. AI answer engines favor sources that are unambiguous about their content type and freshness, so schema is a meaningful, low-effort signal even though it's not a guaranteed citation.",{"question":961,"answer":962},"How is AI search optimization (AEO/GEO) different from traditional SEO?","Traditional SEO targets ranking in a list of blue links a human scans. AI search optimization targets being one of the few sources an AI model synthesizes into a single direct answer. That means clear, extractable claims, strong structured data, and unambiguous authorship matter more than keyword density or backlink count.",{"question":964,"answer":965},"Can I check if AI crawlers are actually visiting my Framer site?","Yes, check your site's server logs or a tool like Cloudflare's analytics (if you're using Cloudflare for your custom domain) for user agents like GPTBot, PerplexityBot, ClaudeBot, and Google-Extended. If you see zero hits from these, your llms.txt and robots.txt may be blocking them, or the site simply hasn't been crawled yet.",{"question":967,"answer":968},"Do I need to update llms.txt every time I publish new content?","Not strictly, but it's good practice to keep the Links section current when you add major new pages or collections. Treat it the same way you'd treat a sitemap, it doesn't need daily updates, but stale, outdated links reduce its usefulness over time.","/blog/framer-site-chatgpt-ai-discovery","2026-01-26T00:00:00.000Z",null,{"title":6,"description":933},"framer-site-chatgpt-ai-discovery","blog/framer-site-chatgpt-ai-discovery",[932,976,977,978,21],"AI","Framer","Technical","2026-08-23T00:00:00.000Z","7dPxe4uSDO5YNqmnfhhxDjqj22QGVG4qDizRvhuW5LI",1792857357298]