Skip to content

v7.3.4 — SEO & AI (AI traffic, crawler policy, Markdown copies, feeds, IndexNow)

Latest

Choose a tag to compare

@jonradoff jonradoff released this 05 Oct 13:25
· 22 commits to main since this release

LightCMS v7.3 adds SEO and AI features: AI traffic analytics, controls for which AI crawlers may use your site, Markdown copies of every page, richer structured data, RSS/Atom feeds, and a per-page "hide from search & AI" option. These come on top of v7.2's IndexNow support and CMS Agent digests. The MCP server now has 128 tools.

MCP bundles (MCPB) for Claude Desktop and other MCPB clients are attached for macOS and Linux (arm64/amd64). Point LIGHTCMS_URL at your instance and provide an API key from /cm → API Keys.

Full history: CHANGELOG.md · Project page: https://metavert.io/lightcms

[7.3.4] - 2026-10-05

Fixed

  • Deleting or unpublishing a legacy page with an empty full_path no longer deletes the homepage's static file. The empty path was being treated as /.

[7.3.3] - 2026-10-05

Fixed

  • sitemap.xml now regenerates when it is more than 10 minutes old. Previously only admin-UI edits refreshed it, so pages created, changed or hidden through the API or MCP could be missing from it or listed after removal.

[7.3.2] - 2026-10-05

Fixed

  • Pages created already-published (through the API, MCP, bulk create or import) now get a published_at date. Before this, only the explicit publish action set it, so such pages had no datePublished in structured data and sorted last in feeds. Unpublished drafts are unaffected.

Added

  • One-time backfill for pages affected by the bug above: POST /api/v1/maintenance/backfill-published-dates (with ?dry_run=true to preview), or the backfill_published_dates MCP tool. It sets each affected page's published_at to its created_at. It changes metadata only (no re-render, no new versions) and records an audit-log entry. 128 MCP tools total.

[7.3.1] - 2026-10-02

Fixed

  • Markdown copies: whitespace between inline siblings (e.g. two adjacent links) is kept, so links no longer run together.

[7.3.0] - 2026-10-02

Added — SEO & AI (generative engine optimization)

Every feature works on any LightCMS install. Existing sites behave as before until they change a setting, except that Markdown copies (below) are on by default.

  • AI traffic analytics (Analytics → 🤖 AI traffic, /cm/analytics/ai):
    • Known crawlers are identified by operator and purpose: AI training (GPTBot, ClaudeBot, CCBot, …), AI search (OAI-SearchBot, Claude-SearchBot, PerplexityBot, …), user-initiated fetches (ChatGPT-User, Claude-User, Perplexity-User, …) and classic search engines.
    • Hits are counted per page, including /llms.txt, /llms-full.txt, /robots.txt, /sitemap.xml, the Markdown copies and the feeds.
    • Visits referred by AI assistants (ChatGPT, Perplexity, Claude, Gemini, Copilot, …) are recognized from the referrer or from the utm_source tag assistants add when they strip the referrer (e.g. ?utm_source=chatgpt.com).
    • The report shows a daily chart by purpose, the pages AI reads most, and where AI referrals land.
    • Also available as GET /api/v1/analytics/ai and the get_ai_traffic MCP tool, and as an "AI visibility" summary in CMS Agent digests.
    • Crawlers such as Perplexity-User whose user agent doesn't say "bot" are now counted as bots.
  • AI crawler policy (Tools → 🧭 SEO & AI, /cm/tools/seo):
    • Allow or block AI training, AI search and user-initiated fetches separately, with per-crawler overrides; the result is rendered into /robots.txt.
    • Optional Content-Signal line (search / ai-input / ai-train), plus free-form extra robots.txt lines.
    • Classic search engines are only affected by explicit overrides.
  • Markdown copies of pages at /<page>.md (homepage: /index.md):
    • The page body converted to clean Markdown, with title, description, source URL and dates. The converter uses only golang.org/x/net/html, already a dependency.
    • Advertised with <link rel="alternate" type="text/markdown"> on every page and linked from llms.txt, per the llms.txt convention.
    • Copies are served with X-Robots-Tag: noindex and a canonical Link header, so they never compete with the HTML page in search.
    • A real page whose path ends in .md always takes precedence. Can be turned off.
  • Richer structured data:
    • Default author (Person or Organization, with URL and sameAs profiles) and per-page author override. User account names are never published automatically.
    • Publisher Organization with logo and sameAs links.
    • BreadcrumbList for pages in folders.
    • FAQPage, built only from explicit FAQ markup: <details><summary>…?</summary> pairs, or an "FAQ" / "Frequently Asked Questions" section whose question headings end in "?".
    • WebSite + Organization on the homepage.
    • Types a page already declares in its own JSON-LD are not duplicated. Raw-HTML pages now get structured data too.
  • Accurate modified dates: a new content_modified_at is stamped only when a page's rendered HTML actually changes. Site-wide re-renders (theme, template, snippet changes) don't count. It drives JSON-LD dateModified, sitemap lastmod, feeds and Markdown copies; older pages fall back to updated_at.
  • RSS and Atom feeds at /feed.xml and /atom.xml, plus /<collection>/feed.xml for each collection:
    • Full content with absolute links.
    • Default selection is Blog Post and Press Release templates plus the "blog" category; configurable, or every page.
    • Discoverable from every page's <head>, robots.txt and llms.txt.
  • Per-page "Hide from search engines & AI": adds noindex (meta tag and X-Robots-Tag) and leaves the page out of the sitemap, llms.txt, feeds, Markdown copies and IndexNow. Available in the editor, REST API (noindex, author_name, author_url) and MCP content tools.
  • SEO & AI settings API and MCP: GET/PUT /api/v1/seo (partial updates); get_seo_settings, update_seo_settings, get_ai_traffic (127 MCP tools total).

Fixed

  • Unpublishing, moving or deleting a page in the admin editor now notifies IndexNow. The editor writes to the database directly and previously skipped the transition notifications that API and MCP edits send.
  • Page canonical links are absolute URLs.
  • Fork diffs show changes to the new noindex and author fields.