
jekyll-llms-generator
A Jekyll generator plugin that automatically builds an llms.txt file every time your site builds, keeping AI language models up to date with your content.
jekyll-llms-generator is a Jekyll generator plugin that automatically builds an /llms.txt file every time your site builds. No manual maintenance required — just configure it once and your llms.txt stays current as you publish new posts, projects, and pages.
What is llms.txt?
llms.txt is an emerging standard that lets website owners expose a structured plain-text summary of their content for AI language models and LLM crawlers. Think of it like robots.txt, but instead of telling crawlers what to skip, it tells them what matters and where to find it.
AI tools and research assistants use llms.txt to understand your site’s content at a glance — useful when someone asks an AI assistant about a topic you’ve written about.
Installation
Add to your Gemfile:
gem "jekyll-llms-generator", "~> 0.3"
Add to _config.yml:
plugins:
- jekyll-llms-generator
Then run bundle install.
Configuration
All settings live under llms_txt: in _config.yml:
llms_txt:
title: "Your Name or Site Name"
tagline: "A short description of your site."
intro: |
One or two sentences about who you are and what you write about.
link_tag: true # inject <link rel="ai" href="/llms.txt"> into every page
full: false # also generate /llms-full.txt and add a discovery link in llms.txt
sections:
- title: "Blog Posts"
collection: posts
limit: 20
- title: "Projects"
collection: projects
- title: "Pages"
pages:
- /about/
Options
| Key | Default | Description |
|---|---|---|
title |
site title |
H1 heading in llms.txt |
tagline |
site description |
Blockquote line below the title |
intro |
(none) | Optional paragraph after the tagline |
link_tag |
true |
Inject <link rel="ai" href="/llms.txt"> into every HTML page’s <head> |
full |
false |
Also generate /llms-full.txt with full plain-text content; adds a discovery link in llms.txt header |
sections |
[] |
Array of section definitions |
Each section takes a title plus one or both of collection (a Jekyll collection name, including posts) and pages (an array of page URLs). Add limit: to cap how many items appear.
Per-document opt-out
Add llms_txt: false to any post or document’s frontmatter to exclude it:
---
title: "Draft Post"
llms_txt: false
---
Output format
The generated /llms.txt follows the llmstxt.org spec:
# Jason Chance
> Downtown revitalization, local government technology, and public finance.
Jason Chance is a DDA director writing about public finance and downtown revitalization.
## Blog Posts
- [How DDAs Can Use TADs to Fund Revitalization](https://jasonchance.com/blog/how-ddas-can-use-tads/): A practical overview of Tax Allocation Districts for DDA directors.
- [Drone Mapping for Downtown Revitalization](https://jasonchance.com/blog/drone-mapping-downtown/): How consumer drones can create valuable data for DDA strategic planning.
How AI crawlers find it
LLM crawlers discover llms.txt the same way crawlers find robots.txt — by checking <your-site>/llms.txt directly. When full: true, a [Full content version](/llms-full.txt) link appears in the llms.txt header so crawlers know to fetch the deeper file. The optional <link rel="ai"> injection provides an additional discovery signal in every HTML page’s <head>.
You can also submit your site to the llmstxt.org directory for broader visibility.

