Skip to main content

citeready

CI License: MIT PyPI Python

Can AI assistants read, trust and cite your business page? Pure stdlib, zero dependencies, one command.

When someone asks ChatGPT-class assistants for "a good bakery nearby", the answer is assembled from pages the assistant can actually read: structured data, consistent contact details, plain crawlable HTML. citeready audits one page the way an answer engine sees it and hands you a scored, explainable report. Every check is a plain deterministic rule you can read in the source — no model in the loop, no network calls beyond the page itself.

Install

pip install citeready

Usage

$ citeready https://vegabakery.example/
citeready — https://vegabakery.example/
score 96/100

Structured data
  ✓ JSON-LD structured data found (1 block)
  ✓ all JSON-LD blocks parse
  ✓ business node found (Bakery)
  ✓ name present
  ✓ address present
  ✓ telephone present
  ...
  ✓ phone matches the visible page

Page basics
  ✓ title: «Vega Bakery — sourdough & pastry in Valencia»
  ✓ meta description present
  ...

Site signals
  ✓ AI crawlers are not blocked
  ! no llms.txt (emerging, optional standard)
  ✓ sitemap.xml present

Also takes a local file (citeready page.html) or stdin (citeready -); --json for machine-readable output, --strict to exit non-zero when any check fails (handy in CI).

From Python:

from citeready import audit

report = audit("https://vegabakery.example/")   # or audit(html_string)
report.score                                    # 0–100
[(f.check, f.level, f.message) for f in report.findings]

What it checks

Structured data — the part assistants quote from:

  • JSON-LD is present and parses (@graph handled)
  • a business node exists (LocalBusiness/Organization/subtypes — Bakery, BeautySalon, LegalService, …)
  • must-have properties: name, address, telephone, url (missing = fail)
  • rich properties: description, geo, openingHours, sameAs, image, priceRange (missing = warn)
  • consistency: the name, phone and street from structured data actually appear on the visible page — mismatched data reads as unreliable

Page basics — title (present, sane length), meta description, exactly one h1, lang attribute, canonical URL, no noindex, Open Graph pair.

Site signals (URL mode) — robots.txt does not block AI crawlers (GPTBot, ClaudeBot, PerplexityBot, Google-Extended, CCBot, …), llms.txt, sitemap.xml.

Scoring is the plain weighted share: pass = 1, warn = ½, fail = 0, ×100. No hidden weights, so two reports are always comparable.

Honest limits

Static HTML only — no JavaScript is executed, so a page that renders its content client-side will score poorly here. That is partly the point (most answer-engine crawlers read static HTML too), but a low score on a JS-heavy site deserves a manual look. Checks are heuristics with documented thresholds, not a certification; robots.txt parsing is deliberately naive (full-block detection, not path matching).

Scope is frozen

This package does one thing: it audits a page and reports. Bug reports (wrong counts, crashes on valid HTML, missed JSON-LD) are very welcome. Feature requests — crawling whole sites, fixing what it finds, tracking scores over time — are out of scope for now.

Built to power Laspi

Laspi

citeready is the measuring half of the AI-visibility work inside Laspi — a marketing employee in a small-business owner's phone. Laspi keeps a living memory of the business (every fact confirmed by the owner), writes platform-native posts, images and short videos from it, and looks after the business's visibility in AI answers — in whatever language the business sells in. This audit is how that work starts: measure first, then fix.

The measuring is open source. The fixing is the product: laspi.pro.

License

MIT © 2026 GradeBuilder S.L.

Metadata

Release files for citeready 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for citeready 0.1.0
File Size Uploaded
citeready-0.1.0.tar.gz 43.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for citeready 0.1.0
File Interpreter ABI Platform
citeready-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 57.5 kB

Release files / citeready-0.1.0.tar.gz

Download URL citeready-0.1.0.tar.gz
Size 43.7 kB
Tags Source
SHA-256 checksum
How to use checksums
9a5a8a4331e93c7f33751049d0bee3e90299f4a355f731725d8197541a8af84a
BLAKE2b-256 checksum
How to use checksums
7ef7715b41d6a8801065dc153bf35f77c3271a65a99742efe60c01579ebc35c6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / citeready-0.1.0-py3-none-any.whl

Download URL citeready-0.1.0-py3-none-any.whl
Size 13.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8e1017d65fb66839a8d89cff49799188495d874fc0ec6f1710c96ec2c3c82a05
BLAKE2b-256 checksum
How to use checksums
0a50323621a9f0f7168d4e11f79a944cced9be3c7d5c29cf88131af67888c892
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page