Discovery — GEO
Generative Engine Optimization (GEO) makes your real site retrievable by AI answer engines — the systems that now write a user's first impression of you and cite a handful of sources instead of listing a page of links. Ipnops observes which AI crawlers actually hit you, audits the on-page signals that decide retrieval, and scores you per engine across the Western and Chinese frontier. It enriches the page you already ship — no cloaking, no mirror page served only to bots.
The tag vs. the server SDK
The client tag is a one-line script that reports your live on-page signals (structured data present, server-render state, meta) from a real browser. The server SDK reads your request logs and tags real AI-crawler hits. Both are required, and the server SDK is not optional: AI crawlers do not run JavaScript, so the client tag never sees them. The only place a crawler's visit shows up is server-side, in the request log. That log truth — who came, to which paths, and what HTML they got — is the differentiator on-page audits alone can't match.
<!-- reports live on-page signals -->
<script async
src="https://api.ipnops.ai/geo/tag.js"
data-site="example.com"></script>// crawlers don't run JS — the server sees them
import { ipnops } from "@ipnops/geo";
app.use(ipnops({ site: "example.com" }));
// tags every AI-crawler request in your logsInstall on any framework or hosted builder
The tag drops into any HTML head. For React and Next, install it declaratively; on the server, add the SDK middleware where requests land. On a hosted builder, paste the tag into the head-code field it already gives you — no code required.
Audit signals
The on-page audit grades the four levers that decide whether an engine can retrieve and cite you — each scored per page, per engine.
The nine engines
Ipnops scores five Western engines — ChatGPT, Perplexity, Google AI, Copilot, Claude — and four Chinese frontier engines most tools ignore: Qwen, GLM, Kimi, and DeepSeek. Each is matched by its published crawler user-agent where one exists.
The DeepSeek nuance — DeepSeek publishes no crawler user-agent and fetches browser-like, so it is effectively unobservable in logs; there is no hit to report. The lever that reaches it is retrieval readiness on your real page — serverRender plus structuredData. Ipnops covers DeepSeek through that readiness score, not through crawler observation, and labels it as such rather than faking a hit.
Structured data is the lever
In-page schema.org JSON-LD resolves your entities — org, product, FAQ, author — into a graph the model can bind to instead of guessing from prose. It is the highest-leverage GEO move and the one Ipnops grades first. It lives on the page you already serve.
<script type="application/ld+json">
{ "@context": "https://schema.org",
"@type": "Organization", "name": "Acme",
"url": "https://example.com",
"description": "Acme grades AI-answer retrieval."
}
</script>