Oratos
Website visibility intelligence for SEO, accessibility, structured metadata, and AI readiness.
Oratos audits and improves websites without owning your workflow. It works on local HTML directories, static exports, and live URLs — useful in CI/CD like Credo, Sobelow, Ruff, or Lighthouse CI.
v0.3.0 ships as a single Rust crate: the oratos CLI binary plus library modules for programmatic audits (oratos::core, oratos::html, oratos::audit, oratos::report, oratos::generate). API docs on docs.rs include this README.
Install
crates.io (recommended):
GitHub Releases — download prebuilt binaries from Releases (.tar.gz on Linux/macOS, .zip on Windows), extract, and add the binary to your PATH.
From a git checkout:
Or build from source:
Quick start
# Audit a static site directory
# JSON report for tooling
# CI gate: fail if overall score is below 85
# Generate llms.txt draft
# LLM remediation prompt for a page
CLI
oratos audit <target> [--format console|json|markdown|html|sarif] [--output PATH] [--fail-under SCORE] [--strict] [--crawl] [--changed-only] [--config PATH]
oratos generate llms <target> [--output PATH]
oratos generate metadata <target> [--output PATH]
oratos prompt html <file-or-url> [--output PATH]
oratos prompt phoenix <file-or-url> [--output PATH]
<target> may be a directory (./priv/static, ./dist), a single HTML file, or a URL (https://example.com).
URL audits: by default a URL fetches one page. Enable multi-page crawl with --crawl or [crawl] enabled = true in oratos.toml (see Configuration).
What Oratos checks
- SEO — title, meta description, canonical, headings, Open Graph, Twitter cards, internal links
- Accessibility — alt text,
lang, landmarks, form labels, link text - Structured data — JSON-LD presence and syntax, WebPage/BreadcrumbList/ImageObject hints
- LLM readiness —
llms.txt, extractable text, summaries, image descriptions
Scores are 0–100 per category. Overall score uses weights: SEO 30%, Accessibility 25%, Structured Data 25%, LLM Readiness 20%. Penalties: error −10, warning −5, info −1 (per category).
Phoenix / Mix
Oratos does not replace Phoenix SEO libraries — it audits rendered HTML after prerendering or static export:
# mix.exs
aliases: [
"seo.audit": ["cmd oratos audit ./priv/static --fail-under 85"],
"seo.report": ["cmd oratos audit ./priv/static --format html --output reports/oratos.html"]
]
See docs/phoenix.md and docs/ci.md.
Library
Use Oratos from Rust without shelling out to the CLI:
[]
= "0.3"
use ;
async
See docs/architecture.md for module layout. Upgrading from v0.2 split crates? See release notes.
Documentation
- Architecture
- Configuration
- Reports — includes JSON schema
- Rule catalog
- Scoring
- CI/CD
- Phoenix workflows
- llms.txt
- Remediation prompts
- Tutorials
- Publishing to crates.io
- Roadmap
- Release notes (v0.3.0)
- pre-commit · Node/Python
Development
License
MIT — see the LICENSE file.