A complete blog for Next.js, installed like a component. Built to be read and cited by AI search engines.
A complete, production-ready blog for Next.js 16 that AI search engines can actually read. Fully prerendered routes, a typed schema.org graph, sitemap and RSS and IndexNow, Open Graph images, answer capsules and question headings for retrieval, and an editorial policy page. Inherits your shadcn theme rather than imposing one.
Seven skills that take a blog from install to published: finish the setup for your site, research what to write with real search and AI citation data, plan the topic clusters, write posts to the GEO playbook, refresh them without falsifying dateModified, audit before publish, and publish with the IndexNow response code actually read. Installs into your project's .claude/skills directory, so any agent working in this repository picks them up. Also available as a Claude Code plugin and through npx skills add.
The library layer every other AgentBlog item builds on: the typed config, the content source facade, shared metadata defaults that survive Next.js's shallow metadata merge, the AI referrer classifier, and the build-time preflight that warns when next.config is missing the wiring a registry cannot write.
Typed schema.org @graph builders for BlogPosting, WebPage, BreadcrumbList, Person, Organization, WebSite, ImageObject, and FAQPage. Cross-references are @id stubs from one helper so the graph cannot drift apart, and there is a single serialization point that escapes the output.
The component map an AgentBlog post renders through: headings with stable anchors, real tables, server-highlighted code blocks, callouts, statistics with a required source, pull quotes, key takeaways, and an FAQ built from details elements so the answers are in the raw HTML rather than mounted by JavaScript.
Posts as MDX files in your repository, which is the storage option a coding agent can genuinely maintain. Includes the content source adapter, the single MDX compilation point, two local remark plugins, and two seed posts written to the GEO playbook so they double as the format specification.
A publish endpoint that revalidates the metadata routes as well as the page routes, because sitemap.xml and feed.xml are cached route handlers that a naive webhook leaves stale, and then submits the URL to IndexNow with the response codes surfaced rather than swallowed.
The components a blog post is made of: post cards, byline with rel=author and machine-readable dates, answer capsule, server-rendered table of contents, author bio, related posts, breadcrumbs, category pills, and real anchor-based pagination. Styled entirely with your shadcn theme tokens, so it inherits your design system rather than replacing it.
A reading-optimised base for a standalone blog site: neutral base colour, a comfortable measure, and generous line height. Intended for a fresh scaffold. `agentblog create` does not apply it yet, so add it by hand on a new project. Never install it into an app that already has a design system: a base carries style, icon library, and base colour, and applying one replaces what is already there.
Fully prerendered /blog index, post, category, tag, and author routes. generateStaticParams returns every slug, there is no client component in the article render path, and every segment spreads shared metadata defaults so og:site_name and max-snippet survive Next.js's shallow merge.
sitemap.xml built from real content dates rather than the build clock, an environment-guarded robots.txt that declares your AI access preferences, an RSS 2.0 feed, and a 404 that returns a real 404.
An editorial policy page with a real review and corrections process. This is the Trust surface a search quality rater looks for and almost no blog has one, which makes it unusually cheap to differentiate on.
The full blog, minus the two items a reader never sees: no /api/publish route and no secrets in .env, and nothing written into .claude/. Everything else matches @agentblog/blog. It cannot be smaller than that: the routes share one sitemap and one layout, app/sitemap.ts emits category, author, tag, and /editorial-policy URLs, and the blog layout links /editorial-policy and /feed.xml, so dropping those routes would publish a sitemap of 404s rather than a smaller blog. Install this when you want the blog without a publish endpoint to secure.