Claude Code Plugins

Community-maintained marketplace

Feedback

llms-txt-manager

@ddttom/allaboutv2
0
0

Comprehensive system for managing llms.txt and my-blog.json files across the project. Handles creation, updating, and synchronization of AI-readable content catalogs. Automatically detects when working with llms.txt files, my-blog.json files, or updating blog content. Includes utilities for fetching latest content from query-index.json and organizing by last modified dates. Keywords include llms.txt, my-blog.json, blog catalog, content index, query-index.json, AI content discovery, update llms, update blog, content synchronization.

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name llms-txt-manager
description Comprehensive system for managing llms.txt and my-blog.json files across the project. Handles creation, updating, and synchronization of AI-readable content catalogs. Automatically detects when working with llms.txt files, my-blog.json files, or updating blog content. Includes utilities for fetching latest content from query-index.json and organizing by last modified dates. Keywords include llms.txt, my-blog.json, blog catalog, content index, query-index.json, AI content discovery, update llms, update blog, content synchronization.

llms.txt Manager Skill

Purpose

Manage llms.txt and my-blog.json files across the project, ensuring AI systems have comprehensive, up-to-date content catalogs. Automates synchronization between blog content (query-index.json) and llms.txt files.

When to Use

This skill activates when:

  • Creating or editing llms.txt files
  • Creating or editing my-blog.json files
  • User mentions updating blog catalogs
  • User wants to synchronize content indexes
  • Working with query-index.json data
  • Creating folder-specific content indexes

Core Concepts

File Structure

llms.txt - AI-readable content catalog

  • Location: Root or folder-specific (e.g., blogs/ddt/integrations/llms.txt)
  • Purpose: Comprehensive list of content for AI systems
  • Format: Markdown with metadata and categorized links
  • Source: URLs from my-blog.json, text/descriptions from existing llms.txt

my-blog.json - Structured blog data

  • Location: Same directory as llms.txt
  • Purpose: Machine-readable catalog of blog posts
  • Format: JSON with categories, posts, metadata
  • Source: query-index.json filtered by folder context

query-index.json - Master content index

  • Location: https://allabout.network/query-index.json
  • Purpose: Single source of truth for all site content
  • Contains: All pages with URLs, titles, descriptions, lastModified dates
  • Updated: Automatically by the site

Folder Context

When llms.txt is in a subfolder (e.g., blogs/ddt/integrations/):

  • The final folder name indicates intent/scope
  • my-blog.json should exist in same folder
  • Content should be filtered to relevant posts only
  • Example: /integrations/ folder focuses on EDS integration tutorials

Update Logic

lastModified Date Comparison:

  1. Check lastModified date in llms.txt metadata
  2. Fetch query-index.json
  3. Filter entries with lastModified > llms.txt date
  4. Add only new/updated content

File Templates

llms.txt Template

# [Project/Section Title]

[Brief description of what this content covers]

**Last updated:** [Month Year]
**Authors:** [Author Names]

## [Category Name]

### [Subcategory Name]

- [Title](URL): Description
- [Title](URL): Description

## Version Information

**Version:** [version] (Updated: [date])
**Comprehensive catalog:** [count] posts across [n] categories
**Categories:** [List with counts]

my-blog.json Template

{
  "metadata": {
    "last-updated": "YYYY-MM-DD",
    "scope": "folder-name-or-site-wide"
  },
  "mostVisited": [
    {
      "title": "Popular Post Title",
      "url": "/path/to/post",
      "description": "Post description"
    }
  ],
  "categoryMap": [
    {
      "id": "category-id",
      "name": "Display Name",
      "count": 0,
      "description": "Category description"
    }
  ],
  "categories": [
    {
      "id": "category-id",
      "name": "Display Name",
      "posts": [
        {
          "title": "Post Title",
          "url": "/path/to/post",
          "description": "Post description",
          "lastModified": "YYYY-MM-DD"
        }
      ]
    }
  ]
}

IMPORTANT: Do NOT include a latestPosts array in my-blog.json files. The view-myblog block automatically generates it from the 3 most recent posts. Including it manually requires maintenance and defeats the purpose of auto-generation.

Key Concepts

Workflows

Creating New llms.txt

Automatic Creation: The sync script now automatically creates llms.txt files if they don't exist:

  1. Detects Missing Files

    • Finds all my-blog.json files
    • Checks for paired llms.txt in same directory
    • Creates missing files automatically
  2. Builds Complete Structure

    • Creates header with title, description, authors
    • Builds organized sections from my-blog.json categories
    • Uses folder name for context (e.g., "ai" → "Ai Resources")
  3. Populates Content

    • Fetches from query-index.json
    • Filters by folder context if applicable
    • Formats posts with titles, URLs, descriptions
    • Updates metadata to current date

Manual Creation: If you need to manually create one:

  1. Determine Scope

    • Root llms.txt: Site-wide catalog
    • Folder llms.txt: Section-specific (use folder name for context)
  2. Check for my-blog.json

    • Look in same directory as llms.txt
    • If missing, create one first
    • Filter query-index.json by folder path if folder-specific
  3. Structure Content

    • Use folder name to determine focus (e.g., /integrations/ = EDS integrations)
    • Organize with subsections for better scannability
    • Include all relevant posts from my-blog.json
    • Add descriptive text for context
  4. Add Metadata

    • Version number
    • Last updated date
    • Category counts
    • Access guidelines (optional)

