How to implement llms.txt.
Unlock a full project once, then consume the newest version from one stable public URL. Your cron job, CI pipeline, deploy hook, or application scheduler can pull the file whenever your stack needs it.
$ curl -fsSL \
https://llmstxtgenerator.co/p/your-id/llms.txt
Same URL. New content after your site changes.
Generate once
Unlock full generation and copy the hosted llms.txt URL from your project dashboard.
We keep it current
Our updater checks the source website every 24 hours and can also be started with Update now.
Pull it your way
Use curl, cron, CI, a deploy hook, or a normal fetch in the language your stack already uses.
The simplest implementation
Pull the newest file with curl.
Replace YOUR_PUBLIC_ID with the identifier in the public URL copied from your dashboard. The endpoint is public and does not require an API key.
curl --fail --location --silent --show-error \
https://llmstxtgenerator.co/p/YOUR_PUBLIC_ID/llms.txt \
--output ./public/llms.txtKeep a local copy current
Use cron when your server owns the file.
This is useful when another tool expects /public/llms.txt inside your own deployment. The hosted source remains the canonical version; your job simply refreshes the copy.
# Refresh every day at 03:15 UTC
15 3 * * * /usr/bin/curl --fail --location --silent --show-error \
https://llmstxtgenerator.co/p/YOUR_PUBLIC_ID/llms.txt \
--output /var/www/example.com/public/llms.txtWorks with your stack
Use the language you already ship.
The response is plain Markdown. There is no SDK, webhook, or special runtime requirement.
import { writeFile } from "node:fs/promises"
const source = "https://llmstxtgenerator.co/p/YOUR_PUBLIC_ID/llms.txt"
const response = await fetch(source, {
headers: { "user-agent": "your-site-llms-sync/1.0" },
})
if (!response.ok) throw new Error('llms.txt returned ' + response.status)
await writeFile("./public/llms.txt", await response.text(), "utf8")from pathlib import Path
from urllib.request import Request, urlopen
source = "https://llmstxtgenerator.co/p/YOUR_PUBLIC_ID/llms.txt"
request = Request(source, headers={"User-Agent": "your-site-llms-sync/1.0"})
with urlopen(request, timeout=30) as response:
if response.status != 200:
raise RuntimeError(f"llms.txt returned {response.status}")
Path("public/llms.txt").write_bytes(response.read())CI and content workflows
Refresh it when your repository changes.
If your website is deployed from Git, a scheduled GitHub Actions job can fetch the latest hosted file, commit it, and let your normal deployment pipeline publish it.
Open your project dashboardname: Refresh llms.txt
on:
schedule:
- cron: "15 3 * * *"
workflow_dispatch:
jobs:
refresh:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: curl --fail --location --silent --show-error \
https://llmstxtgenerator.co/p/YOUR_PUBLIC_ID/llms.txt \
--output public/llms.txt
- uses: stefanzweifel/git-auto-commit-action@v6
with:
commit_message: "chore: refresh llms.txt"Implementation checklist
Publish once. Let the context keep pace.
Keep exploring
More useful llms.txt resources.
Move from the format to implementation, examples, and a live check without losing the thread.