How to add your blog posts to your llms.txt file

To add your blog posts to your llms.txt file, give them their own section of links with a one-line description of what each post answers, keep thin or hidden posts out, and update the section every time you publish, which an AI marketer can handle for you as part of publishing each post.

Part of Publish blog content consistently

Key Takeaways

  1. You add blog posts to llms.txt by giving them their own section of the file, with one link per post and a short description of the question each post answers.
  2. The description is the part that matters most, because it's what an AI system reads to decide which post to open. "How to choose between per-seat and usage pricing" helps a model. "Pricing thoughts" doesn't.
  3. Some platforms can generate the file for you, but a file you write by hand goes out of date the day you publish your next post. The real work is keeping the blog section current.
  4. On sites Kite builds with its content editor, llms.txt is built from your published content, so each new post joins the file the moment it goes live, using the description Kite wrote for it. On other sites Kite hosts, Kite edits the file and checks it after each publish.
  5. You end up with an llms.txt file whose blog section lists your live posts, describes each one in a single plain line, and stays in step with your blog.
On this page

How do I add my blog posts to my llms.txt file?

You add your blog posts to your llms.txt file by creating a section for them, listing each post as a link with a one-line description, and updating that section whenever you publish or remove a post. llms.txt is a plain text file at the root of your website, at yoursite.com/llms.txt, that gives AI systems a short, readable guide to your site. It was proposed in 2024 as a companion to robots.txt and your sitemap. Where a sitemap lists every address for search engines to crawl, llms.txt tells a language model what your site is and which pages are worth reading.

The format is simple Markdown, the same lightweight formatting used in many writing tools. The file has four parts, in this order:

  • A heading with your site's name.
  • A short summary of what your site or company is, written as a quote block.
  • Optional paragraphs with anything a reader must know to use the rest of the file.
  • Sections, each with its own heading and a list of links. Each link can be followed by a colon and a short description.

Your blog posts go in one of those sections. A blog entry looks like this:

## Blog

