Open-SEO Report Types: 4 AI-Driven SEO Reports You Can Generate
Open-SEO generates four core AI-driven SEO reports—site-audit, backlinks, AI brand-visibility, and rank-tracking—accessible via MCP API endpoints or the web UI.
The every-app/open-seo repository is built around a Managed Connectors Protocol (MCP) architecture that powers programmatic SEO analysis. Whether you're integrating reports into a dashboard or reviewing them in the browser, Open-SEO's report generation pipeline combines crawling engines, third-party data providers, and LLM-powered narrative generation. This article breaks down each report type with implementation details from the source code.
Site-Audit Report (SEO Audit)
The site-audit report delivers a one-page HTML summary of crawl-wide SEO issues in plain language, plus a single prioritized next-action recommendation.
What It Detects
- Broken internal and external links
- Missing or duplicate title tags and meta descriptions
- Canonical tag conflicts
- Thin or duplicate content
- Optional Lighthouse performance scores on a sample of pages
API Flow
Three MCP tools in src/server/mcp/tools/site-audit-tools.ts orchestrate the process:
| Step | Tool | Purpose |
|---|---|---|
| 1 | run_site_audit |
Queues a crawl for the target URL |
| 2 | get_audit_status |
Polls until done: true |
| 3 | get_audit_issues or get_audit_pages |
Returns HTML report or per-page evidence |
Code Example: Requesting a Site-Audit Report
// 1️⃣ Start the audit
const start = await fetch('/api/run_site_audit', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${API_KEY}`
},
body: JSON.stringify({ url: 'https://example.com' })
});
const { auditId } = await start.json();
// 2️⃣ Poll until finished
let status = { done: false };
while (!status.done) {
const r = await fetch(`/api/get_audit_status/${auditId}`, {
headers: { Authorization: `Bearer ${API_KEY}` }
});
status = await r.json();
await new Promise(res => setTimeout(res, 2000));
}
// 3️⃣ Retrieve the HTML report
const issues = await fetch(`/api/get_audit_issues/${auditId}`, {
headers: { Authorization: `Bearer ${API_KEY}` }
});
const { htmlReport } = await issues.json();
document.body.innerHTML = htmlReport;
The HTML output is documented in web/content/docs/skills/seo-audit.mdx and designed for direct embedding or email delivery.
Backlinks Report
The backlinks report provides domain-level authority metrics and a ranked list of referring pages, with tiered data access based on subscription level.
Report Contents
| Tier | Data Included |
|---|---|
| Free | Domain rank, total backlink count, referring domains count, top 15 backlinks |
| Paid | Full backlink list with anchor text, follow/nofollow status, spam risk signals |
API Endpoint
The route is implemented in web/src/routes/api/backlink-check.ts, which parses DataForSEO's backlink API and returns a compact JSON payload.
const domain = 'example.com';
const resp = await fetch(`/api/backlink-check/${domain}`, {
headers: { Authorization: `Bearer ${API_KEY}` }
});
const data = await resp.json();
console.log('Domain rank:', data.rank);
console.log('Total backlinks:', data.backlinks);
console.log('Top 15 backlinks:', data.topBacklinks);
The UI marketing page at web/src/routes/_marketing/features/backlinks.tsx surfaces this as the free backlink checker tool.
AI Brand-Visibility Report
The AI brand-visibility report is a narrative document generated by feeding aggregated SEO data into Claude or ChatGPT. It explains current organic visibility and suggests concrete growth tactics.
Data Sources Combined
- Keyword research volumes and difficulty scores
- Traffic estimation models
- Backlink profile summary
- Competitor positioning signals
How It's Generated
The "brand-visibility" skill entry in web/src/lib/feature-pages.ts (around line 550) defines this report type. It uses the same MCP data-gathering primitives as the SEO audit, then ships the structured result to an LLM for natural-language generation.
const payload = {
url: 'https://example.com',
reportType: 'brand-visibility'
};
const r = await fetch('/api/run_brand_visibility', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${API_KEY}`
},
body: JSON.stringify(payload)
});
const { htmlReport } = await r.json();
Unlike the technical audit, this report prioritizes strategic interpretation over technical markup.
Rank-Tracking Report
The rank-tracking report delivers time-series keyword position data with SERP feature detection and change-over-time visualizations.
Report Schema
Each row contains:
keyword: The tracked search termdesktopRank: Position on desktop (0 = not ranking)mobileRank: Position on mobileserpFeatures: Detected features (featured snippet, local pack, etc.)date: Timestamp for trend analysis
MCP Tools
As defined in web/src/lib/feature-pages.ts (lines 389–436), the rank-tracking workflow uses:
run_rank_tracker: Initialize a project with target keywordsget_rank_tracker_status: Check crawl progressget_rank_tracker_results: Retrieve the position table
// Create a tracker
await fetch('/api/run_rank_tracker', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${API_KEY}`
},
body: JSON.stringify({
projectId,
keywords: ['open seo', 'site audit tool']
})
});
// Retrieve results
const r = await fetch(`/api/get_rank_tracker_results/${projectId}`, {
headers: { Authorization: `Bearer ${API_KEY}` }
});
const { rows } = await r.json();
console.table(rows);
The marketing page web/src/routes/_marketing/features/rank-tracking.tsx describes UI visualizations built on this data.
Supporting Reports and UI Integration
Beyond the four core report types, Open-SEO surfaces additional analysis views in the Feature Pages UI:
- Domain overview: Consolidated metrics dashboard
- Keyword research summary: Search volume and opportunity analysis
- Competitor-analysis snapshots: Side-by-side domain comparisons
These share the same MCP endpoints but are optimized for interactive exploration rather than programmatic export.
Summary
Open-SEO's report architecture centers on four AI-driven deliverables:
- Site-audit report: Crawl-based HTML issue summary with Lighthouse integration—powered by
site-audit-tools.ts - Backlinks report: Domain authority and referring page data via
api/backlink-check.ts - AI brand-visibility report: LLM-generated strategic narrative using aggregated MCP data
- Rank-tracking report: Time-series keyword positions with SERP feature detection
All reports are accessible through consistent MCP API patterns: initialize with a run_* call, poll get_*_status, then retrieve results from get_*_issues, get_*_results, or direct endpoint access.
Frequently Asked Questions
How do I trigger an Open-SEO report programmatically?
Use the MCP tool family for your target report type. For site audits, POST to /api/run_site_audit with your target URL and API key, then poll /api/get_audit_status/{id} until completion. Each report family follows this three-phase pattern: initiation, status polling, and result retrieval.
What data sources power Open-SEO reports?
The site audit runs internal crawling engines with optional Lighthouse integration. Backlink data comes from DataForSEO's backlink API. Keyword and ranking data use proprietary or third-party SERP scraping infrastructure. AI reports combine these sources with Claude/ChatGPT for narrative generation.
Can I download Open-SEO reports as PDF?
The source code shows HTML output for site audits and brand-visibility reports via the htmlReport field. PDF generation is not implemented in the core MCP tools; you would render the HTML server-side using a library like Puppeteer or Playwright.
What's the difference between free and paid backlinks reports?
Free users receive domain rank, total backlink count, referring domains, and the top 15 backlinks. Paid access unlocks the complete backlink list with anchor text distribution, follow/nofollow ratios, and spam risk scoring. The tier check happens at the API level in api/backlink-check.ts.
Have a question about this repo?
These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →