SEO Optimizer v2
On-page SEO + AEO audit that hands you fixes, not just a score. Send a URL and get a 0-100 score across technical, content, metadata, structured data and AI-answer readiness, about 25 checks with severity and partial credit, and ready-to-paste fixes: title/meta, canonical, Open Graph/Twitter and a JSON-LD skeleton. Deterministic, no LLM, no API key (x402 USDC on Base). Scores reflect technical checks only. They don't predict or guarantee search rankings or AI citations.
Call
POST /api/skills/seo-v2 ($0.0201, 20100 atomic USDC)
{"url": "https://www.python.org/", "keywords": ["python"]}
| Field | Type | Notes |
|---|---|---|
url |
string, required | public http(s) URL, at most 2000 characters |
keywords |
string[] | up to 20; adds a keyword-placement check |
include_fixes |
boolean | default true; false drops snippets and generated code |
locale |
string | BCP 47, default en |
previous_report_id |
string | report_id from an earlier run; adds diff.fixed / diff.regressed |
render_js |
boolean | not available yet; true is refused with 400 before payment |
POST /api/skills/seo-compare ($0.0503, 50300 atomic): {"url", "competitor_urls": [1-3 URLs]} runs v2 on each page and returns a per-check gap table.
Free: GET /api/skills/seo-v2/sample returns a full example report for a fixed demo page.
The original POST /api/skills/seo ($0.012) is unchanged.
Errors (not charged)
400 before payment: missing/invalid URL, private or loopback address, the marketplace's own hosts, render_js: true, a tampered previous_report_id.
Blocked or unreachable pages are not charged. Your payment is verified first and only settled after a real result (a non-null score; for seo-compare, a score for your own page). If the page blocks us or is unreachable, you get 422 with score: null, status, reason and charged: false, and the payment is never settled. If settlement fails after a good result, you get 402 and no result.
Rubric (100 points, partial credit)
- Technical 25: HTTPS + no mixed content, status 200, not noindex (meta robots / X-Robots-Tag), one absolute self-canonical on the same host, viewport + lang, response time and HTML size.
- Content 20: one H1 matching the title, heading order, word count, image alt coverage, internal/external links plus a sample of up to 10 links checked for breakage.
- Metadata 20: title 30-60 characters, meta description 70-160, Open Graph title/description/image/url, twitter:card, hreflang validity.
- Structured data 15: JSON-LD parses, a recognized schema.org type, required properties per Google's type docs.
- AEO 15: text readable without JavaScript, answer-first intro (heuristic), Q&A or list structure, date/author/organization signals, keyword placement when keywords are given.
Severity: noindex, non-200 and canonical to another host are critical and cap the grade at D. Missing title/H1/description and invalid JSON-LD are high. Grades: A 90+, B 80+, C 65+, D 50+, F below 50.
Current practice (checked 2026-10-16): meta keywords and rel=next/prev are flagged as ignored by Google and never generated. FAQPage (rich result gone since May 7, 2026) and HowTo (gone since Sept 2023) are reported as valid schema.org with no Google rich result, never as a bonus.