MkDocs plugin to generate an /llms.txt file.
Project description
mkdocs-llmstxt
MkDocs plugin to generate an /llms.txt file.
/llms.txt - A proposal to standardise on using an /llms.txt file to provide information to help LLMs use a website at inference time.
See our own dynamically generated /llms.txt as a demonstration.
Installation
pip install mkdocs-llmstxt
Usage
Enable the plugin in mkdocs.yml
:
site_name: My project
site_description: Description of my project.
site_url: https://myproject.com/ # Required for the llmstxt plugin to work.
plugins:
- llmstxt:
markdown_description: Long description of my project.
sections:
Usage documentation:
- file1.md
- file2.md
The resulting /llms.txt
file will be available at the root of your documentation. With the previous example, it will be accessible at https://myproject.com/llms.txt and will contain the following:
# My project
> Description of my project.
Long description of my project.
## Usage documentation
- [File1 title](https://myproject.com/file1.md)
- [File2 title](https://myproject.com/file2.md)
Each source file included in sections
will have its own Markdown file available at the specified URL in the /llms.txt
. See Markdown generation for more details.
File globbing is supported:
plugins:
- llmstxt:
sections:
Usage documentation:
- index.md
- usage/*.md
Full output
Although not explicitly written out in the https://llmstxt.org/ guidelines, it is common to output a llms-full.txt
file with every page content expanded. This file can be generated by setting the full_output
configuration value:
plugins:
- llmstxt:
full_output: llms-full.txt
sections:
Usage documentation:
- index.md
- usage/*.md
Markdown generation
To generate a Markdown page from a source file, the plugin will:
- Cleanup the HTML output (with BeautifulSoup)
- Convert it back to Markdown (with Markdownify)
Doing so is necessary to ensure that dynamically generated contents (API documentation, executed code blocks, snippets from other files, Jinja macros, etc.) are part of the generated text files.
Credits to Petyo Ivanov for the original idea ✨.
You can disable auto-cleaning of the HTML:
plugins:
- llmstxt:
autoclean: false
You can also pre-process the HTML before it is converted back to Markdown:
plugins:
- llmstxt:
preprocess: path/to/script.py
The specified script.py
must expose a preprocess
function that accepts the soup
and output
arguments:
from typing import TYPE_CHECKING
if TYPE_CHECKING:
from bs4 import BeautifulSoup
def preprocess(soup: BeautifulSoup, output: str) -> None:
... # modify the soup
The output
argument lets you modify the soup depending on which file is being generated.
Have a look at our own cleaning function to get inspiration.
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
File details
Details for the file mkdocs_llmstxt-0.2.0.tar.gz
.
File metadata
- Download URL: mkdocs_llmstxt-0.2.0.tar.gz
- Upload date:
- Size: 41.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 104f10b8101167d6baf7761942b4743869be3d8f8a8d909f4e9e0b63307f709e |
|
MD5 | 59086e10d57e1e1a33d2a34b2059d5b0 |
|
BLAKE2b-256 | ee25263ea9c16d1f95f30d9eb1b76e63eb50a88a1ec9fad1829281bab7a371eb |
File details
Details for the file mkdocs_llmstxt-0.2.0-py3-none-any.whl
.
File metadata
- Download URL: mkdocs_llmstxt-0.2.0-py3-none-any.whl
- Upload date:
- Size: 23.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.2
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 907de892e0c8be74002e8b4d553820c2b5bbcf03cc303b95c8bca48fb49c1a29 |
|
MD5 | 0260b9aa72ebfbfa48d9fd81540a3f9d |
|
BLAKE2b-256 | 24290a33f7d8499a01dd7fd0d90fb163b2d8eefa9c90ac0ecbc1a7770e50614e |