The previous post covered what AEO is (When Users Start Asking ChatGPT, Can They Still Find You?). This one is about implementation. Online AEO guides routinely list 20 action items — but in practice, 80% of the effect is concentrated in three. Here's what we did on our own site (Next.js App Router + TypeScript).
Why Only Three
We spent an afternoon combing every AEO guide we could find and realized most items fall into two buckets:
- Long game: FAQs, backlinks, E-E-A-T signals — all matter, but none pay off within a week
- Minor gains: Open Graph tweaks, OG images, canonical — things SEO-era sites should do anyway; AEO doesn't amplify their importance
What actually determines whether AI can read you comes down to three things: can it get in, can it understand, does it know when you update. That maps to robots.txt, JSON-LD, and IndexNow.
#1: Let AI Bots Through robots.txt
Most-overlooked of the three. Plenty of companies block everything except Googlebot to "protect content" — the result: ChatGPT, Claude, and Perplexity don't know you exist.
public/robots.txt:
User-agent: GPTBot
Allow: /
User-agent: ChatGPT-User
Allow: /
User-agent: OAI-SearchBot
Allow: /
User-agent: ClaudeBot
Allow: /
User-agent: Claude-Web
Allow: /
User-agent: anthropic-ai
Allow: /
User-agent: Google-Extended
Allow: /
User-agent: PerplexityBot
Allow: /
User-agent: Perplexity-User
Allow: /
User-agent: Applebot-Extended
Allow: /
User-agent: *
Allow: /
Disallow: /admin/
Disallow: /api/
Sitemap: https://www.heiso.io/sitemap.xml
A few notes:
Google-Extendedis notGooglebot— it controls what Google can use to train Gemini. List it separately.Applebot-Extendedis Apple Intelligence-specific, only introduced in 2024 — lots of oldrobots.txtfiles don't have it.
#2: JSON-LD Structured Data
This is what makes you readable. Plain-text pages are a blob to AI. JSON-LD hands it the subject–verb–object directly.
Minimum viable version: put Organization + WebSite schemas in your root layout so every page has them.
src/lib/schema.ts:
export function getOrganizationSchema() {
return {
'@context': 'https://schema.org',
'@type': 'Organization',
name: 'Heiso Digital',
url: 'https://www.heiso.io',
description: 'Heiso Digital provides custom software development, enterprise system integration, and AI Agent deployment.',
sameAs: [
'https://www.linkedin.com/company/heiso',
// other social profiles
],
};
}
src/components/JsonLd.tsx:
export function JsonLd({ data }: { data: object }) {
return (
<script
type="application/ld+json"
dangerouslySetInnerHTML={{ __html: JSON.stringify(data) }}
/>
);
}
Drop it into root layout:
// src/app/layout.tsx
import { JsonLd } from '@/components/JsonLd';
import { getOrganizationSchema } from '@/lib/schema';
export default function RootLayout({ children }) {
return (
<html>
<body>
<JsonLd data={getOrganizationSchema()} />
{children}
</body>
</html>
);
}
Run your homepage through Rich Results Test — you should now see the Organization schema detected.
Going further: add Service schema to service pages, SoftwareApplication to product pages, FAQPage wherever you have a FAQ section. But getting Organization right already solves 60% of the "AI doesn't know who I am" problem.
#3: IndexNow for Instant Pinging
Sitemaps are passive — crawlers come when they feel like it. IndexNow is active — when you publish, you ping Bing, Yandex, and Naver to crawl you now. Google isn't on IndexNow, but ChatGPT rides on Bing's index, which makes IndexNow more important for AI search than Google Search Console.
Setup:
- Generate a key (any 32–128 chars): e.g.
heiso-indexnow-2026-xyz789 - Put it as a file:
public/heiso-indexnow-2026-xyz789.txt, content is just the key - Write a notify function:
// src/lib/indexnow.ts
const KEY = 'heiso-indexnow-2026-xyz789';
const KEY_LOCATION = `https://www.heiso.io/${KEY}.txt`;
export async function notifyIndexNow(urls: string[]) {
await fetch('https://api.indexnow.org/indexnow', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
host: 'www.heiso.io',
key: KEY,
keyLocation: KEY_LOCATION,
urlList: urls,
}),
});
}
- Call it when:
- A new blog post is published
- Service page copy is updated
- A new landing page ships
We wire notifyIndexNow into the CMS publish hook — publish = auto-ping. Removes the "manually log into Bing Webmaster and click re-index" chore every time.
One Result: The Gap Two Weeks Later
Two weeks after shipping these three:
- ChatGPT answering "what does Heiso do" now lists "custom software, enterprise system integration, AI Agent" — our three main service lines (previously: "I can't confirm that")
- Perplexity surfaces our site as a source for our company name
- Bing indexed page count went from 12 to 47
No ads, no backlinks, no new content. Just made existing content AI-readable.
Closing
AEO implementation can go deep, but the first step is just these three things. The hard part isn't the tech — three lines in robots.txt, ten lines of JSON-LD, a single fetch call for IndexNow — the hard part is deciding how you want AI to understand you. That answer takes thinking. Once you have it, the implementation is a one-day job.
If you want us to run an AEO audit on your B2B site, or just outsource these three tasks, happy to chat → Book a consultation