// Docs

How to integrate Vizelo and earn AI citations.

A single page of everything you need to set up your domain, ship the right schema, and start measuring share-of-voice across the answer engines.

// Quick start

Three steps. Roughly four minutes.

You don’t need a kickoff call or a Slack channel. The workspace is built so a single founder, marketer, or engineer can stand up a citation baseline before the kettle boils.

1. Connect your domain.

Paste your apex domain into the workspace onboarding (no DNS change, no JavaScript install). Vizelo resolves your brand entity, pulls your sitemap, and starts mapping the pages an AI engine would actually ingest.

2. Paste your competitors.

Three to ten competitor domains is the sweet spot. You can edit the list later. The point is to fix a comparison frame: when the engine answers a buying-intent prompt, who shows up next to you, and who shows up instead of you?

3. Click probe.

One button fires a baseline run across the six engines we monitor — ChatGPT, Perplexity, Google AI Overviews, Bing Copilot, Claude, and Gemini. You get a share-of-voice number, a competitor ranking, and a list of prompts where you’re missing. That’s the working surface for the rest of this guide.

// Schema

Make every page AI-readable.

Structured data is how an engine resolves “who you are” without guessing from prose. Add the five JSON-LD types below to the pages where they fit. Honest disclaimer: schema is necessary but not sufficient — you still need clear entity copy, real authority signals, and an llms.txt to win. Schema just makes sure the engine doesn’t misread you when it’s already inclined to.

Organization

One per site, in the <head> of your homepage. This is the canonical record of your brand entity.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Organization",
  "@id": "https://example.com/#org",
  "name": "Example, Inc.",
  "url": "https://example.com/",
  "logo": "https://example.com/assets/logo.png",
  "sameAs": [
    "https://www.linkedin.com/company/example",
    "https://x.com/example",
    "https://en.wikipedia.org/wiki/Example"
  ]
}
</script>

FAQPage

For any page with a real Q&A block. Engines lift FAQPage answers verbatim into AI Overviews.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "FAQPage",
  "mainEntity": [{
    "@type": "Question",
    "name": "Is your product self-serve?",
    "acceptedAnswer": {
      "@type": "Answer",
      "text": "Yes. Sign up, connect a domain, ship in under five minutes."
    }
  }]
}
</script>

HowTo

For step-by-step instruction pages. Each step gets a position, name, and text.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "HowTo",
  "name": "Install our SDK",
  "totalTime": "PT5M",
  "step": [
    { "@type": "HowToStep", "position": 1, "name": "Install", "text": "npm install @example/sdk" },
    { "@type": "HowToStep", "position": 2, "name": "Configure", "text": "Add your API key to .env" },
    { "@type": "HowToStep", "position": 3, "name": "Ship", "text": "Deploy and verify the health check" }
  ]
}
</script>

Article

For blog posts, guides, and editorial. The speakable property is the lever that makes AI Overviews quote you cleanly.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "How AI engines pick their sources",
  "datePublished": "2026-05-01",
  "dateModified": "2026-05-26",
  "author": { "@type": "Organization", "name": "Example, Inc." },
  "publisher": { "@id": "https://example.com/#org" },
  "speakable": {
    "@type": "SpeakableSpecification",
    "cssSelector": [".lead", "h2", "details > p"]
  }
}
</script>

BreadcrumbList

On every non-home page. Cheap signal, high return — the engine learns your site hierarchy without inferring it.

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "BreadcrumbList",
  "itemListElement": [
    { "@type": "ListItem", "position": 1, "name": "Home", "item": "https://example.com/" },
    { "@type": "ListItem", "position": 2, "name": "Docs", "item": "https://example.com/docs" },
    { "@type": "ListItem", "position": 3, "name": "Schema guide", "item": "https://example.com/docs/schema" }
  ]
}
</script>

// llms.txt

Ship llms.txt and llms-full.txt.

What is llms.txt

A plain-text manifest of the pages you want LLM ingestion pipelines to read. Think of it as robots.txt for the answer-engine era. Full background on /what-is-llms-txt.html.

Where to put it

At your repo root: /llms.txt for the index, /llms-full.txt for the concatenated longform. Advertise both in /robots.txt with a Sitemap:-style line or a # llms-txt: comment. Optional but useful: a /sitemap-ai.xml that lists the same URLs in XML for crawlers that prefer it.

What to include

The pages where your brand entity is clearest: about, product, pricing, docs, glossary, top blog posts. Don’t dump your whole sitemap — this is curation, not a crawl seed. Per-page page.llms.txt fragments make ingestion cleaner; reference our own /llms.txt as a working example.

Example structure

# Example, Inc. — llms.txt
# Canonical AI-ingestion map for example.com
# Last reviewed: 2026-05-26