- [How to choose between per-seat and usage pricing](https://yoursite.com/blog/per-seat-vs-usage-pricing): When each pricing model fits, what it does to expansion revenue, and the three questions to answer before you switch.
- [What a first marketing hire should own](https://yoursite.com/blog/first-marketing-hire): The jobs a first marketer takes on in their first 90 days, and the ones to leave for later.

The format also reserves a section called "Optional" for links a model can skip when it needs a shorter version of your site. Older posts, event recaps, and company news belong there, so your most useful articles stay at the front.

A good blog section is a curated index, not a copy of your sitemap. It lists the posts that answer real questions your buyers ask, and it leaves out drafts, tag and category pages, and posts you've hidden from search. Each description says what the post is the source for, specifically enough that a model reading only that line knows whether the post answers the question in front of it. Every link opens the live post.

You can write and upload the file by hand, and some platforms will generate one for you. WordPress SEO plugins such as Yoast and Rank Math can create an llms.txt file, and documentation platforms such as Mintlify build one automatically. Generated files are a quick start, but they tend to list every post with whatever excerpt happens to be on it, and a hand-written file starts going stale with the next post you publish. Most blogs don't need a better file once. They need the blog section updated every time the blog changes.

Kite does that upkeep for you. It writes a description for each post as part of publishing it, adds the post to your llms.txt file, and checks the live file afterward.

How to get started

Start by asking Kite in plain words:

"Make sure our blog posts are in our llms.txt file, and keep it updated when we publish new ones."

Kite is an AI marketer. It researches your business, builds a growth strategy, and ships the work that brings you new customers. You can work with Kite in your browser or in Slack. When Kite hosts your website, it already knows your pages, your blog, and how the site is built, so it can tell you right away whether your llms.txt file is generated from your content or kept as a file it edits. It also knows from its research on your business which topics your buyers care about, which is what it needs to describe each post well.

You don't need to connect anything for a site Kite hosts. For a site you've imported from GitHub, Kite works in your repository and your own deployment ships the change.

Kite's changes to your site wait as unpublished changes until you publish them, and by default it asks before it publishes a new blog post. Once you approve a post, the llms.txt update goes out with it.

How Kite adds your blog posts to llms.txt

How is your llms.txt file kept?

Kite first works out how your site produces its llms.txt file, because that decides where the blog section actually comes from. There are two cases on sites Kite hosts.

On a site Kite built with its content editor, the file isn't stored anywhere. The site builds it from your published content and rebuilds it whenever that content or your site settings change. The heading comes from your brand name in the site settings, and the summary comes from your site's default search description. Below that, the file lists your pages, then the published entries in each of your content collections, which is where your blog posts live. Each post appears with its title, a link to its live address, and its search description, or its excerpt when it has no search description.

On other sites Kite hosts, and on sites imported from GitHub, llms.txt is a static file in the site's code. Kite edits that file directly, and the rest of this page covers what it decides when it does.

Which posts belong in the file?

Kite lists the posts that answer a question someone might bring to an AI system, and it keeps posts out when search engines are told to ignore them. On a content-editor site, the rule is built in. A post appears only once it's published, and a post marked to stay out of search, or one whose canonical link points to a different address, is left out. The canonical link is the tag that tells search engines which copy of a page is the original. So the way to keep a post out of llms.txt is the same as keeping it out of search, and Kite tells you when a post you want listed is hidden that way.

In a static file, Kite curates the list itself. It puts your strongest articles in the main blog section, such as guides, comparisons, and explanations of how your product's category works. It moves older posts, announcements, and event recaps into the "Optional" section, and it drops pages that don't help a reader, such as tag archives, author pages, and duplicates of the same post. It also checks each link against the routes your site actually has, so a model following the file never lands on a missing page.

What does each post's description say?

Kite writes each post's description to say what question the post answers and what a reader will find there, because that line is what a model reads to decide whether to open the post. On a content-editor site, the description in llms.txt is the post's search description, so Kite writes one for every post it publishes. That single line does two jobs: it shows under your post in Google results, and it describes the post in llms.txt.

A good description names the specific question and the specific answer. Kite writes "When each pricing model fits and what it does to expansion revenue" rather than "Our take on pricing." It draws on the post itself and on what Kite knows about your buyers from its research, so the description uses the words your customers would use to ask the question. When an older post has no search description, Kite writes one so the post doesn't fall back to an excerpt that may only be its first sentence.

How do the file's other sections help the blog?

Kite keeps the top of the file accurate, because the summary tells a model how to read every link below it. On a content-editor site, Kite updates your brand name and default search description in the site settings when your positioning changes. In a static file, Kite rewrites the summary directly and can add two sections that point AI systems toward your blog:

  • Agent guidance. This section tells an AI system which pages to use for which kind of question, when to send people to your contact or sales page, and what it shouldn't guess, such as prices you haven't published.
  • Common questions. This section lists the questions your buyers ask most often, each linked to the post or page that answers it.

Keeping the file current after each new post

Kite brings llms.txt up to date every time a blog post goes live, so the file never trails your blog. On a content-editor site this happens on its own: publishing, withdrawing, or deleting a post updates the file without anyone touching it. In a static file, Kite adds the new post as part of the same change that publishes it.

After each publish, Kite opens the live llms.txt file to confirm that the new post appears with the right title, link, and description. If something is wrong, such as a missing post or a link that doesn't open, Kite fixes it and tells you what it changed.

Checking how AI systems see the file

Kite can scan your site to check how well AI agents can find and use it, and llms.txt is part of that scan. The AI guidance checks look at whether the file exists, whether it follows the format, whether its links open, and whether it tells an AI system when to use each page. A file that exists but is thin or has dead links passes only partly, and Kite recommends the fix. The full scan runs 24 checks across crawl access, content, structured data, AI guidance, and brand presence, and it gives a score out of 100 with fixes ranked by how many points each would recover.

What Kite reports back

When the work is done, Kite tells you in the conversation where you asked what changed in your llms.txt file. It lists the posts it added or moved, the descriptions it wrote or rewrote, and any post it left out and why, such as a post hidden from search. It includes a link to the live file so you can read it yourself.

What the finished work contains

When Kite finishes, your website serves an llms.txt file at its root that describes your company and points AI systems to your blog posts, and that file keeps up with your blog from then on.

The summary

The top of the file names your company and says in one to three sentences what it does, so a model reads every link below it in the right context.

The blog section

Each live post appears as a link to its live address, followed by a one-line description of the question it answers.

The optional section

In a static file, older posts, announcements, and secondary material sit in their own section that tools can skip.

Guidance sections

In a static file, the guidance and common-questions sections tell AI systems which post or page answers which kind of question.

Search descriptions

Each post Kite publishes carries a search description that serves both Google results and the llms.txt file.

Ongoing updates

Every new post joins the file when it goes live, and posts you withdraw or delete leave it.

Common questions

Do ChatGPT, Gemini, and other AI systems actually read llms.txt?

Some do and some don't, so it's best to treat llms.txt as a low-cost addition rather than the main way to get cited. None of the major AI companies has committed to reading llms.txt when it builds an answer, and Google has said its search doesn't use the file. AI agents and coding tools that browse a site do fetch it, and many software and documentation sites publish one for that reason. Being cited depends far more on whether your posts clearly answer the questions people ask. To see whether AI answers mention your business today, try Kite's free AI visibility checker. It asks ChatGPT, Gemini, Perplexity, and Claude the questions your customers ask, and in about 45 seconds it shows whether they recommend you and who they recommend instead.

Should every blog post go in llms.txt?

Not necessarily. Posts that answer a real question belong in the file, while thin posts, duplicates, and pages you've hidden from search don't. If your blog has hundreds of posts, put your strongest articles in the main blog section and the rest under "Optional," so a model working with limited space reads the best ones first.

What is the difference between llms.txt and llms-full.txt?

llms.txt is a short index of links with a description for each, while llms-full.txt is a separate convention that puts the full text of your pages into one file. Documentation sites often publish both, so an AI tool can read everything in a single request. For a company blog, the index is the part most worth keeping accurate, because it points to the posts themselves.

Do I need a separate llms.txt file for my blog?

No. The file lives at the root of your website and covers the whole site, so your blog posts go in a section of that one file. If your blog sits on a separate subdomain, such as blog.yoursite.com, that subdomain can serve its own file at its own root.

Questions this page answers

  • How do I add your blog posts to your llms.txt file?
  • How can I use an AI marketing agent to add your blog posts to your llms.txt file?

Related use cases

1 more coming soon
  • Llms txt

About the author

Devon Wells leads product marketing at Kite, the AI marketer. He spent a decade marketing industrial AI, from self-driving trucks to computer vision, but now Kite handles most of the work itself.

Tell me your goal and I’ll get to work.

Get started for free