惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Cyberwarzone
Cyberwarzone
F
Full Disclosure
V
Visual Studio Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
有赞技术团队
有赞技术团队
J
Java Code Geeks
博客园 - 【当耐特】
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 叶小钗
L
LINUX DO - 最新话题
T
Threatpost
S
SegmentFault 最新的问题
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
C
Cyber Attacks, Cyber Crime and Cyber Security
Google DeepMind News
Google DeepMind News
Know Your Adversary
Know Your Adversary
S
Schneier on Security
V
Vulnerabilities – Threatpost
D
DataBreaches.Net
G
GRAHAM CLULEY
Latest news
Latest news
P
Privacy International News Feed
D
Darknet – Hacking Tools, Hacker News & Cyber Security
C
CXSECURITY Database RSS Feed - CXSecurity.com
Scott Helme
Scott Helme
L
Lohrmann on Cybersecurity
T
The Exploit Database - CXSecurity.com
Security Latest
Security Latest
G
Google Developers Blog
L
LangChain Blog
MyScale Blog
MyScale Blog
Project Zero
Project Zero
N
News and Events Feed by Topic
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Proofpoint News Feed
Blog — PlanetScale
Blog — PlanetScale
阮一峰的网络日志
阮一峰的网络日志
N
News | PayPal Newsroom
www.infosecurity-magazine.com
www.infosecurity-magazine.com
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
SecWiki News
SecWiki News
T
Tor Project blog
C
Check Point Blog
Google Online Security Blog
Google Online Security Blog
GbyAI
GbyAI
The Last Watchdog
The Last Watchdog
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
WordPress大学
WordPress大学

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
llms.txt — what it is, what AI models use it, how to write one, and the mistakes that quietly tank the whole exercise.
Roger Remacle - Lab451.org · 2026-05-26 · via DEV Community

What is llms.txt?
llms.txt is a plain-text file you put at the root of your domain — at https://yoursite.com/llms.txt — that tells large language models what your site is about, which pages matter, and how to navigate it. It's written in Markdown. It's small. It exists for one reason: AI models have very limited context windows, and they can't read your whole site, so you give them a curated map instead.

The standard was proposed by Jeremy Howard of Answer.AI in September 2024, and over the following eighteen months it became the de facto convention for what's now called Generative Engine Optimization, or GEO — the practice of getting your site cited by ChatGPT, Claude, Perplexity, Gemini, and the other large language models that have started to replace the traditional search box.

If you've ever written a robots.txt or a sitemap.xml, you already understand the shape of llms.txt. It's the same idea — a small file at a well-known URL that gives automated systems structured hints about your site — except the audience is language models rather than search-engine crawlers, and the format is Markdown rather than text directives or XML.

Why it exists (the actual problem)
When you ask ChatGPT "what is FastHTML and how do I get started," ChatGPT might do three things behind the scenes: search the web, pick a handful of pages, and try to read enough of them to give you a sensible answer. The second and third steps are where modern sites fall over.

A typical modern web page is 200KB to several megabytes of HTML, CSS, JavaScript, third-party scripts, cookie banners, navigation chrome, and ads. An LLM's context window — even a generous one — is small relative to that. The model has to either render the page through some kind of browser-like pipeline (slow, expensive, fragile) or strip the markup down to text (loses structure, mangles tables, drops semantics). Either way, by the time the actual content reaches the model, it's degraded.

Worse, the model has no idea which pages on your site are important. Is your homepage the canonical statement of what you do? Is the About page the one to read for context? Is your documentation under /docs, /help, /wiki, or somewhere else? Without explicit guidance, the model guesses. It often guesses wrong.

llms.txt solves both problems at once. It's a small, pre-cleaned, Markdown-formatted document that says: "This is what this site is. Here are the pages that matter. Here's where to go for deeper information." The model spends a fraction of its context budget and walks away with an accurate picture of your site.

Who actually reads llms.txt
This is the question every skeptical post about llms.txt opens with, and it deserves an honest answer. As of mid-2026, support is uneven but growing. Here's the realistic state of play:

None of these companies have published a formal commitment that says "we use llms.txt and weight it at X." What you'll see in practice is that crawlers fetch the file, log it, and use it as one signal among many. The honest framing is closer to schema.org markup in 2014 than to robots.txt in 2024: not strictly required, not universally honored, but adopted quickly enough that not having one is starting to look like a tell.

The defensible position in 2026: ship an llms.txt because it costs you almost nothing, it makes your site more legible to anything that does read it, and the downside if no model ever reads it is zero. It's a hedge with no premium.

The spec, line by line
The formal specification at llmstxt.org is short — short enough to walk through end to end. Here's the structure, with every section explained.

# Site or project name

> A one-paragraph blockquote summary.
> This is the only section besides the H1 that is parsed structurally.

