UGC Reactions from Real Creators
Real creator library videos at $11 and images at $8. Custom production from $25/video with a $250 minimum. Commercial licensing included.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
Open-source SEO + GEO (AI search) auditor for programmatic sites, reported per page type. Audits a 1.3M-page site for ~$0.20 of Claude.
翻訳待ち
Loading the full README.
Read the full README ↗Get found on Google. Get quoted by AI. SEO and GEO (AI search) audits for programmatic sites, reported per page type.
Try it live → · Sample report · How it works
A programmatic site has thousands of pages but only a handful of templates. SEOGEO Audit Kit finds the templates behind a sitemap, checks a few representative pages from each, and tells you what to fix — with how many pages each fix covers. A 1.3M-page site costs about $0.20 of Claude per audit, against ~$14,900 to send every page through an LLM.
| Report overview | Where to start |
|---|---|
Status: live and open source. Full audits run end to end, including Claude checks, AI visibility, crawler logs and evals in CI. Search Console, Bing and AI referral traffic are coming soon. See
FEATURES.md.
sitemap.xml ──► sample URLs ──► detect templates ──► crawl samples ──► checks ──► ranked fixes
(fair across (URL patterns + (robots.txt, (SEO, AI
every file) page structure) rate-limited) readiness)
| Stage | How |
|---|---|
| Sitemap ingest | Follows sitemap indexes and gzip. Big sites split sitemaps by type (listings__001…180), so URLs are sampled across every file family and weighted back up to estimate pages per template. |
| Template detection | Signal 1: URL patterns (/buildings/{slug}, {id}, {uuid}), with facet siblings merged. Signal 2: page structure — shallow tag paths plus a heading skeleton ("Reviews of 25 Main St" → "reviews of") — compared with MinHash and clustered with HDBSCAN. URL patterns that hide different layouts are split; siblings sharing a layout are merged. |
| Crawl | Respects robots.txt and Crawl-delay, paces requests per host, identifies as SEOGEOAuditKitBot. |
| Technical SEO | Status, sitemap redirects, noindex in sitemap, canonicals, titles and descriptions, headings, thin content, boilerplate share, image alt, lang, hreflang, lastmod freshness, response time. |
| AI readiness (GEO) | AI-crawler policy (retrieval vs training bots), llms.txt structure, JSON-LD present / parses / has a main entity / required properties / no placeholder values, dateModified freshness, quotable verdict sentence, facts up front. |
| Scoring | Each finding is measured on samples and scaled to the template's estimated pages; scores are weighted by template size. |
| Audit | Connect | Track |
|---|---|---|
| Technical SEO · Core Web Vitals · AI readiness · What AI sees (with vs without JavaScript) · Fix generators | Google Search Console · Bing Webmaster · AI referral traffic | AI visibility (citations, share of voice) · AI crawler logs · Monitoring and alerts · Question gaps · GitHub Action and MCP server |
The hosted demo runs on Claude and free APIs. Tracking citations in ChatGPT, Perplexity, Gemini and Copilot is built in, using your own API keys when self-hosted.
flowchart LR
UI[Next.js UI] -- POST /audits --> API[FastAPI]
API -- SSE stage events --> UI
API --> P[Pipeline]
P --> F[safe_fetch: SSRF guard, IP pinning]
F --> W[(Target site)]
P --> ML[Template detection: URL patterns + MinHash/HDBSCAN]
P --> C[Checks: SEO, AI readiness]
P -. next .-> CL[Claude: fact extraction, judge, fixes]
defusedxml.Requirements: Python 3.12+ with uv, Node 20+ with pnpm.
# API — http://localhost:8001
cd api
uv sync
cp .env.example .env
uv run uvicorn app.main:app --reload --port 8001
# UI — http://localhost:3001
cd web
pnpm install
pnpm dev --port 3001
Or run everything (API, website, Postgres) with Docker:
cp api/.env.example api/.env # add ANTHROPIC_API_KEY to enable the Claude checks
docker compose up --build # then open http://localhost:3001
Run an audit from the command line and stream its stages:
ID=$(curl -s -X POST localhost:8001/audits -H 'Content-Type: application/json' \
-d '{"url":"https://example.com"}' | python3 -c 'import json,sys;print(json.load(sys.stdin)["id"])')
curl -N localhost:8001/audits/$ID/events
A template's problems repeat on every page built from it, so the audit doesn't need every page. It reads a fair sample of sitemap files across every family, keeps a spread of URLs from each, checks about 5 representative pages per template, and scales the counts back up. The report shows exactly how pages were counted, per sitemap family. On a 1.3M-page site the estimate was within 1% of a full count (1,356,128 vs 1,345,411), and the audit took about 2.5 minutes.
Count every page (on any report, or POST /audits/{id}/count) reads every sitemap file
and replaces the estimates with exact counts. It only counts URLs, so the findings don't
change and memory stays flat even for millions of pages.
The hosted demo keeps the defaults below so audits stay fast and free. When self-hosting,
raise them in api/.env:
This is the beginning of the README. Read the rest at the original. Read the full README ↗