# Open-SEO Report Types: 4 AI-Driven SEO Reports You Can Generate

> Discover Open-SEO's four AI-driven reports: site-audit, backlinks, brand-visibility, and rank-tracking. Optimize your SEO strategy with actionable insights.

- Repository: [Every App/open-seo](https://github.com/every-app/open-seo)
- Tags: report-types
- Published: 2026-08-13

---

**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`](https://github.com/every-app/open-seo/blob/main/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

```typescript
// 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`](https://github.com/every-app/open-seo/blob/main/web/src/routes/api/backlink-check.ts), which parses DataForSEO's backlink API and returns a compact JSON payload.

```typescript
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`](https://github.com/every-app/open-seo/blob/main/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`](https://github.com/every-app/open-seo/blob/main/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.

```typescript
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`](https://github.com/every-app/open-seo/blob/main/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

```typescript
// 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`](https://github.com/every-app/open-seo/blob/main/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`](https://github.com/every-app/open-seo/blob/main/site-audit-tools.ts)
- **Backlinks report**: Domain authority and referring page data via [`api/backlink-check.ts`](https://github.com/every-app/open-seo/blob/main/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`](https://github.com/every-app/open-seo/blob/main/api/backlink-check.ts).