Skip to main content

MkDocs plugin to add 'Copy to LLM' buttons to documentation

Project description

MkDocs Copy to LLM Plugin

Tests codecov PyPI version Python versions

A MkDocs plugin that adds "Copy to LLM" buttons to your documentation, making it easy to copy code blocks and entire pages in formats optimized for Large Language Models (LLMs).

This package was inspired by Docus by NuxtLabs and made for Polkadot Documentation.

Features

  • Copy entire page — Adds a split button at the top of each page with multiple copy options:
    • Copy page content as Markdown
    • Copy markdown link
    • Open in ChatGPT
    • Open in Claude
    • View raw markdown
  • Smart formatting — Automatically formats content with proper context for LLM consumption
  • Visual feedback — Shows success indicators and toast notifications
  • Mobile responsive — Works seamlessly on all device sizes

Installation

Install the plugin using pip:

pip install mkdocs-copy-to-llm

Optional Dependencies

For asset minification in production builds:

pip install mkdocs-copy-to-llm[minify]
# or separately:
pip install jsmin csscompressor

Configuration

Add the plugin to your mkdocs.yml:

plugins:
  - copy-to-llm

That's it! The plugin will automatically add copy buttons to all your pages and code blocks.

Configuration Options (Optional)

Color Customization

You can customize the colors to match your theme:

plugins:
  - copy-to-llm:
      button_bg_color: "#ffffff"        # Button background color
      button_hover_color: "#0969da"     # Button hover color
      toast_bg_color: "#0969da"         # Toast notification background
      toast_text_color: "#ffffff"       # Toast notification text color

Colors can be specified as:

  • Hex values: #0969da or #09d
  • RGB values: rgb(9, 105, 218) or rgba(9, 105, 218, 0.5)
  • CSS color names: blue, red, darkslategray, etc.
  • CSS variables: var(--md-primary-fg-color)

The plugin validates all color values and will show an error if an invalid format is provided.

Example configurations for popular themes:

Material for MkDocs:

plugins:
  - copy-to-llm:
      button_hover_color: "var(--md-primary-fg-color)"
      toast_bg_color: "var(--md-primary-fg-color)"

MkDocs Default Theme:

plugins:
  - copy-to-llm:
      button_bg_color: "#f5f5f5"
      button_hover_color: "#3f51b5"
      toast_bg_color: "#3f51b5"

Repository URL Configuration

For the "Copy Markdown link" and "Open in ChatGPT/Claude" features to work correctly, you can specify your repository's raw content URL:

plugins:
  - copy-to-llm:
      repo_url: "https://raw.githubusercontent.com/owner/repo/branch"

If not configured, the plugin will try to:

  1. Detect the repository URL from edit links in your theme
  2. Use repository links found on the page
  3. Fall back to constructing URLs based on the current path

Note: The URL should point to the raw content base URL without the trailing slash. For GitHub repositories, this is typically https://raw.githubusercontent.com/owner/repo/branch.

Asset Minification

The plugin can automatically minify JavaScript and CSS files in production builds when the optional dependencies are installed:

# Install minification dependencies (optional)
pip install jsmin csscompressor
plugins:
  - copy-to-llm:
      minify: true  # Default is true

Minification is automatically disabled when running mkdocs serve for easier debugging. If the minification libraries are not installed, the plugin will work normally but without minification.

Analytics Integration

Track copy events to understand how users interact with your documentation:

plugins:
  - copy-to-llm:
      analytics: true  # Default is false

When enabled, the plugin will send copy events to your analytics platform (if configured):

  • Event name: copy_to_llm
  • Event category: engagement
  • Event label: code_block, page_content, markdown_content, or markdown_link
  • Event value: Length of copied content

Supported analytics platforms:

  • Google Analytics (gtag.js)

Important: Analytics tracking is opt-in and disabled by default. The plugin will only track events when:

  1. The analytics option is explicitly set to true in your configuration
  2. An analytics platform is already configured on your site

This ensures user privacy is respected and no tracking occurs without explicit consent.

How It Works

The plugin automatically:

  1. Injects the necessary JavaScript and CSS files
  2. Adds a split button to the main page title
  3. Handles all copy operations with proper formatting

Customization

The plugin uses CSS variables from your MkDocs theme. It integrates seamlessly with the Material theme for MkDocs.

Development

Setup

# Clone the repository
git clone https://github.com/leonardocustodio/mkdocs-copy-to-llm.git
cd mkdocs-copy-to-llm

# Install development dependencies
make install-dev

Available Commands

make help          # Show all available commands
make test          # Run tests with coverage
make lint          # Run linting checks
make format        # Format code with Ruff

Pre-commit Hooks

The project uses pre-commit hooks to ensure code quality:

pre-commit install  # Install hooks (done automatically by make install-dev)
pre-commit run --all-files  # Run all hooks manually

Accessibility

The plugin is designed with accessibility in mind:

  • All buttons have proper ARIA labels
  • Full keyboard navigation support
  • Screen reader friendly
  • Focus management for dropdown menus
  • Escape key closes dropdowns

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mkdocs_copy_to_llm-0.2.7.tar.gz (34.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mkdocs_copy_to_llm-0.2.7-py3-none-any.whl (22.8 kB view details)

Uploaded Python 3

File details

Details for the file mkdocs_copy_to_llm-0.2.7.tar.gz.

File metadata

  • Download URL: mkdocs_copy_to_llm-0.2.7.tar.gz
  • Upload date:
  • Size: 34.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for mkdocs_copy_to_llm-0.2.7.tar.gz
Algorithm Hash digest
SHA256 f641b0cfdb7c76fa2fd883a61cd1411c511068cffe47612dac054e04939739b7
MD5 c96183c296ae10b76dd31ea6f747cdd6
BLAKE2b-256 53f2069cdb298dba51fcdf08bebf7001fdb1b294e1d2189faa1f3fddace9b939

See more details on using hashes here.

Provenance

The following attestation bundles were made for mkdocs_copy_to_llm-0.2.7.tar.gz:

Publisher: release.yml on leonardocustodio/mkdocs-copy-to-llm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mkdocs_copy_to_llm-0.2.7-py3-none-any.whl.

File metadata

File hashes

Hashes for mkdocs_copy_to_llm-0.2.7-py3-none-any.whl
Algorithm Hash digest
SHA256 12386cfd590fa34460e9bbefa677555e94a828bc23ee3e03d7aceadf0140c13f
MD5 f9a3c0996cdb14fe9eeed57e004cbea1
BLAKE2b-256 35345c9f5b010dee2d9431d8fd015dfb8cedf5b5fcf7750dbd46fd3104849076

See more details on using hashes here.

Provenance

The following attestation bundles were made for mkdocs_copy_to_llm-0.2.7-py3-none-any.whl:

Publisher: release.yml on leonardocustodio/mkdocs-copy-to-llm

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page