The open-source audit of what AI assistants say about your brand, with the receipts.
Docs · Quickstart · Sample report · Live demo
Saylent asks ChatGPT, Claude, Gemini and Perplexity the questions your buyers ask, records every answer and every page it cites, and turns what it finds into the next thing to change on your site. Receipts, not scores: every count opens the answer it came from. It runs on your own API keys, on your machine or your own servers; nothing goes through us and there is no telemetry.
See a full report first. No key, no network, no cost:
npx saylent demo
Open the full sample report: a real run against Kestrel Uptime, a fictional company we audit. (source: examples/kestrel) |
Open the live demo: the same run inside the app, with history, a fix tracker and share links. Nothing saves, no account. |
Then price a real audit of your own site before anything is sent, and run it:
npx saylent audit your-domain.com --dry-run
npx saylent audit your-domain.comOne OPENAI_API_KEY or ANTHROPIC_API_KEY runs it; both turn on the
cross-family judge, where one provider family judges the other's answers.
GEMINI_API_KEY and PERPLEXITY_API_KEY add those engines, and
SERPAPI_API_KEY adds the opt-in answer surfaces. Export
them, put them in a .env, or run saylent keys set openai. With all four
engines a smoke run costs about $0.80 to $1.20 of your own credits and a
full run about $5.10 to $7.10; our two recorded smoke runs cost $0.93 and
$1.11. --dry-run is free and --max-usd 1 refuses to start above a cap.
Node 22 or newer, on macOS, Linux or Windows.
Which tool? promptbeacon is for developers and open-source maintainers: does AI recommend your library or dev product — a number in CI and a README badge. Saylent is for brand and website teams: an audit of what AI assistants say about your site, with the answers and cited pages as receipts, plus fixes for your site.
| What it does | Start | |
|---|---|---|
| Audit, with receipts | Recommended, mentioned or absent per question and engine, who is named instead, every cited page, the web searches the engine ran where it reports them, and a fix plan drafted from your own evidence | saylent audit · Quickstart |
| Answer surfaces | Google AI Overviews, Google AI Mode and Microsoft Copilot, judged like any engine, through your own SerpApi key | --surfaces · Surfaces |
| Sources & opportunities | Which domains the answers cite, who they name, and the off-site pages where rivals are cited and you are not | saylent sources · Sources |
| AI crawlers | Which AI bots actually visit, from your own access log: what they fetch and what they are refused, and the visitors AI assistants sent | saylent crawlers · AI crawlers |
| Site check | What robots.txt says per AI bot and what a live fetch as each one gets, $0 and keyless, also as a GitHub Action | saylent gate-check · Site check |
| Real questions | Your Search Console queries, a CSV or a list, turned into the questions an audit asks | saylent questions import · Import |
| Verify and alerts | Re-ask the same frozen questions after a fix; Slack, email or a signed webhook when answers move | saylent verify --notify · Alerts |
| Fixes to a pull request | robots.txt and JSON-LD fixes written to a branch of your site repo with the receipts as the PR description; never pushed for you | saylent fixes apply · CLI |
| Export and API | Answers, citations, the engines' searches, sources, share of voice, fixes, crawler counts and AI referral visits as versioned CSV or JSON; a read-only API in the app | saylent export · Export |
| Agent-native | An MCP server with ten tools and a Claude Code plugin that walks the whole loop, asking before it spends | saylent mcp · MCP |
| The app | Brands, history, a fix tracker, share links and an operator console, on your own Supabase | Deploy the app |
Why this exists.
- I cannot see what ChatGPT, Claude, Gemini and Perplexity tell my buyers about us.
- When a tool tells me I am invisible, I want the answer it read that from.
- I do not want a score. I want the next thing to change on my site.
- My API keys and my data should stay on my machine.
- I want the first result in about five minutes, without an account or a sales call.
Every run writes report.html (self-contained, safe to email), report.md
and run.json, the lossless bundle every other command reads.
Verdict. What the engines actually recommend, as a count over the questions that were scored, never a single invented number. |
Receipt. The exact answer, the engine, the date, and the pages that answer was built from. |
Gate. Which AI bots your site lets in: what robots.txt says per bot, and what actually happens when we fetch a page as one. |
Fix. Drafted from your own evidence and ready to paste: here, the Organization, Product and FAQPage JSON-LD the crawl found missing. |
/plugin marketplace add yotambraun/saylent
/plugin install saylent@saylent
/saylent:ai-visibility-audit example.com
The Claude Code plugin adds the MCP server and six skills. The end-to-end one
prices the audit for free, asks, runs it, reads the sources and the
opportunities, lists the drafted fixes with their evidence and leaves you a
verify plan. Saylent measures and shows the receipts; your agent does the
reasoning. Any other MCP client (Claude Desktop, Cursor, VS Code, Windsurf,
Codex CLI, Gemini CLI) runs npx -y saylent mcp:
setup for each. Keys are never pasted into a
chat: run npx saylent keys set openai in your own terminal once.
The same engine with a memory: history across runs, a fix tracker, rival comparison, scheduled verifies, alerts, Export, a read-only API, and share links for someone with no account. One deployment holds as many accounts as you like, isolated by row-level security, with one operator who owns the keys, the spend cap and the kill switch. Your own Supabase project, on any Node host, Docker or Vercel. The app, screen by screen · the live read-only demo.
We ask real buyer questions to real AI engines through their official APIs and record every answer verbatim. Presence is a deterministic alias match; a judge model from the other provider family decides the rest, quoting its reasoning first. We fetch the pages an answer cites and check them for the same presence, word match rather than entailment. We report a confidence band, never a single fake-precise number. How it works · methodology · architecture · what it costs · what gets sent to providers
- One run is a snapshot of the official API surface on one date. Consumer apps can answer differently. Google AI Overviews, Google AI Mode and Microsoft Copilot are measured only when you add them, as your SerpApi key reads them.
- Share of voice counts mentions in the answers we drew, not market share, and cited-page checks are word presence, not entailment.
- No traffic estimate, no revenue effect, no ranking claim, and no claim that a fix caused a movement. Movement after a fix is correlation.
Compared with hosted tools: what they do that this does not, and the other way round.
npm install && npm test runs the whole suite with no keys and no database.
An answer engine is one file implementing Ask; a site check is one registry
entry. Issues are triaged weekly by one maintainer; there is no support SLA.
Contributing · CONTRIBUTING.md ·
extending it · CHANGELOG.md ·
CODE_OF_CONDUCT.md. Security issues:
SECURITY.md. Questions and ideas:
Discussions. Licensed
under Apache-2.0.
saylent-kestrel.vercel.app so the crawl, the robots.txt read and the live bot probes are genuine. Every other company and host in the sample is pseudonymized to a .example name. It is a brand nobody has heard of yet, so every count in it is zero, and that is the finding.
Read the whole run in examples/kestrel, or render it offline for $0 with npx saylent demo.