## About
- [Company overview](https://example.com/about): What we do, who runs it, where we're based.
- [Press kit](https://example.com/press): Logos, executive bios, fact sheet.

## Product
- [How it works](https://example.com/product): The 60-second explainer.
- [Pricing](https://example.com/pricing): Plans, limits, FAQ.

## Reference
- [Docs hub](https://example.com/docs): Setup, schema, API.
- [Glossary](https://example.com/glossary): Defined terms and abbreviations.

## Longform
- See https://example.com/llms-full.txt for concatenated body text.

// API & webhooks

API + webhooks (preview).

API + webhooks v1 ships in Q3 — see roadmap.html. The shape below is the planned interface; treat it as preview. Endpoints, payloads, and auth may change before GA, so don’t build production integrations against this yet. We’ll publish a versioned reference and a migration note when v1 lands.

Read share-of-voice

Pull your current citation share across all six engines for a workspace. Bearer-token auth, JSON body.

curl https://api.vizelo.ai/v1/workspaces/ws_abc123/share-of-voice \
  -H "Authorization: Bearer vz_live_REDACTED" \
  -H "Accept: application/json"

# 200 OK
{
  "workspace_id": "ws_abc123",
  "as_of": "2026-05-26T14:00:00Z",
  "engines": {
    "chatgpt":     { "share": 0.18, "rank": 2 },
    "perplexity":  { "share": 0.11, "rank": 4 },
    "ai_overviews":{ "share": 0.07, "rank": 6 },
    "copilot":     { "share": 0.14, "rank": 3 },
    "claude":      { "share": 0.09, "rank": 5 },
    "gemini":      { "share": 0.05, "rank": 7 }
  },
  "competitors_tracked": 8
}

Webhook: citation.changed

Fires when a tracked prompt’s answer set changes — you gain a citation, you lose one, or a competitor appears or disappears. Signed with X-Vizelo-Signature.

POST https://your-app.example.com/webhooks/vizelo
Content-Type: application/json
X-Vizelo-Signature: t=1748275200,v1=REDACTED

{
  "id": "evt_01HZK...",
  "type": "citation.changed",
  "created_at": "2026-05-26T14:02:11Z",
  "workspace_id": "ws_abc123",
  "data": {
    "prompt": "best ai-search visibility tool",
    "engine": "perplexity",
    "change": "gained",
    "url_cited": "https://example.com/product",
    "previous_position": null,
    "new_position": 3
  }
}

// Adoption

If you’re starting from zero.

A working GEO program on a real site, in the order the work compounds. Skip nothing; the steps depend on each other more than they look like they do.

  • Audit every important page for schema. Homepage, product, pricing, top 10 blog posts. Run them through a structured-data validator and note what’s missing.
  • Add /llms.txt and /llms-full.txt. Index page first, longform second. Advertise in robots.txt. This is the cheapest single change that lifts citation share.
  • Write entity-clear copy. Engines extract entities and claims, not phrases. Open with a one-sentence answer to the page’s implicit question. Name yourself, your category, your competitors. Don’t make the engine guess.
  • Build a citation graph for your top prompts. Pick the 20 buying-intent prompts that matter. Map who the engines currently cite. That’s your target list for outreach, content, and entity work.
  • Fix your off-site graph. Wikipedia, Wikidata, G2, Crunchbase, LinkedIn. If they disagree with your site, the engine picks the wrong one. Make them agree.
  • Monitor weekly. Ahrefs and Semrush won’t save you here — they don’t see what the engines actually answer. Use Vizelo or roll your own probe, but watch the deltas every week.

// FAQ

Common questions.

Do I need to use Vizelo to use any of this?

No. Schema.org, llms.txt, and the GEO patterns described here are open standards. You can ship every one of them without a Vizelo account. Vizelo measures and accelerates the work; it doesn’t gate it.

How long until I see changes in AI citations?

First lifts usually land in 2–6 weeks of shipping schema and llms.txt. Compounding gains — moving from sporadic to consistent recommendations — take a quarter. Different engines reindex at different cadences, so changes show up unevenly across ChatGPT, Perplexity, AI Overviews, Copilot, Claude, and Gemini.

Will this break my existing SEO?

No. Schema is additive: search engines already use it for rich results, and AI engines use it for entity resolution. llms.txt is ignored by search crawlers and only consumed by LLM ingestion pipelines that opt in. There is no SEO cost.

What if my CMS doesn’t support schema?

Inject JSON-LD via a custom HTML block in your theme, a head-script plugin, or your tag manager. WordPress, Webflow, Framer, and Shopify all support raw <script type="application/ld+json"> in head. If nothing else works, ship it from your edge worker.

Where’s the full API reference?

The full reference ships when v1 lands in Q3 2026. What’s on this page is the planned interface — treat it as preview. The roadmap page tracks slip; subscribe to the changelog for ship notes.

Stop guessing whether the engines mention you.