GitHub Action to make documentation more accessible to LLMs.
Project description
llms-txt-actions
Make your documentation LLM friendly.
This Github action/CLI tool can automatically generate markdown (.md) files for each endpoint in your documentation as per the standard proposed by answer.ai, for more details read: https://llmstxt.org/.
It completely runs locally be default, by passing MODEL_API_KEY one can choose to engage hosted cloud AI services to generate page summaries.
Features
- 📄 Content Processing: Generate LLM-ready markdown (.md) files from popular document frameworks such as Readthedocs, MKDocs, Sphinx and more.
- 🌈 All Formats : Can process HTML, PDF, Images, DOCX, PPTX, XLSX (thanks to docling) and convert them to Markdown. (coming soon)
- 0️⃣ Zero Config: Works out of the box for most file based documentation framework.
- 💾 Generate Summaries: Using LLMs, we generate concise summary of each page.
- 📕 BYO-Model: Thanks to litellm, you can use upto 150 models like OpenAI, VertexAI, Cohere, Anthropic.
Quick Start
There are two ways to access this library.
- Add this to your GitHub workflow:
steps:
- name: Make docs LLM ready
uses: demodrive-ai/llms-txt-action@v1
# OR You can choose to use an AI model to generate summaries, its completely optional.
steps:
- name: Make docs LLM ready
env:
MODEL_API_KEY: ${{ secrets.MODEL_API_KEY }}
uses: demodrive-ai/llms-txt-action@v1
# any other inputs you would like to set.
OR
You can use it outside of Github Action.
# python 3.9 or above
pip install llms-txt-action
llms-txt --docs-dir site/
# The first run takes a while as it downloads models files from the intrnet.
Input Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
docs_dir |
No | site/ |
Documentation output directory |
skip_llms_txt |
No | true |
Skip llms.txt file generation. |
skip_llms_full_txt |
No | true |
skip llms-full.txt file generation. |
skip_md_files |
No | true |
Skip generation of markdown files |
llms_txt_name |
No | llms.txt |
Name of the llms.txt output file |
llms_full_txt_name |
No | llms-full.txt |
Name of the llms-full.txt output file |
sitemap_path |
No | sitemap.xml |
Path relative to docs_dir to the sitemap.xml file [default: sitemap.xml] |
model_name |
No | gpt-4o |
Whether to push generated files to github artifacts |
Secret Parameters
| Parameter | Required | Default | Description |
|---|---|---|---|
MODEL_API_KEY |
No | None | This key (eg. OPENAI_API_KEY) will be used to summarize pages to create llms.txt. Needs to match the model_name provider. If using the default model_name, pass OPENAI_API_KEY. |
Local Development
-
Clone and install:
# clone the repo uv sync
-
Run the crawler:
uv run python -m "llms_txt_action.entrypoint" --docs-dir site/
Examples
ReadtheDocs
To integrate llms-txt-action with ReadtheDocs, you'll need to configure two files in your project:
.readthedocs.yaml- The main ReadtheDocs configuration file that defines the build environment and processdocs/requirements.txt- Python package dependencies needed for building your documentation
Here's how to set up both files:
# .readthedocs.yaml
version: 2
build:
os: ubuntu-22.04
tools:
python: "3.12" # ^3.9 is supported.
jobs:
post_build:
- llms-txt --docs-dir $READTHEDOCS_OUTPUT/html
mkdocs:
configuration: mkdocs.yml
python:
install:
- requirements: docs/requirements.txt
# docs/requirements.txt
llms-txt-action
MkDocs + Github Pages
MkDocs is a fast and simple static site generator that's geared towards building project documentation. Here's how to integrate llms-txt-action with MkDocs when deploying to GitHub Pages:
-
First, ensure you have a working MkDocs setup with your documentation source files.
-
Create or update your GitHub Actions workflow file (e.g.,
.github/workflows/docs.yml) with the following configuration:
# github action - .github/workflows/docs.yml
- name: Generate static files
run : mkdocs build
- name: Make docs LLM ready
uses: demodrive-ai/llms-txt-action@v1
- name: Deploy to Github
run : mkdocs gh-deploy --dirty
# --dirty helps keep the generated .md and .txt files from getting deleted.
Sphinx + Github Pages
Sphinx is a popular documentation generator for Python projects. Here's how to integrate llms-txt-action with Sphinx and GitHub Pages:
-
First, ensure you have a working Sphinx documentation setup with a
docs/directory containing your source files and configuration. -
Create or update your GitHub Actions workflow file (e.g.,
.github/workflows/docs.yml) with the following configuration:
#...
#...
- name: Build HTML
uses: ammaraskar/sphinx-action@master
- name: Make docs LLM Ready
uses: demodrive-ai/llms-txt-action@v1
with:
name: docs-dir
path: docs/build/html/
- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: docs/build/html
#...
#...
License
This project is licensed under the MIT License - see the LICENSE file for details.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file llms_txt_action-1.0.0.tar.gz.
File metadata
- Download URL: llms_txt_action-1.0.0.tar.gz
- Upload date:
- Size: 295.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5208ab60595b9a2dc0c4a44eae58203f849fd6ba9f3bedc02dbc5df02482310e
|
|
| MD5 |
115b7ab5f1840ecb0aba2c703347dd95
|
|
| BLAKE2b-256 |
5447fc7291aa605daf0aaefd0ad1861c55d3edcde36a602a002bce4954a8ea42
|
Provenance
The following attestation bundles were made for llms_txt_action-1.0.0.tar.gz:
Publisher:
deploy-pypi.yml on demodrive-ai/llms-txt-action
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llms_txt_action-1.0.0.tar.gz -
Subject digest:
5208ab60595b9a2dc0c4a44eae58203f849fd6ba9f3bedc02dbc5df02482310e - Sigstore transparency entry: 160086771
- Sigstore integration time:
-
Permalink:
demodrive-ai/llms-txt-action@68038f14df07c21af8249439969da11a3aba09bd -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/demodrive-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
deploy-pypi.yml@68038f14df07c21af8249439969da11a3aba09bd -
Trigger Event:
release
-
Statement type:
File details
Details for the file llms_txt_action-1.0.0-py3-none-any.whl.
File metadata
- Download URL: llms_txt_action-1.0.0-py3-none-any.whl
- Upload date:
- Size: 9.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.0.1 CPython/3.12.8
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cd48c293163d302eca6226f4c4f16ad2a2de2cd6be1b509d646b16fa7427c1e2
|
|
| MD5 |
273ed9a031637c61693a6f80dca028e6
|
|
| BLAKE2b-256 |
7e9f32ba5b35542aaed18f855497b1a0e762900d4c9bb63c845703d1886f5c02
|
Provenance
The following attestation bundles were made for llms_txt_action-1.0.0-py3-none-any.whl:
Publisher:
deploy-pypi.yml on demodrive-ai/llms-txt-action
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
llms_txt_action-1.0.0-py3-none-any.whl -
Subject digest:
cd48c293163d302eca6226f4c4f16ad2a2de2cd6be1b509d646b16fa7427c1e2 - Sigstore transparency entry: 160086772
- Sigstore integration time:
-
Permalink:
demodrive-ai/llms-txt-action@68038f14df07c21af8249439969da11a3aba09bd -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/demodrive-ai
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
deploy-pypi.yml@68038f14df07c21af8249439969da11a3aba09bd -
Trigger Event:
release
-
Statement type: