 
Extract Docusaurus documentation content as markdown for AI tools like ChatGPT and Claude
A lightweight Docusaurus plugin that automatically adds a "Copy page" button to your documentation site's sidebar. Perfect for developers who want to quickly extract documentation content for AI assistance, code reviews, or content analysis.
- AI-Ready Content: Instantly convert documentation pages to clean markdown for ChatGPT, Claude, or other AI tools
- Developer Productivity: Copy entire documentation pages without manual selection and cleanup
- Zero Configuration: Works out of the box - just install and go
- Documentation Workflow: Streamline the process of getting documentation context for AI assistance
- π Copy page as markdown - Clean page content extraction
- ποΈ View as markdown - Preview extracted content in new tab
- π€ AI integration - Direct "Open in ChatGPT" and "Open in Claude" buttons
- βοΈ Configurable actions - Show/hide specific dropdown actions (perfect for private sites)
- β‘ Auto-injection - Automatically adds to table of contents sidebar (no configuration needed)
- π¨ Theme-aware - Supports light/dark themes
- π¨ Customizable styling - Easy custom CSS classes and inline styles
- π± Mobile-friendly - Responsive design
- π οΈ Zero-config - Works out of the box with sensible defaults
npm install docusaurus-plugin-copy-page-buttonAdd the plugin to your docusaurus.config.js:
module.exports = {
  plugins: ["docusaurus-plugin-copy-page-button"],
};The button will automatically appear in your table of contents sidebar!
Use custom styles to position the button differently:
module.exports = {
  plugins: [
    [
      "docusaurus-plugin-copy-page-button",
      {
        customStyles: {
          button: {
            style: {
              position: "fixed",
              top: "20px",
              right: "20px",
            },
          },
        },
      },
    ],
  ],
};You can control which actions appear in the dropdown menu using the enabledActions option. This is particularly useful for private documentation sites where the AI tool links (ChatGPT/Claude) won't work properly.
module.exports = {
  plugins: [
    [
      "docusaurus-plugin-copy-page-button",
      {
        // Only show copy and view actions (hide ChatGPT and Claude)
        enabledActions: ['copy', 'view'],
      },
    ],
  ],
};Available actions:
- 'copy'- Copy page as Markdown
- 'view'- View as Markdown in new tab
- 'chatgpt'- Open in ChatGPT
- 'claude'- Open in Claude
Default: All actions are enabled: ['copy', 'view', 'chatgpt', 'claude']
Example configurations:
// Only copy functionality
enabledActions: ['copy']
// Copy and view only (no AI tools)
enabledActions: ['copy', 'view']
// All actions including AI tools (default)
enabledActions: ['copy', 'view', 'chatgpt', 'claude']You can customize the appearance of the copy page button by passing a customStyles option:
module.exports = {
  plugins: [
    [
      "docusaurus-plugin-copy-page-button",
      {
        customStyles: {
          button: {
            className: "my-custom-button",
            style: {
              backgroundColor: "#4CAF50",
              color: "white",
              borderRadius: "8px",
            },
          },
          dropdown: {
            className: "my-custom-dropdown",
            style: {
              backgroundColor: "#f8f9fa",
              border: "2px solid #4CAF50",
            },
          },
          dropdownItem: {
            style: {
              padding: "12px 20px",
              fontSize: "16px",
            },
          },
          container: {
            className: "my-button-container",
          },
        },
      },
    ],
  ],
};- button- The main copy page button (positioning styles like- position,- top,- leftare automatically applied to the container)
- dropdown- The dropdown menu that appears when clicking the button
- dropdownItem- Individual items in the dropdown menu
- container- The wrapper container around the button
Each target accepts:
- className- CSS class name(s) to add to the element
- style- Inline styles object (React style format)
Custom styles are merged with the default styles, so you only need to specify what you want to change.
module.exports = {
  plugins: [
    [
      "docusaurus-plugin-copy-page-button",
      {
        customStyles: {
          button: {
            style: {
              position: "fixed",
              top: "100px",
              left: "100px",
              zIndex: 1000,
            },
          },
        },
      },
    ],
  ],
};Note: Positioning styles (position, top, right, bottom, left, zIndex, transform) specified in the button configuration are automatically applied to the container element for proper positioning control.
module.exports = {
  plugins: [
    [
      "docusaurus-plugin-copy-page-button",
      {
        customStyles: {
          button: {
            style: {
              backgroundColor: "transparent",
              border: "2px solid #007acc",
              color: "#007acc",
              borderRadius: "12px",
              fontWeight: "bold",
            },
          },
        },
      },
    ],
  ],
};To test this plugin locally during development:
git clone https://github.com/portdeveloper/docusaurus-plugin-copy-page-button.git
cd docusaurus-plugin-copy-page-button
npm installnpm linkNavigate to your Docusaurus project and link the local plugin:
cd /path/to/your/docusaurus/project
npm link docusaurus-plugin-copy-page-buttonAdd the plugin to your config:
module.exports = {
  plugins: ["docusaurus-plugin-copy-page-button"],
};npm startThe locally linked plugin will now be active in your Docusaurus site. Any changes you make to the plugin source will require restarting the Docusaurus development server.
The plugin intelligently extracts page content by:
- Smart Content Selection: Automatically identifies the main documentation content area
- Clean Extraction: Removes navigation, sidebars, headers, footers, and UI elements
- Markdown Conversion: Converts HTML to properly formatted markdown with preserved structure
- AI-Optimized Format: Includes page title, URL, and clean content perfect for AI tool input
- AI-Assisted Development: Quickly share documentation context with ChatGPT or Claude for coding help
- Code Reviews: Extract relevant documentation for code review discussions
- Content Analysis: Analyze documentation structure and content for improvements
- Knowledge Sharing: Easily share specific documentation sections with team members
- Documentation Migration: Extract content for migrating to other documentation platforms
Docusaurus plugin, copy page button, extract documentation, markdown conversion, AI tools integration, ChatGPT documentation, Claude AI, content extraction, developer tools, documentation productivity, React plugin, JavaScript documentation tools.
Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.
- π Report Issues
- π‘ Request Features
- π Documentation
My telegram username is portdev, feel free to dm me whenever (and bug me if I don't reply)
MIT Β© portdeveloper