Rank on Google. Get quoted by AI. 

Orino is a developer-first audit for SEO and GEO: the signals that decide whether search ranks you and whether AI engines cite you. Deterministic checks, no account, nothing leaves your machine.

$npx orino-cli audit
answer enginelive

“How do I audit SEO in a Next.js project?”

Run npx orino-cli audit in the project root. It detects the App Router, runs 54 checks and returns a scored report with fixes.

citedorino.appdocs.orino.app
GPTBotPerplexityBotClaudeBot
seo audit cli

orino.app

Orino — SEO & GEO audits from your terminal

One command, 54 deterministic checks, a score out of 100 and every fix spelled out.

96

seo score

Excellent

One command across every stack, auto-detected

Next.jsAstroSvelteKitNuxtPlain HTMLNext.jsAstroSvelteKitNuxtPlain HTMLNext.jsAstroSvelteKitNuxtPlain HTMLNext.jsAstroSvelteKitNuxtPlain HTML

Search happens in two places now. Google ranks your pages and AI engines quote them. Orino audits both surfaces with one deterministic command. 

Built like a compiler, not a consultant.

Rule-based checks that read your source and your live HTML. No crawl quotas, no dashboards, no login screens.

54 deterministic checks, one score out of 100.

Orino reads your codebase and your live URL, runs every check in parallel and hands back a weighted score, with the file, the finding and the fix for anything that fails.

$ npx orino-cli audit

Detected Next.js (App Router) · 54 checks queued

Crawlabilityrobots, sitemap, canonicals
!Structured data2 schema gaps
PerformanceLCP 4.1s on /
score82 / 100 · good
CrawlabilityMetadataStructured dataPerformanceOn-pageGEO readinessArchitecture

No account, no telemetry

Runs locally. The only network request is to the URL you choose to audit.

Same site, same score

Rules, not a language model. Scores never drift between runs, so they belong in CI.

AI crawler access, verified

GPTBotallowed
PerplexityBotallowed
ClaudeBotallowed
llms.txtfound

Your stack, auto-detected

Point it at the repo — Orino works out the framework and applies the checks that fit.

Next.jsAstroSvelteKitNuxtPlain HTML

Seven categories, zero guesswork.

Can engines reach every page you care about? Robots rules, XML sitemaps, canonical tags, redirect chains and status codes.

Titles and descriptions on every route, Open Graph and Twitter cards, with length and uniqueness rules applied per page.

JSON-LD presence and validity — Organization, Article, FAQ and breadcrumbs, matched against what each page type needs.

LCP, CLS and INP, render-blocking assets and image weight — the speed signals that gate rankings.

Heading order, alt text, internal linking and content depth — including the H1 a crawler actually receives.

GPTBot, ClaudeBot and PerplexityBot access, llms.txt, and whether your content survives without JavaScript.

Framework config, route structure and client-only rendering traps that hide finished pages from every crawler.

From scan to shipped fix.

Scan

Point it at a codebase, a live URL, or both. Orino resolves your framework and reads routes, metadata exports and build output the way a crawler never could.

reading source…

app/layout.tsxmetadata found
app/sitemap.tsfound
app/robots.tsfound
pages/blog/[slug]canonical missing
!public/llms.txtnot found

Score

Every check is weighted and rolled into a score out of 100, with a band per category, so a regression is a diff in CI, not a feeling.

82good · 4 to fix
05080100

Fix

Findings arrive with the file, the line and the remediation. Paste the fix into your editor, or hand the report straight to your agent.

Run your first audit
app/layout.tsx

export const metadata = {

-  title: "Home",

+  title: "Meridian — Architecture studio in Oslo",

+  description: "Practice, projects and contact.",

}

Talk to a real person.

Questions about Orino, partnership ideas, or just want to say hello? Drop us a line. No ticket queue, no chatbot.

support@bynaree.dev
Replies go straight to your inbox.

Your next audit is one command away. 

$npx orino-cli audit