Updating Existing llms.txt

  1. Read Current File

    • Extract last-updated date from metadata
    • Note current structure and organization
  2. Fetch New Content

    • Load query-index.json
    • Filter by lastModified > current date
    • Filter by folder context if applicable
  3. Merge New Posts

    • Add new posts to organized sections
    • Update version number and date
    • Maintain text patterns and formatting
  4. Update my-blog.json

    • Add new posts to appropriate categories
    • Update metadata.last-updated
    • Increment category counts

Creating my-blog.json from query-index.json

Automatic Creation: The sync script now automatically creates my-blog.json files if they don't exist:

  1. Detects Missing Files

    • Finds all llms.txt files
    • Checks for paired my-blog.json in same directory
    • Creates missing files automatically
  2. Initializes Structure

    • Creates empty categoryMap with all 6 standard categories
    • Sets metadata with scope (folder name or 'site-wide')
    • Sets last-updated to 2020-01-01 (extreme past, will populate on next update)
  3. Populates Content

    • Fetches from query-index.json
    • Filters by folder context if applicable
    • Categorizes posts automatically
    • Updates metadata to current date

Manual Creation: If you need to manually create one:

  1. Fetch Data

    curl https://allabout.network/query-index.json
    
  2. Filter by Context

    • Root my-blog.json: All content
    • Folder my-blog.json: Filter by path prefix
  3. Categorize Posts

    • Group by topic/category
    • Count posts per category
    • Create categoryMap
  4. Structure Output

    • metadata section with date and scope
    • categoryMap with counts
    • categories with full post arrays

Command Usage

/update-llms

Finds all llms.txt files in the project and updates them with new content:

/update-llms

Or use the script directly:

node scripts/sync-blog-content.js --target=llms

Process:

  1. Find all existing llms.txt files: **/*llms.txt
  2. Find all my-blog.json files without paired llms.txt
  3. For each file (existing or new):
    • If new: Create complete structure from my-blog.json
    • If existing: Read last-updated date from metadata
    • Determine folder context (site-wide or folder-specific)
    • Fetch query-index.json from production
    • Filter by context (folder path matching)
    • Filter new posts (lastModified > last-updated)
    • Add new posts to organized sections (if any)
    • Update version date and metadata

/update-my-blog

Finds all my-blog.json files and updates them with latest content:

/update-my-blog

Process:

  1. Find all my-blog.json files: **/*my-blog.json
  2. For each file:
    • Read current content and last-updated
    • Determine folder context
    • Fetch query-index.json
    • Filter by context and date
    • Update categories and counts
    • Update metadata

Best Practices

Content Organization

Use subsections - Break large categories into logical groups ✅ Consistent formatting - Use same pattern throughout ✅ Rich descriptions - Include full descriptions from source ✅ Clear hierarchy - Main section → Subsection → Posts ✅ Cross-references - Link between related llms.txt files

URL Management

Source of truth: my-blog.json for URLs ✅ Text source: Existing llms.txt for descriptions/formatting ✅ New content: query-index.json for latest posts ✅ Relative URLs: Use relative paths in my-blog.json ✅ Absolute URLs: Use full URLs in llms.txt

Date Handling

ISO format: YYYY-MM-DD for dates ✅ Comparison: Filter by lastModified > last-updated ✅ Display format: "Month Year" in llms.txt header ✅ Update always: Change date when content changes

Folder Context

Use folder name: Final path segment indicates scope ✅ Filter appropriately: Only relevant content for folder llms.txt ✅ Paired files: Keep my-blog.json with llms.txt ✅ Independent updates: Each folder maintains own files

Examples

Example 1: Root llms.txt

Location: /llms.txt Scope: Entire site my-blog.json: /my-blog.json (all content) Categories: All site categories

Example 2: Integrations llms.txt

Location: /blogs/ddt/integrations/llms.txt Scope: EDS integration tutorials only my-blog.json: /blogs/ddt/integrations/my-blog.json Categories: Filtered to integration-related posts

Example 3: AI Topics llms.txt

Location: /blogs/ddt/ai/llms.txt Scope: AI/LLM content only my-blog.json: /blogs/ddt/ai/my-blog.json Categories: Filtered to AI-related posts

Troubleshooting

my-blog.json Missing

Solution: Create it from query-index.json filtered by folder context

Dates Not Comparing

Solution: Ensure ISO format (YYYY-MM-DD) and proper parsing

Wrong Content Scope

Solution: Check folder context and filter query-index.json properly

Duplicate Entries Within Categories

Solution: Deduplicate by URL before adding to categories

Related Files

  • .claude/commands/update-llms.md - Slash command for updating llms.txt
  • .claude/commands/update-my-blog.md - Slash command for updating my-blog.json
  • scripts/sync-blog-content.js - Utility script for bulk updates (no dependencies)

Version

Skill Version: 1.0 Last Updated: November 2025 Line Count: < 500 ✅