{"slug": "how-should-ai-agents-declare-what-a-site-is-about-to-other-ai-engines", "title": "How should AI agents declare what a site is about to other AI engines?", "summary": "The SEO.md CLI tool has been released as an open standard for AI Engine Optimization (AEO), enabling technical founders to scaffold, validate, analyze, and sync structured site descriptions for AI engines. The tool allows developers to declare site identity, intent queries, and pages in a version-controlled format, aiming to improve citation rates from AI systems.", "body_md": "The official CLI for the [SEO.md](https://seomd.dev) open standard — AEO (AI Engine Optimization) infrastructure for technical founders.\n\nUse it to scaffold, validate, analyze, and sync `SEO.md`\n\nfiles directly from your repo.\n\n[Why SEO.md](#why-seomd)[Install](#install)[Quick Start](#quick-start)[Configuration](#configuration)[Commands](#commands)[Local Development](#local-development)[Testing](#testing)[Release Notes (Contributor Tagging)](#release-notes-contributor-tagging)[Security](#security)[Specification Reference](#specification-reference)[License](#license)\n\nSEO.md is a structured, version-controlled specification for describing your site, intent queries, and pages so AI engines can cite you more often.\n\n- Declare what matters (site, identity, keywords, intent, pages)\n- Run audits via your connected platform\n- Write back\n`_analysis`\n\nblocks and per-page playbooks into your repo\n\n```\nnpm install -g seomd-cli\n```\n\nOr run without installing (zero-install):\n\n```\nnpx seomd-cli init\n```\n\nVerify:\n\n```\nseomd --help\n```\n\nRun in the root of your project:\n\n```\nseomd init\n```\n\nOr non-interactively with flags:\n\n```\nseomd init -y --type local\n# or\nseomd init --brand \"Acme\" --domain acme.com --primary-keyword \"local seo\"\nseomd validate\nseomd analyze\nseomd sync\nseomd status\nseomd status --json\n```\n\nCopy `.env.example`\n\nfrom your platform provider docs, or create one with the vars you need:\n\nRequired for live audits:\n\n```\nSEOMD_API_URL=\nSEOMD_API_KEY=your_key_here\n```\n\nOptional:\n\n```\nSEOMD_PAYMENT_TOKEN= # x402 pay-per-scan token\nSEOMD_DOMAIN= # override domain header\n```\n\nIf you don't have a platform key yet,\n\n`seomd init`\n\nstill works without`.env`\n\n.\n\nScaffolds `SEO.md`\n\n, `SEO.REVERSE.md`\n\n, and the `.seo/`\n\nintelligence directory.\n\n**Usage:**\n\n```\nseomd init                              # interactive 5-question flow\nseomd init -y --type local              # skip prompts, use defaults\nseomd init --brand \"Acme\" --domain acme.com  # non-interactive with partial flags\nseomd init --type saas --brand \"MyApp\" --domain myapp.com --primary-keyword \"billing automation\" --output ./new-project\n```\n\n**Options:**\n\n| Flag | Description |\n|---|---|\n`-y, --yes` |\nskip prompts, use defaults |\n`--type <type>` |\nsite type: saas, ecommerce, local, blog, marketplace |\n`--brand <name>` |\nbrand name |\n`--domain <domain>` |\nprimary domain |\n`--primary-keyword <keyword>` |\nprimary keyword |\n`--competitors <list>` |\ncomma-separated competitor list |\n`--output <dir>` |\nscaffold into a new (empty) directory instead of cwd |\n\n**Behavior:**\n\n- Interactive flow by default (5 questions)\n- Non-interactive when\n`-y`\n\nis set**OR** any config flag (`--brand`\n\n,`--domain`\n\n,`--primary-keyword`\n\n,`--competitors`\n\n) is provided `--type`\n\nalone pre-selects site type in the interactive flow`--output`\n\nwrites all files to the target directory (must be empty or non-existent)\n\nValidates your `SEO.md`\n\nagainst the spec requirements.\n\nShows current citation rates and gap scores from `_analysis`\n\n.\n\n`--json`\n\noutputs machine-readable JSON for scripts/CI\n\nRuns an AI search audit via your connected platform and writes results back into:\n\n`SEO.md`\n\n(`_analysis`\n\nblocks)`SEO.REVERSE.md`\n\n(generated reverse view)`.seo/pages/*.md`\n\n(per-page playbooks when available)\n\nPulls cached/latest platform intelligence and writes it back to the same files as `analyze`\n\n.\n\n`--dry-run`\n\nprints a preview and does not modify files\n\n`seomd-cli`\n\nships with type-specific templates under `src/templates/`\n\n. `seomd init --type <type>`\n\nuses the matching template automatically.\n\n| Type | Template dir | Best for |\n|---|---|---|\n`saas` |\n`src/templates/saas/` |\nSoftware products, B2B tools, web apps |\n`blog` |\n`src/templates/blog/` |\nContent sites, newsletters, personal brands |\n`ecommerce` |\n`src/templates/ecommerce/` |\nOnline stores, DTC brands, product catalogs |\n`local` |\n`src/templates/local/` |\nService-area businesses, locations pages |\n`marketplace` |\n`src/templates/marketplace/` |\nTwo-sided platforms, directories |\n\nEach template contains:\n\n`SEO.md`\n\n— pre-filled with type-specific intent queries, page structures, and negative keywords`SEO.REVERSE.md`\n\n— reverse-engineer output scaffold with placeholders for competitor analysis\n\nWant to customize a template? Copy the relevant folder, edit the placeholders (`{{brand}}`\n\n, `{{domain}}`\n\n, etc.), and use `--type`\n\nwith your custom scaffold.\n\nPrefer the local entrypoint while developing:\n\n```\nnode ./bin/seomd.js --help\nnode ./bin/seomd.js init\nnode ./bin/seomd.js validate\nnode ./bin/seomd.js status --json\nnpm test\n```\n\nTo generate a contributor section for a release (commit-based attribution), maintain mappings in `.github/contributors.yml`\n\nand generate markdown from a tag range:\n\n```\nnpm run release:contributors -- --from v1.0.2 --to v1.0.3\n```\n\nTo write output to a file:\n\n```\nnpm run release:contributors -- --from v1.0.2 --to v1.0.3 --out notes/v1.0.3-contributors.md\n```\n\nTo generate a full release note (changes + contributors) for a tag:\n\n```\nnpm run release:notes -- --tag v1.0.3\n```\n\nAutomation: the repository includes a GitHub Actions workflow that runs on tag push (`v*`\n\n) and creates/updates the GitHub Release using `scripts/release-notes.js`\n\n.\n\nTo enable live intelligence writebacks (using automated platforms like [Foxcite](https://foxcite.com)):\n\n-\nObtain a developer API key from your platform provider.\n\n-\nExport the key as an environment variable:\n\n```\nexport SEOMD_API_KEY=\"your_api_key_here\"\n```\n\n-\nRun\n\n`seomd sync`\n\nor`seomd analyze`\n\n.\n\n*Note: Never commit your API keys or .env files containing keys to version control.*\n\n- Never commit\n`.env`\n\nfiles or API keys - Use\n`.env.example`\n\nas the template for required variables\n\nRead the complete specification and guidelines at [seomd.dev/spec](https://seomd.dev/spec).\n\nMIT License. Developed and maintained by the community.", "url": "https://wpnews.pro/news/how-should-ai-agents-declare-what-a-site-is-about-to-other-ai-engines", "canonical_source": "https://github.com/seomd/cli", "published_at": "2026-06-16 13:07:52+00:00", "updated_at": "2026-06-16 13:19:28.630732+00:00", "lang": "en", "topics": ["ai-tools", "developer-tools", "ai-infrastructure"], "entities": ["SEO.md", "AEO", "CLI"], "alternates": {"html": "https://wpnews.pro/news/how-should-ai-agents-declare-what-a-site-is-about-to-other-ai-engines", "markdown": "https://wpnews.pro/news/how-should-ai-agents-declare-what-a-site-is-about-to-other-ai-engines.md", "text": "https://wpnews.pro/news/how-should-ai-agents-declare-what-a-site-is-about-to-other-ai-engines.txt", "jsonld": "https://wpnews.pro/news/how-should-ai-agents-declare-what-a-site-is-about-to-other-ai-engines.jsonld"}}