HiD-LLMS

An llms.txt generator for the HiD static site framework.

Produces an llms.txt -- a markdown-formatted index of your site's pages and posts, designed to be read by large language models instead of raw HTML. By default a companion llms-full.txt is produced as well, containing the full markdown content of every page and post.

Requirements

Installation

cpanm byterazor::HiD::LLMS

Usage

Add +byterazor::HiD::LLMS to the plugins key in your HiD config. The + prefix tells HiD to use the full class name rather than looking in the HiD::Generator:: namespace:

plugins:
  - '+byterazor::HiD::LLMS'
llms:
  generate: 1

Configuration

| Key | Default | Description | | --- | --- | --- | | llms.generate | 0 | Enable the generator. | | llms.title | site title | The # heading of both files. Falls back to the site-wide title key; a warning is emitted and a placeholder used if neither is set. | | llms.description | site description | A one-line site description, emitted as a blockquote below the title in llms.txt. Falls back to the site-wide description key; omitted if neither is set. | | llms.destination | llms.txt | Output path for the index, relative to the site destination. | | llms.full | 1 | Also generate llms-full.txt with the full markdown content of every page and post. Set to 0 to omit. | | llms.full_destination | llms-full.txt | Output path for the full-content file, relative to the site destination. | | llms.baseurl | site baseurl | Absolute base URL prefixed to every entry. The file is most useful with absolute URLs; a warning is emitted if it is not absolute. | | llms.exclude | — | Arrayref of regexes; matching URLs are left out of both files. |

Pages are listed in URL order; posts are listed newest-first by date. Each entry's link text is the post title for posts, the title front matter for pages, or a title derived from the URL if none is given. A description from the front matter is appended after the colon when present.

Examples

Basic

llms:
  generate: 1
  title: 'My Site'
  description: 'A short one-line description.'
  baseurl: 'https://example.com'

Exclude drafts

llms:
  generate: 1
  baseurl: 'https://example.com'
  exclude:
    - 'draft'
    - 'private'

Index only (no full file)

llms:
  generate: 1
  baseurl: 'https://example.com'
  full: 0

License

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself. See LICENSE.

Author

Dominik Meyer <dmeyer@federationhq.de>