Three audiences read the same HTML. Optimise once, win three channels.
| Layer | Audience | What it wants |
|---|---|---|
| SEO | Googlebot, Bingbot | Crawlable, canonical, fast, structured |
| AEO | AI Overviews, Copilot, voice | A short, liftable, factual answer |
| GEO | ChatGPT, Claude, Perplexity, Gemini | Machine-ingestible ground truth plus permission to cite |
| SMM | Humans on platforms, entity resolvers | Consistent, cross-linked brand presence |
OmniRank is not published to PyPI, npm or a container registry yet — install it from
source into a virtual environment. Homebrew and other PEP 668-managed Python
installs refuse a bare pip install, so activate a venv first:
git clone https://github.com/bemoshiur/OmniRank.git
cd OmniRank
python3 -m venv .venv && source .venv/bin/activate
make install
# Audit any live site — no configuration required
python3 -m omnirank.cli audit https://example.comOutput is a scored report plus a prioritised fix list, written to
.omnirank/reports/<date>-audit.json.
For a configured repo, copy templates/omnirank.config.example.json to
omnirank.config.json, fill it in, then:
python3 -m omnirank.cli audit --config omnirank.config.json --fail-on h1 canonical schema
python3 -m omnirank.cli geo --config omnirank.config.json --out publicExit codes: 0 clean · 1 a configured gate failed · 2 usage or config error. The
non-zero exit makes it a drop-in CI check.
Prefer not to clone? Grab the packaged skill:
⬇ Download OmniRank skill (.zip)
Unzip it into your Claude Code plugins directory:
unzip omnirank-skill.zip -d ~/.claude/plugins/Building it yourself is one command:
./scripts/build-skill-zip.sh # -> dist/omnirank-skill-<version>.zip| Skill | Status | What it does |
|---|---|---|
audit |
shipped | Scores SEO, AEO, GEO and crawl-hygiene gates; emits findings with observed / expected / fix |
geo-artifacts |
shipped | Generates llms.txt, llms-full.txt, facts.json with a citation licence |
| Skill | Target | What it will do |
|---|---|---|
aeo-onpage |
v0.2 | Emit JSON-LD by entity type; draft AnswerBlocks and FAQs; Next.js codegen |
indexing |
v0.3 | IndexNow, GSC URL Inspection, Bing Submit, Wayback, hash-based freshness |
offsite-entity |
v0.4 | sameAs gap analysis, peer mention-gap, outreach drafts |
measure |
v0.5 | Rank tracking plus real AI-citation testing across engines |
smm-content |
v0.6 | Repurpose published pages into platform-native assets |
smm-publish |
v0.7 | Gated publishing — dry-run default, human approval required |
Adapters for WordPress, Jekyll, Shopify, Astro, Vue and Svelte land at v1.0.
Real-only. No fabricated statistics, ratings, reviews or testimonials. facts.statistics
carries only entries explicitly marked published; AggregateRating without a real
ratingCount is reported as an error, not a warning.
Never claim an unevaluated gate passed. An unreachable URL is an error. A layer whose gates did not run is absent from the score map rather than scored 100.
Secrets are pointers. Config holds env:NAME only. A missing variable fails loudly —
a skipped submission is otherwise indistinguishable from a successful one in logs.
Audit diagnoses; it never edits.
- It does not force rankings. Nothing can. It dominates the signals search engines use.
- It does not send cold email. Outreach is drafted for human review and manual send.
- It does not abuse the Google Indexing API. That API covers
JobPostingandBroadcastEventonly; misuse earns a manual action. - It does not generate AI slop. Every generated page expects a human edit pass.
- It does not ship thin programmatic pages. Matrices are pruned to real demand signals.
The wiki covers configuration, every gate, adapters, the report schema, and CI recipes. Questions and results belong in Discussions.
OmniRank implements and builds on public standards and published research:
- schema.org — structured-data vocabulary
- IndexNow — instant indexing protocol
- llms.txt — the proposal for AI-readable site indexes
- Sitemaps XML and the Robots Exclusion Protocol (RFC 9309)
- arXiv 2311.09735 — GEO: Generative Engine Optimization (Princeton, KDD 2024). Source of the finding that statistics, quotations and cited primary sources lift AI visibility.
- arXiv 2509.10762 — GEO-16, generative-engine optimisation criteria
- Ahrefs — AI-search and brand-mention correlation studies
- Seer Interactive — ChatGPT / Bing citation-overlap analysis
Correlations from that research are observational, drawn largely from English-language B2B datasets, and are treated as directional. Validate empirically per site.
Built and maintained by S M Moshiur Rahman at Public Pulse Agency, Dhaka — across publicpulse.com.bd, tenderpulse.com.bd and pulsetoday.com.bd.
S M Moshiur Rahman — Director of Business & Operations, Public Pulse Agency
| +880 1717 714676 — fastest for project discussion | |
| moshiur@publicpulse.com.bd | |
| 🌐 Web | publicpulse.com.bd |
| 💻 GitHub | @bemoshiur |
For bugs and feature requests, please use Issues rather than direct message — it keeps the answer searchable for the next person. For consulting, partnerships, or anything project-specific, WhatsApp gets the quickest reply.
Code is MIT. Documentation and the content corpus exposed via llms.txt and
llms-full.txt are CC BY 4.0.