Implementation guide

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.

Stable public source24h refresh

$ curl -fsSL \

https://llmstxtgenerator.co/p/your-id/llms.txt

Same URL. New content after your site changes.

01

Generate once

Unlock full generation and copy the hosted llms.txt URL from your project dashboard.

02

We keep it current

Our updater checks the source website every 24 hours and can also be started with Update now.

03

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.

One-off or deploy hookcurl
curl --fail --location --silent --show-error \
  https://llmstxtgenerator.co/p/YOUR_PUBLIC_ID/llms.txt \
  --output ./public/llms.txt
--fail makes failed requests visible to automation.
--location follows the hosted URL safely.
--output writes the Markdown wherever your stack expects it.

Keep 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.

Our own updater runs every 24 hours. Your cron schedule can run at the cadence that fits your deploy and publishing workflow.
# 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.txt

Works with your stack

Use the language you already ship.

The response is plain Markdown. There is no SDK, webhook, or special runtime requirement.

Node.js fetch
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")
Python standard library
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 dashboard
name: 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.

Unlock the complete project.
Copy the public URL from the dashboard.
Choose cron, CI, or an application fetch.
Handle non-200 responses in automation.
See one-time pricing