Open-source npm packages

Build websites AI can understand.

Generate llms.txt, JSON-LD, markdown mirrors, crawler rules, and validation at build time for Next.js, Vite, Astro, Nuxt, or any static site.

Build with AgentMarkup

Install your npm package.

Add machine-readable output at build time, without runtime JavaScript.

pnpm add -D @agentmarkup/next
View @agentmarkup/next on npm

Check your website

Scan what AI can access.

Whatever page you enter, we normalize it to the site root and start the scan there.

Free, no account required. Open the checker without a URL, or run a security scan.

One toolkit, every build

Choose only the package you need.

The framework integrations share the same configuration and output. The CLI covers any static build, while Audit checks what AI crawlers receive after deployment.

Technical coverage

The signals AI systems actually use.

AgentMarkup creates and validates the public files, structured data, discovery links, and access rules that help machines interpret a website reliably.

llms.txt discovery

Generate llms.txt and optional llms-full.txt, then publish the homepage discovery link.

Read the llms.txt guide

JSON-LD structured data

Add XSS-safe schema.org markup with built-in presets or your own custom schemas.

Read the JSON-LD guide

AI crawler access

Manage GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, and existing robots.txt rules.

Read the crawler guide

Markdown mirrors

Publish clean .md companions with canonical relationships when raw HTML is not the clearest machine-readable source.

Understand markdown mirrors

Usage signals

Publish Content-Signal headers and an optional A2A Agent Card without changing the runtime application.

Explore the learning center

Build validation

Audit the final public output locally, in CI, or through the hosted checker before it reaches production.

Read the audit guide

Useful whether you sell, publish, or build a brand.

Questions, answered

Frequently Asked Questions

Read clear answers about the checks, setup, and what AgentMarkup changes on your website.

What does agentmarkup actually do?

It checks whether AI systems can find, understand, and access your website, then gives you clear next steps. Developers can also use AgentMarkup packages to improve machine-readable website output.

Does this improve my search rankings?

Structured data can support richer search results, but AgentMarkup does not promise rankings or traffic. It helps make your website easier for people, search engines, and AI systems to read.

Is llms.txt a standard?

It is a proposal from llmstxt.org, not an official standard. The website checks and structured-data features remain useful without it.

Is the config the same for Next.js, Vite, Astro, and Nuxt?

The shared AgentMarkupConfig object is the same across all adapters. The integration point changes: Next.js uses withAgentmarkup, Vite uses plugins, Astro uses integrations, and Nuxt uses the agentmarkup key. The same config also drives the CLI.

What is @agentmarkup/core for?

The core package contains the generators and validators without any framework binding. Use it for a custom build script, prerender pipeline, or a route that needs direct integration instead of an adapter-owned build step.

Does @agentmarkup/next handle fully dynamic SSR routes automatically?

No. The Next adapter is strongest where Next emits build-time HTML. For fully dynamic SSR routes with no build-time HTML file, use the re-exported @agentmarkup/core helpers directly in the route.

Does it add any runtime JavaScript?

No browser runtime is added by AgentMarkup. The adapters run during build or post-build processing and output static files or server header rules.

Do I need markdown mirrors on every page?

No. They are most useful when raw HTML is thin, noisy, or heavily client-rendered. If pages already serve substantial HTML, keep HTML as the primary fetch target.

Can I use my own JSON-LD schemas instead of presets?

Yes. Pass any object with an @type field. AgentMarkup adds the @context, escapes the output for XSS safety, and validates that the @type is present.

Will this break my existing robots.txt?

No. The plugin updates only its marked section and leaves your existing rules intact.