Optional free-form Markdown details about the project. Paragraphs,
lists, anything except headings.

## Docs

- [Page name](https://example.com/page): Optional one-line description
- [Another page](https://example.com/another): What it covers

## Examples

- [Example](https://example.com/example): One-line context

## Optional

- [Less critical link](https://example.com/extra): Skippable if context is tight

  1. Exactly one H1. This is the only required element. It's the name of the site or project, not a tagline.

  2. An optional blockquote. This is your "elevator pitch" summary. Models often quote it verbatim when asked "what is this site about." Make it good. One or two sentences, plain English.

  3. Free-form Markdown after the blockquote can contain paragraphs, lists, and emphasis — anything except additional headings, until you hit the H2 sections.

  4. H2 sections containing link lists. Each H2 is a category (Docs, Tutorials, API Reference, Blog, Examples). Each list item is a Markdown link, optionally followed by a colon and a one-line description.

  5. The "Optional" H2 is special. Links here can be skipped by parsers that need a shorter context. Use it for secondary material — appendices, deeper references, anything not essential to understanding what your site is.

What's not allowed: images, HTML, tables, code blocks, additional H1s, or nested headings inside the H2 link sections. Parsers expect Markdown text and Markdown lists only. The simpler you keep it, the more reliably it's read.

llms.txt vs llms-full.txt
The base llms.txt file is a map. It tells a model where to go, but to follow the links the model still has to fetch each page. For documentation sites and other content where you want the model to have everything in one shot, there's a companion file: llms-full.txt.

llms-full.txt contains the actual content of every page on your site, concatenated into a single Markdown document. No navigation, no boilerplate, no chrome — just the words. A model can download one file and have a complete picture of your product without making fifty follow-up requests.

Here's a simplified mental model of the two:

For a marketing site or a small blog, llms.txt alone is plenty. For a documentation site, an API reference, a product manual, or anything you actually want models to be able to answer questions about, ship both. The pairing was popularized by Mintlify and Anthropic in early 2025 and has stuck.

How it relates to robots.txt and sitemap.xml
These three files cover three different audiences with three different purposes. They complement each other; they don't replace each other.

A common confusion: llms.txt doesn't block anything. It's not a permissions file. If you want to keep crawlers off certain paths, that goes in robots.txt. If you want them to know where your pages live for indexing, that's sitemap.xml. llms.txt is purely a here's what we are document.

One subtle interaction: your llms.txt should not link to pages you've blocked in robots.txt. Some crawlers will silently drop the inconsistent links; others might log an error and deprioritize the whole file. Keep the three in agreement.

Writing a good llms.txt
The mechanical rules above are necessary but not sufficient. A good llms.txt — one that actually changes how models talk about your site — follows a few principles that aren't in the spec.

Lead with the summary that you want quoted back
The blockquote at the top is the single most important sentence in the file. When a model is asked "what is yoursite.com," there's a strong chance it will paraphrase your blockquote. Write it the way you'd want it to appear in a Perplexity answer or a ChatGPT citation. No marketing fluff, no superlatives, no "leading platform for." Plain language, what the site does, who it's for.

# Lab451

> Lab451 generates llms.txt, llms-full.txt, sitemap.xml, and robots.txt
> for any public website in about 30 seconds. Free for sites under 50
> pages. No signup required for the basic flow.

Compare that to what a marketing draft would have produced ("Lab451 is the leading AI-discoverability platform empowering websites to maximize their generative engine presence"). The first version is what a model will repeat. The second is what a model will quietly rewrite into the first.

Group links by intent, not by site architecture
The H2 sections shouldn't mirror your top nav. They should mirror the questions a user might ask a model. If someone asks "how do I get started with X," the model should find a section called Getting Started or Quickstart. If they ask "what does X cost," there should be a Pricing section. Think of the H2s as the answers to the questions you'd expect, not as a sitemap.

One-line descriptions earn their keep
The Title: description pattern is optional, but the description is often what tips a model toward citing one page over another. Keep descriptions to a single line. State what the page covers, not how good it is

## Docs

- [Getting started](https://lab451.org/docs/quickstart):
  Generate your first set of files in under a minute.
- [API reference](https://lab451.org/docs/api):
  Endpoints, authentication, rate limits, response formats.
- [WordPress integration](https://lab451.org/docs/wordpress):
  Drop-in instructions for self-hosted and managed WordPress sites.

Use the Optional section for ballast
Old blog posts, deep references, legal pages, anything you'd be happy for a model to read if it had spare context but wouldn't lose sleep over. The Optional section is permission to include them without crowding the must-reads.

Keep the file under 10 KB if you can
The spec doesn't set a size limit, but in practice the entire llms.txt for most sites should fit comfortably under 10 KB. If yours is larger, you're probably listing pages that belong in the sitemap, not the llms.txt. The map is curated; the sitemap is comprehensive.

Real examples worth copying
Three llms.txt files in the wild that get the format right and are worth studying:

FastHTML — the original reference implementation by Jeremy Howard. Clean H1, tight blockquote, sensible H2 grouping, well-used Optional section. The canonical example.

Anthropic Docs — large documentation site, organized by product surface. Notice how the H2s map to how a developer would ask for help, not how the docs are filed.

Lab451 — short and direct. Useful as a template for marketing sites that don't need the full content treatment.

If you study these in a text editor (right-click, View Source) you'll notice they all share something: there's no clever formatting. No bullet points masquerading as paragraphs, no headings used for emphasis, no nested structures. The spec rewards restraint.

Common mistakes
The errors that quietly tank an llms.txt are mostly format violations the model parses silently and then ignores. Here's the list, in rough order of how often we see them.

Treating the H1 as a tagline
The H1 is supposed to be the name of the site or project, full stop. "# The world's best widget for marketers" is not a name. "# WidgetCo" is. Save the positioning for the blockquote.

Skipping the blockquote
Without the blockquote, models lose the structural cue that tells them "this is the summary." They fall back to inferring it from the link descriptions or the page contents, which is the slow, lossy path you were trying to avoid in the first place.

Linking to pages that 404 or redirect
Sounds obvious; happens constantly. A model that follows a link in your llms.txt and hits a 404 will deprioritize the whole file. Treat llms.txt as production output and check it the same way you check your sitemap.

Adding headings inside the H2 sections
The structure is: H1, optional blockquote, optional free-form Markdown, then H2s with link lists. You can't have an H3 inside an H2 link list. If you need to group further, make more H2s.

Stuffing keywords into descriptions
The traditional SEO instinct is to pack the description with target keywords. In an llms.txt context, this backfires — models are trained to be suspicious of unnatural language and may discount the file. Write descriptions the way you'd explain the page to a colleague.

Forgetting to update it
An llms.txt that's six months out of date and links to a pricing page that no longer exists is worse than no llms.txt at all. Models will cheerfully repeat your outdated information. Build regeneration into the same workflow you use for the sitemap.

Hosting, caching, and deployment
The file lives at /llms.txt at the root of your domain. Not /static/llms.txt, not /.well-known/llms.txt, not /seo/llms.txt. Crawlers look at the root. If you can serve /robots.txt, you can serve /llms.txt — the deployment story is identical.

A few practical notes:

Content-Type: serve as text/plain; charset=utf-8 or text/markdown; charset=utf-8. Either works. Don't serve as application/octet-stream — some crawlers will refuse it.
Caching: a Cache-Control: public, max-age=3600 header is fine. The file changes infrequently; an hour of cache saves you nothing in bandwidth but prevents stale-serving headaches after updates.
HTTPS: serve over HTTPS. Most crawlers will follow from HTTP, but some increasingly treat insecure responses as a quality signal.
Subdomains: each subdomain gets its own llms.txt. blog.example.com/llms.txt and docs.example.com/llms.txt are independent files. Models do not look "up" to the apex.
Multilingual sites: the convention is still settling. The pragmatic answer for now is one llms.txt per language subdirectory (/en/llms.txt, /fr/llms.txt) plus a default at the root. Don't try to mix languages in one file.

Measuring whether it works
The honest answer here is that GEO measurement is in roughly the same place that SEO measurement was in 2002. There's no Google Search Console for "how often does ChatGPT cite you." There are a few proxies, and that's about it.

Things you can measure:

Crawler hits on llms.txt in your server logs. Filter by user-agent (GPTBot, ClaudeBot, PerplexityBot, etc.). Frequency is your strongest signal that the file is being consumed.
Referrer traffic from AI chat interfaces. chat.openai.com, perplexity.ai, claude.ai, gemini.google.com. Numbers will be small but rising. Tag them in your analytics.
Direct citation checks. Periodically ask each major LLM "what is yoursite.com" and see what they say. Save the answers. Track changes after you update llms.txt. This is manual, annoying, and the most reliable signal you'll get in 2026.
Brand mention monitoring. Tools like Mention, Brandwatch, and newer GEO-focused services (Profound, Goodie, Otterly) scrape LLM responses at scale. The category is young; the tools are improving fast.

What you can't reliably measure: ranking, share-of-voice against competitors, or click-through rate from AI answers. The industry hasn't built that infrastructure yet. Anyone who claims they have is selling something.

Where this is heading in 2026 and beyond
A few trends worth watching, beyond the basic adoption curve:

Markdown shadow pages
The same proposal that introduced llms.txt also suggests that important pages should be available at their URL with .md appended — so https://example.com/docs/intro.html would also be reachable at https://example.com/docs/intro.html.md as a clean Markdown version. The FastHTML and nbdev ecosystems already do this. Expect more documentation generators to follow.

Pay-per-crawl economics
Cloudflare's mid-2025 launch of bot-payment infrastructure introduced the idea that AI crawlers might pay micropayments for the content they fetch. By late 2026, expect llms.txt files to start including pricing metadata for their referenced URLs — a 402 Payment Required handshake for the high-value pages. This is speculative but plausible.

Verification and signed manifests
As llms.txt adoption grows, so does the incentive for sites to lie in them. A pricing page that claims to be free, an outdated API spec presented as current — the trust problem is obvious. Expect 2027-era extensions that allow signed llms.txt files (probably via DNS TXT records or HTTPS certificate metadata) for sites that want to make verifiable claims about themselves.

Convergence with schema.org
There's an obvious overlap between llms.txt's "tell models what this site is" purpose and schema.org's "tell search engines what this entity is" purpose. The two haven't merged; they're solving related problems with different tools. Watch for proposals that reference schema entities from inside llms.txt, or schema.org WebSite objects that point to llms.txt locations.

Frequently asked questions
Do I need an llms.txt if I already have a sitemap.xml?
Yes. They serve different audiences and answer different questions. The sitemap tells indexers what exists. The llms.txt tells models what matters. Most sites should have both.

Will llms.txt help me rank in Google search?
Almost certainly not directly. Google has been clear that Googlebot doesn't use llms.txt as a ranking signal. Where it might help is in Google's AI Overviews, where Gemini does seem to weight clean, structured content sources. The honest answer: small, indirect, and not the main reason to ship one.

Should I block AI crawlers in robots.txt instead of writing an llms.txt?
That's a separate decision. If you don't want AI models reading your content, block them in robots.txt and skip llms.txt entirely. If you do want them reading your content, write an llms.txt that makes them efficient at it. The two strategies aren't on a spectrum; they're opposite ends.

Can I dynamically generate llms.txt server-side?
Yes, and many large sites do. The file is just text — there's no requirement that it be a static file. A common pattern is to generate it at build time, cache it for an hour, and regenerate on content changes. Just make sure the response is fast (under 200ms) and stable (returns the same content for the same URL within a reasonable window).

What's the difference between llms.txt and AI.txt?
ai.txt was a 2023 proposal from Spawning that focused on consent — telling AI training pipelines whether they could use your content. llms.txt, proposed a year later by Answer.AI, focuses on structure — telling AI models how to use your site at inference time. They're orthogonal; some sites have both. The industry's center of gravity is firmly on llms.txt.

How often should I regenerate llms.txt?
Whenever your site's structure changes meaningfully — new product pages, restructured documentation, retired sections. For active sites, monthly is a reasonable cadence. For mostly-static sites, regenerate when you ship a notable update. Tying it to your existing sitemap-regeneration workflow is the cleanest pattern.

Do I need to submit llms.txt anywhere?
No. Unlike sitemap.xml (which you can submit to Google Search Console), there's no "submit to AI" button. Crawlers find /llms.txt by convention, same as they find /robots.txt. Put it at the right URL and the right crawlers will fetch it on their next visit.


Can I dynamically generate llms.txt server-side?
Yes, and many large sites do. The file is just text — there's no requirement that it be a static file. A common pattern is to generate it at build time, cache it for an hour, and regenerate on content changes. Just make sure the response is fast (under 200ms) and stable (returns the same content for the same URL within a reasonable window).

What's the difference between llms.txt and AI.txt?
ai.txt was a 2023 proposal from Spawning that focused on consent — telling AI training pipelines whether they could use your content. llms.txt, proposed a year later by Answer.AI, focuses on structure — telling AI models how to use your site at inference time. They're orthogonal; some sites have both. The industry's center of gravity is firmly on llms.txt.

How often should I regenerate llms.txt?
Whenever your site's structure changes meaningfully — new product pages, restructured documentation, retired sections. For active sites, monthly is a reasonable cadence. For mostly-static sites, regenerate when you ship a notable update. Tying it to your existing sitemap-regeneration workflow is the cleanest pattern.

Do I need to submit llms.txt anywhere?
No. Unlike sitemap.xml (which you can submit to Google Search Console), there's no "submit to AI" button. Crawlers find /llms.txt by convention, same as they find /robots.txt. Put it at the right URL and the right crawlers will fetch it on their next visit.

Further reading and generating your llms.txt files
Lab451 produces a spec-compliant llms.txt — plus llms-full.txt, sitemap.xml, and robots.txt — for any public website. Free for sites under 50 pages (llms.txt and llms-plus.txt) files and up 100 sitemap.xml files. No signup, no plugin, no OAuth dance.

Lab451 - Generate your files →