How to Add llms.txt to a Ghost Blog
Adding a llms.txt file to Ghost depends on how you run it. Self-hosted Ghost sits behind a web server you control, so serving the file is easy. Ghost(Pro), the managed option, gives you no server access — so you route around it. This guide covers both honestly.
Generate the content first
Both setups serve the same file, so generate it up front. Our tool reads your published Ghost posts and pages and drafts a clean llms.txt. Enter your domain, review, and keep the file handy.
Generate your file:
What the file looks like
A blog benefits from an llms.txt that highlights your best posts and key pages rather than dumping every URL. Markdown structure:
# Your Publication > One sentence on what your Ghost blog covers > and who should read it. ## Cornerstone Posts - [Guide One](https://yourdomain.com/guide-one): What it covers. - [Guide Two](https://yourdomain.com/guide-two): What it covers. ## Topics - [Tag: Product](https://yourdomain.com/tag/product): Series. - [Tag: Research](https://yourdomain.com/tag/research): Series. ## About - [About](https://yourdomain.com/about): The publication. - [Subscribe](https://yourdomain.com/#/portal): Join the list.
Save it as plain text named llms.txt.
Self-hosted Ghost: an Nginx location block
A self-hosted Ghost install runs behind a reverse proxy — almost always Nginx (or Caddy). Put your llms.txt somewhere on the server, such as /var/www/ghost-static/llms.txt, then add a location block to your Nginx server config so the file is served before the request proxies to Ghost:
location = /llms.txt {
alias /var/www/ghost-static/llms.txt;
default_type text/plain;
}
location / {
proxy_pass http://127.0.0.1:2368;
# ...existing Ghost proxy settings
}Reload Nginx (sudo nginx -s reload). The exact location matching order matters, so place the specific = /llms.txt block above the catch-all. On Caddy, a matching handle directive achieves the same result.
Ghost(Pro): proxy or redirect
Ghost(Pro) is fully managed. You cannot reach the server, so there is no Nginx to edit and no root file to drop. Two honest options remain:
Reverse proxy (preferred)
Route your custom domain through Cloudflare and add a Worker or rule that returns your Markdown for /llms.txt while passing all other traffic to Ghost(Pro). This gives a clean 200 at the canonical path.
Redirect to a hosted copy
If you cannot add a proxy, host the file elsewhere and use a 301 from /llms.txt to it via your DNS/CDN layer. Crawlers that follow redirects will reach it, though a direct response is cleaner.
Verify it works
Open the URL
Visit https://yourdomain.com/llms.txt and confirm you see plain-text Markdown, not a themed Ghost page.
Check the response
curl -I to confirm a 200 as text/plain (proxy/Nginx) or a 301 that resolves to your file (redirect).
Validate the links
Every URL in the file must resolve on your live blog. Refresh the file whenever you publish new cornerstone posts.
Run a visibility check
Use our AI Visibility tool to confirm the file is reachable and parseable from outside your host.
Frequently Asked Questions
Can I upload llms.txt through the Ghost admin?
No. Ghost's admin handles posts, pages, and image uploads, but it has no facility to place a raw text file at your domain root. How you add llms.txt depends entirely on whether you self-host Ghost or run it on Ghost(Pro).
What is the cleanest option on self-hosted Ghost?
Add a location block to the Nginx (or Caddy) config that sits in front of Ghost, serving llms.txt from a file on disk before the request reaches the Node process. This yields a direct 200 at /llms.txt and never touches your theme or content.
I'm on Ghost(Pro) — what can I do?
Ghost(Pro) is managed hosting with no server or root file access, so you cannot place a raw file. The workable options are a reverse proxy in front of your domain (for example a Cloudflare Worker) that returns the file for /llms.txt, or a redirect to a copy hosted elsewhere. A direct proxy response is cleaner than a redirect.
Can I use routes.yaml to serve the file?
Ghost's routes.yaml can map a URL to a template, but templates render as text/html, so the response would not be a clean text/plain file. It is a workaround, not a recommended path. Prefer an Nginx location block (self-hosted) or a proxy (Ghost Pro).
Does llms.txt guarantee AI tools will cite my blog?
No. As of mid-2026 llms.txt is a proposed, advisory standard with no enforcement, and support varies across AI systems. There is no guarantee any model will fetch or use your file. It is a sensible signal to publish, not a guarantee of citations.
Generate Your llms.txt for Ghost
Enter your domain and get Markdown ready for an Nginx block or a proxy on Ghost(Pro).