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.

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 term
  • desktopRank: Position on desktop (0 = not ranking)
  • mobileRank: Position on mobile
  • serpFeatures: 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 keywords
  • get_rank_tracker_status: Check crawl progress
  • get_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.

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:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →