@automatelab/ai-seo-mcp 0.1.2 → 0.1.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,36 +1,67 @@
1
1
  # @automatelab/ai-seo-mcp
2
2
 
3
+ > AI Citation Toolkit for the Model Context Protocol
4
+
3
5
  [![npm version](https://img.shields.io/npm/v/@automatelab/ai-seo-mcp.svg)](https://www.npmjs.com/package/@automatelab/ai-seo-mcp)
4
6
  [![license](https://img.shields.io/npm/l/@automatelab/ai-seo-mcp.svg)](./LICENSE)
5
7
  [![node](https://img.shields.io/node/v/@automatelab/ai-seo-mcp.svg)](https://nodejs.org)
6
8
 
7
- Vendor-agnostic MCP server that audits, scores, and rewrites web pages for AI-citation eligibility. No API keys. No registration.
9
+ **Audit why AI systems do or do not cite your pages.** MCP server. No API keys.
8
10
 
9
- Works in Claude Desktop, Cursor, Cline, Windsurf, VS Code (Copilot / Continue), and any client that speaks the [Model Context Protocol](https://modelcontextprotocol.io).
11
+ Works inside Claude, Cursor, Windsurf, Codex, and any MCP client that speaks stdio.
10
12
 
11
- ## Why it's important
13
+ ---
12
14
 
13
- AI assistants are eating search. ChatGPT, Perplexity, Google AI Overviews, and Claude with web access answer a fast-growing share of "what is X" and "how do I Y" queries - and each answer cites a handful of pages. Being one of those cited sources is binary: you are in the answer, or you are invisible.
15
+ ## What it checks
14
16
 
15
- The signals that decide citation eligibility are not what classic SEO tools measure. Lighthouse will not flag missing `FAQPage` schema. Search Console will not tell you that `GPTBot` is allowed but `OAI-SearchBot` is blocked. Ahrefs does not score citation worthiness. Screaming Frog does not validate `llms.txt`.
17
+ - **AI crawler access** - GPTBot, OAI-SearchBot, ClaudeBot, and PerplexityBot allowed or blocked in `robots.txt`
18
+ - **`llms.txt`** - present, spec-compliant, links alive
19
+ - **Structured answer extraction** - FAQ headings, BLUF paragraphs, answer-ready blocks
20
+ - **Schema completeness** - FAQPage, Article, Organization, Person; flags deprecated patterns
21
+ - **Entity clarity** - named entity density and `sameAs` coverage that help AI systems identify the subject
22
+ - **Citation formatting** - canonical URL hygiene, `og:url`, `hreflang`, noindex traps
23
+ - **Sitemap freshness** - `lastmod` signals that tell crawlers the page is current
16
24
 
17
- A page that no AI assistant cites is a page that, for a growing share of users, does not exist.
25
+ ---
18
26
 
19
- This MCP gives you a short list of no-brainer fixes that dramatically increase the odds of getting cited by an AI assistant versus unprepared text. It audits the specific signals AI assistants use - schema completeness, FAQ structure, AI-crawler allowlists, `llms.txt`, entity density, freshness, authority - and for each gap it returns the exact change to make. No opaque scores, no guesswork. Most of the fixes are one-time edits to a template or a `robots.txt` and pay off on every page you publish from then on.
27
+ ## Run an audit. Get a list of citation-blockers, ranked.
20
28
 
21
- ## What it does
29
+ > **You:** Run an AI-SEO audit on `https://automatelab.tech/how-to-connect-zapier-to-notion`.
22
30
 
23
- Modern search increasingly happens inside AI assistants. ChatGPT Search, Perplexity, Google AI Overviews, Claude with web access, and Microsoft Copilot all cite pages they consider authoritative, well-structured, and machine-readable. The signals that drive those citations overlap with classic SEO but are not the same.
31
+ Result (truncated):
24
32
 
25
- This MCP gives any AI client a toolkit to inspect a URL and answer questions like:
33
+ ```json
34
+ {
35
+ "url": "https://automatelab.tech/how-to-connect-zapier-to-notion",
36
+ "score": 61,
37
+ "grade": "C",
38
+ "dimension_scores": {
39
+ "schema": 45, "technical": 80, "structure": 40,
40
+ "robots": 90, "freshness": 85, "authority": 40,
41
+ "entity_density": 21, "sitemap": 100
42
+ },
43
+ "findings": [
44
+ {
45
+ "severity": "critical",
46
+ "category": "structure",
47
+ "message": "No FAQ structure found (no FAQPage schema or H3 question headings).",
48
+ "fix": "Add FAQ H3 headings ending in '?' with answer paragraphs, and a FAQPage JSON-LD block.",
49
+ "estimated_impact": "high"
50
+ },
51
+ {
52
+ "severity": "warning",
53
+ "category": "authority",
54
+ "message": "Low authority signals - missing Organization or author Person schema.",
55
+ "fix": "Add Organization JSON-LD and Article.author as a Person node with sameAs links.",
56
+ "estimated_impact": "high"
57
+ }
58
+ ]
59
+ }
60
+ ```
26
61
 
27
- - Is this page set up to be cited by AI Overviews and Perplexity?
28
- - What schema is missing, malformed, or deprecated?
29
- - Are GPTBot, ClaudeBot, OAI-SearchBot, and PerplexityBot allowed by `robots.txt`?
30
- - Does the page have a chance at the Answer Engine slot for a given query?
31
- - Rewrite this passage into a citation-ready answer block.
62
+ Each finding names the exact fix. No opaque scores, no guesswork.
32
63
 
33
- 13 tools. Deterministic where possible. Rule-based scoring with explicit rubrics, not black-box numbers.
64
+ ---
34
65
 
35
66
  ## Install
36
67
 
@@ -38,11 +69,11 @@ This MCP gives any AI client a toolkit to inspect a URL and answer questions lik
38
69
  npx -y @automatelab/ai-seo-mcp
39
70
  ```
40
71
 
41
- Requires Node 20 or later. No global install needed.
72
+ Requires Node 20 or later.
42
73
 
43
74
  ### Claude Desktop
44
75
 
45
- Add to `%APPDATA%\Claude\claude_desktop_config.json` on Windows, or `~/Library/Application Support/Claude/claude_desktop_config.json` on macOS:
76
+ Add to `%APPDATA%\Claude\claude_desktop_config.json` (Windows) or `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS):
46
77
 
47
78
  ```json
48
79
  {
@@ -55,57 +86,18 @@ Add to `%APPDATA%\Claude\claude_desktop_config.json` on Windows, or `~/Library/A
55
86
  }
56
87
  ```
57
88
 
58
- Restart Claude Desktop. The 13 tools appear in the tool tray.
59
-
60
- ### Cursor
61
-
62
- Add to `.cursor/mcp.json` in the project root or `~/.cursor/mcp.json` globally:
63
-
64
- ```json
65
- {
66
- "mcpServers": {
67
- "ai-seo": {
68
- "command": "npx",
69
- "args": ["-y", "@automatelab/ai-seo-mcp"]
70
- }
71
- }
72
- }
73
- ```
74
-
75
- ### Cline
76
-
77
- Add to VS Code settings or `.cline/mcp_settings.json`:
78
-
79
- ```json
80
- {
81
- "mcpServers": {
82
- "ai-seo": {
83
- "command": "npx",
84
- "args": ["-y", "@automatelab/ai-seo-mcp"],
85
- "disabled": false,
86
- "autoApprove": []
87
- }
88
- }
89
- }
90
- ```
91
-
92
- ### Windsurf, Continue, VS Code Copilot
93
-
94
- Use the same `command` / `args` pattern. Any MCP client that supports stdio transport works.
89
+ Restart Claude Desktop. Any MCP client that supports stdio transport works - same `command` / `args` pattern.
95
90
 
96
- ## Quickstart
91
+ ---
97
92
 
98
- After adding the config snippet above and restarting your client, try these prompts:
93
+ ## Further reading
99
94
 
100
- - *"Run an AI-SEO audit on `https://example.com` and tell me the top three things to fix."* - calls `audit_page` and returns a scored report with prioritized findings.
101
- - *"Check which AI crawlers my site allows in `robots.txt` for `https://yourdomain.com`."* - calls `check_robots` and lists per-crawler allow/disallow.
102
- - *"Score how citation-worthy this blog post is for Perplexity and ChatGPT: `https://...`."* - calls `score_citation_worthiness`.
103
- - *"Generate an `llms.txt` for `https://yourdomain.com` from its sitemap."* - calls `generate_llms_txt`.
104
- - *"Rewrite this passage for Answer Engine Optimization: [paste passage]."* - calls `rewrite_for_aeo` (uses MCP sampling if your client supports it).
95
+ - [automatelab.tech](https://automatelab.tech/products/mcp/ai-seo/) - teardowns and case studies
105
96
 
106
- No API keys. No accounts. The first call may take a few seconds while `npx` downloads the package; subsequent calls are instant.
97
+ ---
107
98
 
108
- ## Tools
99
+ <details>
100
+ <summary>All 14 tools</summary>
109
101
 
110
102
  | Tool | Purpose |
111
103
  |------|---------|
@@ -122,81 +114,13 @@ No API keys. No accounts. The first call may take a few seconds while `npx` down
122
114
  | `rewrite_for_aeo` | Rewrite content for Answer Engine Optimization (BLUF structure, FAQ format, schema additions). |
123
115
  | `rewrite_for_geo` | Rewrite content for Generative Engine Optimization (entity definitions, comparison tables, synthesis-ready structure). |
124
116
  | `extract_entities` | Extract named entities, `sameAs` links, and citation-density score from a page's content and structured data. |
117
+ | `diff_pages` | Compare two URLs for AI citation-worthiness: side-by-side dimension scores, gap analysis, and prioritized fix recommendations for url_a. |
125
118
 
126
- ## Example
127
-
128
- In Claude Desktop, after wiring the server above:
129
-
130
- > **You:** Run an AI-SEO audit on `https://automatelab.tech/how-to-connect-zapier-to-notion`.
131
-
132
- Claude calls `audit_page`. Result (truncated):
133
-
134
- ```json
135
- {
136
- "url": "https://automatelab.tech/how-to-connect-zapier-to-notion",
137
- "fetched_at": "2026-05-15T10:32:00Z",
138
- "score": 61,
139
- "grade": "C",
140
- "dimension_scores": {
141
- "schema": 45, "technical": 80, "structure": 40,
142
- "robots": 90, "freshness": 85, "authority": 40,
143
- "entity_density": 21, "sitemap": 100
144
- },
145
- "findings": [
146
- {
147
- "severity": "critical",
148
- "category": "structure",
149
- "where": "<body>",
150
- "message": "No FAQ structure found (no FAQPage schema or H3 question headings).",
151
- "fix": "Add FAQ H3 headings ending in '?' with answer paragraphs, and a FAQPage JSON-LD block.",
152
- "estimated_impact": "high"
153
- },
154
- {
155
- "severity": "warning",
156
- "category": "authority",
157
- "where": "page-level",
158
- "message": "Low authority signals - missing Organization or author Person schema.",
159
- "fix": "Add Organization JSON-LD and Article.author as a Person node with sameAs links.",
160
- "estimated_impact": "high"
161
- }
162
- ]
163
- }
164
- ```
165
-
166
- Claude then summarizes the findings and proposes fixes. For rewrite tools, the host model (Claude / GPT / etc.) does the rewriting via MCP sampling.
167
-
168
- ## Environment variables
169
-
170
- All variables are optional. Set them in the MCP client config under `"env"`.
171
-
172
- | Variable | Default | Description |
173
- |----------|---------|-------------|
174
- | `USER_AGENT` | `automatelab-ai-seo-mcp/0.1.0 (+https://github.com/AutomateLab-tech/ai-seo)` | HTTP User-Agent on all fetches. |
175
- | `FETCH_TIMEOUT_MS` | `15000` | Per-request timeout in milliseconds. |
176
- | `MAX_BYTES` | `5242880` | Maximum response body size in bytes (5 MB). |
177
- | `RESPECT_ROBOTS` | `true` | Global default for robots.txt compliance. Set `"false"` to disable. |
178
- | `INTER_REQUEST_DELAY_MS` | `1500` | Minimum delay between requests to the same host within a tool call. |
119
+ Environment variables: see [ENV.md](./ENV.md).
179
120
 
180
- ## Polite by default
121
+ </details>
181
122
 
182
- Every tool that hits the network goes through one fetch path that:
183
-
184
- - Respects `robots.txt` for the configured User-Agent (override with `RESPECT_ROBOTS=false`).
185
- - Identifies itself honestly via `User-Agent` (no spoofing as a browser).
186
- - Sleeps `INTER_REQUEST_DELAY_MS` between requests to the same host within a tool call.
187
- - Times out at `FETCH_TIMEOUT_MS` per request.
188
- - Caps response body at `MAX_BYTES` and refuses non-HTML / non-XML payloads where inappropriate.
189
-
190
- This MCP is not a scraper. It audits public pages the way Lighthouse or Screaming Frog do, one URL at a time.
191
-
192
- ## What it does not do
193
-
194
- - No JavaScript-rendered scraping. Only static HTML is fetched. SPAs that render content client-side will produce incomplete audits.
195
- - No paid-API integrations (Search Console, Ahrefs, Semrush). Bring those signals manually if you need them.
196
- - No site-wide crawling. Tools that need multiple URLs read from the public sitemap.
197
- - No live SERP checks. AI Overview eligibility is a deterministic heuristic, not a guarantee.
198
- - English-language tuning. Technical checks (schema, robots, canonical) are language-agnostic; content scoring assumes English.
199
- - Entity extraction is regex-based (title-case phrases, acronyms, CamelCase). False positives and misses are expected on v0.1.
123
+ ---
200
124
 
201
125
  ## Contributing
202
126
 
@@ -210,8 +134,4 @@ To report a vulnerability, see [SECURITY.md](./SECURITY.md).
210
134
 
211
135
  MIT - see [LICENSE](./LICENSE).
212
136
 
213
- ## Acknowledgements
214
-
215
- Built by [automatelab.tech](https://automatelab.tech/products/mcp/ai-seo/)
216
-
217
- Schema.org, `robots.txt`, and `llms.txt` are open standards. Crawler user-agent data is sourced from Anthropic, OpenAI, Google, Perplexity, and Cloudflare documentation. The MCP itself is built on the [Model Context Protocol](https://modelcontextprotocol.io) by Anthropic.
137
+ Built by [automatelab.tech](https://automatelab.tech)
package/dist/index.js CHANGED
@@ -17,6 +17,7 @@ import { scoreCitationWorthiness } from "./tools/score-citation-worthiness.js";
17
17
  import { rewriteForAeo } from "./tools/rewrite-for-aeo.js";
18
18
  import { rewriteForGeo } from "./tools/rewrite-for-geo.js";
19
19
  import { extractEntities } from "./tools/extract-entities.js";
20
+ import { diffPages, diffPagesInputSchema } from "./tools/diff-pages.js";
20
21
  import { ToolFetchError } from "./lib/fetch.js";
21
22
  const server = new McpServer({
22
23
  name: "@automatelab/ai-seo-mcp",
@@ -296,6 +297,14 @@ server.tool("extract_entities", [
296
297
  }
297
298
  return wrapHandler(() => extractEntities(input));
298
299
  });
300
+ // --- Tool 14: diff_pages ---
301
+ server.tool("diff_pages", [
302
+ "Compare two URLs for AI citation-worthiness and return a structured breakdown of which page is more likely to be cited and why. Typical use: your page (url_a) vs a competitor's page (url_b).",
303
+ "Read-only. Runs audit_page on both URLs in parallel (2 HTTP fetches per URL), then diffs dimension_scores and findings. No new fetch logic beyond what audit_page already does.",
304
+ "Deterministic, rule-based; no LLM calls. Same two URLs return the same comparison on repeated runs.",
305
+ "When to use: competitive gap analysis - understand exactly which dimensions (schema, structure, robots, entity density, freshness, technical, authority, sitemap) put a competitor ahead, and get prioritized fix_recommendations_for_a to close the gap. For a single-URL audit, use audit_page. For overall scoring of one page, use score_citation_worthiness.",
306
+ "Capped at 2 URLs per call. Heuristic verdict - does not claim to know what AI assistants actually cite; verdict matches audit_page's existing rubric.",
307
+ ].join("\n\n"), diffPagesInputSchema.shape, async (input) => wrapHandler(() => diffPages(input)));
299
308
  // --- Start server ---
300
309
  async function main() {
301
310
  const transport = new StdioServerTransport();
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  // All values are read once at server startup.
3
3
  export const POLITE_FETCH = {
4
4
  USER_AGENT: process.env["USER_AGENT"] ??
5
- "automatelab-ai-seo-mcp/0.1.0 (+https://github.com/AutomateLab-tech/ai-seo)",
5
+ "automatelab-ai-seo-mcp/0.1.3 (+https://github.com/AutomateLab-tech/ai-seo-mcp)",
6
6
  TIMEOUT_MS: Number(process.env["FETCH_TIMEOUT_MS"] ?? 15_000),
7
7
  MAX_BYTES: Number(process.env["MAX_BYTES"] ?? 5 * 1024 * 1024), // 5MB
8
8
  INTER_REQUEST_DELAY_MS: Number(process.env["INTER_REQUEST_DELAY_MS"] ?? 1_500),
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,8CAA8C;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EACR,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACzB,4EAA4E;IAC9E,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,MAAM;IACtE,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC;IAC9E,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,OAAO;CACjD,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/lib/config.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,8CAA8C;AAE9C,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,UAAU,EACR,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QACzB,gFAAgF;IAClF,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC;IAC7D,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE,MAAM;IACtE,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,KAAK,CAAC;IAC9E,cAAc,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,KAAK,OAAO;CACjD,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { CitationVerdict } from "../tools/audit-page.js";
2
+ interface ScorecardInput {
3
+ url: string;
4
+ fetched_at: string;
5
+ score: number;
6
+ grade: "A" | "B" | "C" | "D" | "F";
7
+ citation_verdict: CitationVerdict;
8
+ dimension_scores: {
9
+ schema: number;
10
+ robots: number;
11
+ technical: number;
12
+ freshness: number;
13
+ structure: number;
14
+ authority: number;
15
+ entity_density: number;
16
+ sitemap: number;
17
+ };
18
+ }
19
+ export declare function renderScorecardHtml(input: ScorecardInput): string;
20
+ export {};
21
+ //# sourceMappingURL=scorecard-html.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard-html.d.ts","sourceRoot":"","sources":["../../src/lib/scorecard-html.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAE9D,UAAU,cAAc;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACnC,gBAAgB,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAyCD,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,cAAc,GAAG,MAAM,CAgIjE"}
@@ -0,0 +1,167 @@
1
+ // Render a standalone HTML scorecard from an audit_page result.
2
+ // No external dependencies - inline CSS only.
3
+ const DIMENSION_LABELS = {
4
+ schema: "Schema",
5
+ technical: "Technical",
6
+ structure: "Structure",
7
+ robots: "Robots",
8
+ freshness: "Freshness",
9
+ authority: "Authority",
10
+ entity_density: "Entity Density",
11
+ sitemap: "Sitemap",
12
+ };
13
+ function escHtml(str) {
14
+ return str
15
+ .replace(/&/g, "&amp;")
16
+ .replace(/</g, "&lt;")
17
+ .replace(/>/g, "&gt;")
18
+ .replace(/"/g, "&quot;");
19
+ }
20
+ function barColor(score) {
21
+ if (score >= 75)
22
+ return "#22c55e";
23
+ if (score >= 50)
24
+ return "#f59e0b";
25
+ return "#ef4444";
26
+ }
27
+ function verdictColor(verdict) {
28
+ if (verdict === "likely")
29
+ return "#22c55e";
30
+ if (verdict === "marginal")
31
+ return "#f59e0b";
32
+ return "#ef4444";
33
+ }
34
+ function gradeColor(grade) {
35
+ if (grade === "A")
36
+ return "#22c55e";
37
+ if (grade === "B")
38
+ return "#84cc16";
39
+ if (grade === "C")
40
+ return "#f59e0b";
41
+ if (grade === "D")
42
+ return "#f97316";
43
+ return "#ef4444";
44
+ }
45
+ export function renderScorecardHtml(input) {
46
+ const { url, fetched_at, score, grade, citation_verdict, dimension_scores } = input;
47
+ const formattedDate = new Date(fetched_at).toUTCString();
48
+ const verdictLabel = citation_verdict.will_ai_cite === "likely"
49
+ ? "Likely to be cited"
50
+ : citation_verdict.will_ai_cite === "marginal"
51
+ ? "Marginally citable"
52
+ : "Unlikely to be cited";
53
+ const dimensionRows = Object.entries(dimension_scores)
54
+ .map(([key, val]) => {
55
+ const label = DIMENSION_LABELS[key] ?? key;
56
+ const color = barColor(val);
57
+ return `
58
+ <div class="dim-row">
59
+ <span class="dim-label">${escHtml(label)}</span>
60
+ <div class="bar-track">
61
+ <div class="bar-fill" style="width:${val}%;background:${color};"></div>
62
+ </div>
63
+ <span class="dim-score">${val}</span>
64
+ </div>`;
65
+ })
66
+ .join("");
67
+ const blockerItems = citation_verdict.top_3_blockers
68
+ .map((b, i) => {
69
+ const impactBadge = b.estimated_impact
70
+ ? `<span class="badge badge-${b.estimated_impact}">${escHtml(b.estimated_impact)}</span>`
71
+ : "";
72
+ return `
73
+ <div class="blocker">
74
+ <div class="blocker-header">
75
+ <span class="blocker-num">${i + 1}</span>
76
+ <span class="blocker-cat">${escHtml(b.category)}</span>
77
+ ${impactBadge}
78
+ </div>
79
+ <p class="blocker-msg">${escHtml(b.message)}</p>
80
+ <p class="blocker-fix"><strong>Fix:</strong> ${escHtml(b.fix)}</p>
81
+ </div>`;
82
+ })
83
+ .join("");
84
+ const noBlockers = citation_verdict.top_3_blockers.length === 0
85
+ ? `<p class="no-blockers">No critical blockers found.</p>`
86
+ : "";
87
+ return `<!DOCTYPE html>
88
+ <html lang="en">
89
+ <head>
90
+ <meta charset="UTF-8">
91
+ <meta name="viewport" content="width=device-width,initial-scale=1">
92
+ <title>AI-SEO Scorecard - ${escHtml(url)}</title>
93
+ <style>
94
+ *{box-sizing:border-box;margin:0;padding:0}
95
+ body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;background:#0f172a;color:#e2e8f0;min-height:100vh;padding:2rem 1rem}
96
+ .card{max-width:700px;margin:0 auto;background:#1e293b;border-radius:12px;overflow:hidden;box-shadow:0 4px 32px rgba(0,0,0,.4)}
97
+ .header{padding:2rem;border-bottom:1px solid #334155}
98
+ .header-url{font-size:.85rem;color:#94a3b8;word-break:break-all;margin-bottom:.5rem}
99
+ .header-ts{font-size:.78rem;color:#64748b}
100
+ .grade-row{display:flex;align-items:center;gap:1.5rem;margin-top:1.25rem}
101
+ .grade-badge{font-size:3rem;font-weight:800;line-height:1;color:${gradeColor(grade)}}
102
+ .score-num{font-size:1.75rem;font-weight:700;color:#f1f5f9}
103
+ .score-label{font-size:.8rem;color:#94a3b8;margin-top:.2rem}
104
+ .verdict-pill{display:inline-block;padding:.35rem .9rem;border-radius:999px;font-size:.85rem;font-weight:600;background:${verdictColor(citation_verdict.will_ai_cite)}22;color:${verdictColor(citation_verdict.will_ai_cite)};border:1px solid ${verdictColor(citation_verdict.will_ai_cite)}44;margin-top:.5rem}
105
+ .summary{font-size:.9rem;color:#cbd5e1;margin-top:.75rem;line-height:1.5}
106
+ .section{padding:1.5rem 2rem}
107
+ .section + .section{border-top:1px solid #334155}
108
+ .section-title{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:#64748b;margin-bottom:1rem}
109
+ .dim-row{display:grid;grid-template-columns:110px 1fr 36px;align-items:center;gap:.75rem;margin-bottom:.6rem}
110
+ .dim-label{font-size:.82rem;color:#94a3b8;text-align:right}
111
+ .bar-track{height:8px;background:#0f172a;border-radius:4px;overflow:hidden}
112
+ .bar-fill{height:100%;border-radius:4px;transition:width .3s}
113
+ .dim-score{font-size:.82rem;font-weight:600;color:#e2e8f0;text-align:right}
114
+ .blocker{background:#0f172a;border-radius:8px;padding:1rem;margin-bottom:.75rem;border-left:3px solid #ef4444}
115
+ .blocker:last-child{margin-bottom:0}
116
+ .blocker-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}
117
+ .blocker-num{width:22px;height:22px;border-radius:50%;background:#ef4444;color:#fff;font-size:.75rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
118
+ .blocker-cat{font-size:.8rem;font-weight:600;color:#cbd5e1;text-transform:capitalize}
119
+ .badge{padding:.15rem .5rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase}
120
+ .badge-high{background:#ef444422;color:#ef4444}
121
+ .badge-medium{background:#f59e0b22;color:#f59e0b}
122
+ .badge-low{background:#22c55e22;color:#22c55e}
123
+ .blocker-msg{font-size:.82rem;color:#94a3b8;margin-bottom:.35rem;line-height:1.4}
124
+ .blocker-fix{font-size:.82rem;color:#64748b;line-height:1.4}
125
+ .blocker-fix strong{color:#94a3b8}
126
+ .no-blockers{font-size:.9rem;color:#22c55e}
127
+ .footer{padding:1rem 2rem;text-align:center;font-size:.75rem;color:#475569;border-top:1px solid #334155}
128
+ .footer a{color:#6366f1;text-decoration:none}
129
+ .footer a:hover{text-decoration:underline}
130
+ </style>
131
+ </head>
132
+ <body>
133
+ <div class="card">
134
+ <div class="header">
135
+ <div class="header-url">${escHtml(url)}</div>
136
+ <div class="header-ts">Audited ${escHtml(formattedDate)}</div>
137
+ <div class="grade-row">
138
+ <div>
139
+ <div class="grade-badge">${escHtml(grade)}</div>
140
+ </div>
141
+ <div>
142
+ <div class="score-num">${score}<span style="font-size:1rem;color:#64748b">/100</span></div>
143
+ <div class="score-label">AI Citation Score</div>
144
+ </div>
145
+ </div>
146
+ <div class="verdict-pill">${escHtml(verdictLabel)}</div>
147
+ <p class="summary">${escHtml(citation_verdict.one_line_summary)}</p>
148
+ </div>
149
+
150
+ <div class="section">
151
+ <div class="section-title">Dimension Scores</div>
152
+ ${dimensionRows}
153
+ </div>
154
+
155
+ <div class="section">
156
+ <div class="section-title">Top Blockers</div>
157
+ ${blockerItems}${noBlockers}
158
+ </div>
159
+
160
+ <div class="footer">
161
+ Generated by <a href="https://github.com/AutomateLab-tech/ai-seo-mcp" target="_blank" rel="noopener">AI Citation Toolkit</a> - github.com/AutomateLab-tech/ai-seo-mcp
162
+ </div>
163
+ </div>
164
+ </body>
165
+ </html>`;
166
+ }
167
+ //# sourceMappingURL=scorecard-html.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard-html.js","sourceRoot":"","sources":["../../src/lib/scorecard-html.ts"],"names":[],"mappings":"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"}
@@ -4,17 +4,31 @@ export declare const auditPageInputSchema: z.ZodObject<{
4
4
  url: z.ZodString;
5
5
  include_raw_html: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
6
6
  respect_robots: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ generate_report: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
8
  }, "strip", z.ZodTypeAny, {
8
9
  url: string;
9
10
  respect_robots: boolean;
10
11
  include_raw_html: boolean;
12
+ generate_report: boolean;
11
13
  }, {
12
14
  url: string;
13
15
  respect_robots?: boolean | undefined;
14
16
  include_raw_html?: boolean | undefined;
17
+ generate_report?: boolean | undefined;
15
18
  }>;
16
19
  export type AuditPageInput = z.infer<typeof auditPageInputSchema>;
20
+ export interface CitationVerdict {
21
+ will_ai_cite: "unlikely" | "marginal" | "likely";
22
+ top_3_blockers: Array<{
23
+ category: string;
24
+ message: string;
25
+ fix: string;
26
+ estimated_impact?: "high" | "medium" | "low";
27
+ }>;
28
+ one_line_summary: string;
29
+ }
17
30
  export interface AuditPageResult extends AuditResult {
31
+ citation_verdict: CitationVerdict;
18
32
  dimension_scores: {
19
33
  schema: number;
20
34
  robots: number;
@@ -26,6 +40,7 @@ export interface AuditPageResult extends AuditResult {
26
40
  sitemap: number;
27
41
  };
28
42
  raw_html?: string;
43
+ report_html?: string;
29
44
  }
30
45
  export declare function auditPage(input: AuditPageInput): Promise<AuditPageResult>;
31
46
  //# sourceMappingURL=audit-page.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-page.d.ts","sourceRoot":"","sources":["../../src/tools/audit-page.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;EAe/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,gBAAgB,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CAsO/E"}
1
+ {"version":3,"file":"audit-page.d.ts","sourceRoot":"","sources":["../../src/tools/audit-page.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAWxB,OAAO,KAAK,EAAW,WAAW,EAAE,MAAM,aAAa,CAAC;AAExD,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EAoB/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,UAAU,GAAG,UAAU,GAAG,QAAQ,CAAC;IACjD,cAAc,EAAE,KAAK,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KAC9C,CAAC,CAAC;IACH,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,eAAgB,SAAQ,WAAW;IAClD,gBAAgB,EAAE,eAAe,CAAC;IAClC,gBAAgB,EAAE;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;QAClB,cAAc,EAAE,MAAM,CAAC;QACvB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA8Q/E"}
@@ -9,6 +9,7 @@ import { auditSchema } from "./audit-schema.js";
9
9
  import { checkRobots } from "./check-robots.js";
10
10
  import { checkSitemap } from "./check-sitemap.js";
11
11
  import { freshnessScore, deriveGrade, computeWeightedScore } from "../lib/score.js";
12
+ import { renderScorecardHtml } from "../lib/scorecard-html.js";
12
13
  export const auditPageInputSchema = z.object({
13
14
  url: z
14
15
  .string()
@@ -24,6 +25,11 @@ export const auditPageInputSchema = z.object({
24
25
  .optional()
25
26
  .default(true)
26
27
  .describe("If true (default), the tool checks robots.txt before fetching and skips disallowed paths, returning a robots_blocked finding instead. Set to false ONLY for auditing your own site where you've intentionally blocked crawlers and need the audit to bypass that block."),
28
+ generate_report: z
29
+ .boolean()
30
+ .optional()
31
+ .default(false)
32
+ .describe("If true, return a standalone HTML scorecard in the `report_html` field. The HTML is self-contained (no external dependencies) and can be saved as a .html file or pasted to Gist/CodePen. Default false to keep audits cheap."),
27
33
  });
28
34
  export async function auditPage(input) {
29
35
  const hostDelays = new Map();
@@ -216,9 +222,33 @@ export async function auditPage(input) {
216
222
  seen.add(key);
217
223
  return true;
218
224
  });
225
+ // --- Citation verdict (prepended block) ---
226
+ const will_ai_cite = score < 50 ? "unlikely" : score <= 75 ? "marginal" : "likely";
227
+ const impactOrder = { high: 0, medium: 1, low: 2, undefined: 3 };
228
+ const severityOrder = { critical: 0, warning: 1, info: 2 };
229
+ const top_3_blockers = [...deduped]
230
+ .filter((f) => f.severity === "critical" || f.severity === "warning")
231
+ .sort((a, b) => {
232
+ const ia = impactOrder[a.estimated_impact ?? "undefined"];
233
+ const ib = impactOrder[b.estimated_impact ?? "undefined"];
234
+ if (ia !== ib)
235
+ return ia - ib;
236
+ return severityOrder[a.severity] - severityOrder[b.severity];
237
+ })
238
+ .slice(0, 3)
239
+ .map((f) => ({
240
+ category: f.category,
241
+ message: f.message,
242
+ fix: f.fix,
243
+ estimated_impact: f.estimated_impact,
244
+ }));
245
+ const topBlockerMessage = top_3_blockers.length > 0 ? top_3_blockers[0].message : "no critical blockers found";
246
+ const one_line_summary = `AI assistants are ${will_ai_cite} to cite this page because ${topBlockerMessage.charAt(0).toLowerCase()}${topBlockerMessage.slice(1).replace(/\.$/, "")}.`;
247
+ const citation_verdict = { will_ai_cite, top_3_blockers, one_line_summary };
219
248
  const output = {
220
249
  url: input.url,
221
250
  fetched_at,
251
+ citation_verdict,
222
252
  findings: deduped,
223
253
  score,
224
254
  grade,
@@ -227,6 +257,16 @@ export async function auditPage(input) {
227
257
  if (input.include_raw_html) {
228
258
  output.raw_html = result.body;
229
259
  }
260
+ if (input.generate_report) {
261
+ output.report_html = renderScorecardHtml({
262
+ url: input.url,
263
+ fetched_at,
264
+ score,
265
+ grade,
266
+ citation_verdict,
267
+ dimension_scores: dimensionScores,
268
+ });
269
+ }
230
270
  return output;
231
271
  }
232
272
  //# sourceMappingURL=audit-page.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"audit-page.js","sourceRoot":"","sources":["../../src/tools/audit-page.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audit-page.js","sourceRoot":"","sources":["../../src/tools/audit-page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ import { z } from "zod";
2
+ export declare const diffPagesInputSchema: z.ZodObject<{
3
+ url_a: z.ZodString;
4
+ url_b: z.ZodString;
5
+ query: z.ZodOptional<z.ZodString>;
6
+ respect_robots: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ respect_robots: boolean;
9
+ url_a: string;
10
+ url_b: string;
11
+ query?: string | undefined;
12
+ }, {
13
+ url_a: string;
14
+ url_b: string;
15
+ respect_robots?: boolean | undefined;
16
+ query?: string | undefined;
17
+ }>;
18
+ export type DiffPagesInput = z.infer<typeof diffPagesInputSchema>;
19
+ export interface DimensionDiff {
20
+ a: number;
21
+ b: number;
22
+ /** Which URL has the higher score for this dimension, or 'tie' if equal. */
23
+ advantage: "a" | "b" | "tie";
24
+ }
25
+ export interface DiffPagesResult {
26
+ url_a: string;
27
+ url_b: string;
28
+ query?: string;
29
+ /** Which URL is more citation-worthy overall, or 'tie' if within 5 points. */
30
+ better_for_citation: "a" | "b" | "tie";
31
+ scores: {
32
+ a: number;
33
+ b: number;
34
+ };
35
+ delta: {
36
+ schema: DimensionDiff;
37
+ structure: DimensionDiff;
38
+ robots: DimensionDiff;
39
+ entity_density: DimensionDiff;
40
+ freshness: DimensionDiff;
41
+ technical: DimensionDiff;
42
+ authority: DimensionDiff;
43
+ sitemap: DimensionDiff;
44
+ };
45
+ /** Categories (or entities) present on B but absent from A's findings (A is missing these). */
46
+ missing_in_a: string[];
47
+ /** Categories (or entities) present on A but absent from B's findings (B is missing these). */
48
+ missing_in_b: string[];
49
+ /** Prioritized, actionable recommendations for improving URL A's citation probability. */
50
+ fix_recommendations_for_a: Array<{
51
+ category: string;
52
+ message: string;
53
+ fix: string;
54
+ estimated_impact?: "high" | "medium" | "low";
55
+ }>;
56
+ }
57
+ export declare function diffPages(input: DiffPagesInput): Promise<DiffPagesResult>;
58
+ //# sourceMappingURL=diff-pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-pages.d.ts","sourceRoot":"","sources":["../../src/tools/diff-pages.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;EA0B/B,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE,MAAM,WAAW,aAAa;IAC5B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,4EAA4E;IAC5E,SAAS,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;CAC9B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,8EAA8E;IAC9E,mBAAmB,EAAE,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IACvC,MAAM,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjC,KAAK,EAAE;QACL,MAAM,EAAE,aAAa,CAAC;QACtB,SAAS,EAAE,aAAa,CAAC;QACzB,MAAM,EAAE,aAAa,CAAC;QACtB,cAAc,EAAE,aAAa,CAAC;QAC9B,SAAS,EAAE,aAAa,CAAC;QACzB,SAAS,EAAE,aAAa,CAAC;QACzB,SAAS,EAAE,aAAa,CAAC;QACzB,OAAO,EAAE,aAAa,CAAC;KACxB,CAAC;IACF,+FAA+F;IAC/F,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,+FAA+F;IAC/F,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,0FAA0F;IAC1F,yBAAyB,EAAE,KAAK,CAAC;QAC/B,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;QAChB,GAAG,EAAE,MAAM,CAAC;QACZ,gBAAgB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;KAC9C,CAAC,CAAC;CACJ;AAwDD,wBAAsB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC,CA2D/E"}
@@ -0,0 +1,120 @@
1
+ // Tool: diff_pages
2
+ // Compares two URLs (e.g. user's page vs competitor) and returns a structured
3
+ // breakdown of why one is more citation-worthy than the other.
4
+ import { z } from "zod";
5
+ import { auditPage } from "./audit-page.js";
6
+ export const diffPagesInputSchema = z.object({
7
+ url_a: z
8
+ .string()
9
+ .url()
10
+ .describe("First URL to compare - typically your own page. Must be a fully-qualified http(s) URL that returns HTTP 200 (redirects are followed)."),
11
+ url_b: z
12
+ .string()
13
+ .url()
14
+ .describe("Second URL to compare - typically a competitor's page. Must be a fully-qualified http(s) URL that returns HTTP 200 (redirects are followed)."),
15
+ query: z
16
+ .string()
17
+ .optional()
18
+ .describe("Optional target search query both pages are competing for (e.g. 'how to connect Zapier to Notion'). When provided, it is surfaced in fix_recommendations_for_a as context. Does not alter the scoring algorithm - scoring is based on audit_page's existing rubric."),
19
+ respect_robots: z
20
+ .boolean()
21
+ .optional()
22
+ .default(true)
23
+ .describe("If true (default), respect robots.txt before fetching each URL. Set false only when auditing your own sites where you have intentionally blocked crawlers."),
24
+ });
25
+ /** Return "a", "b", or "tie" based on score values (tie within 5 points). */
26
+ function advantage(aScore, bScore) {
27
+ if (Math.abs(aScore - bScore) <= 5)
28
+ return "tie";
29
+ return aScore > bScore ? "a" : "b";
30
+ }
31
+ /** Derive missing_in_a and missing_in_b by comparing findings categories. */
32
+ function deriveMissing(findingsA, findingsB) {
33
+ const categoriesInA = new Set(findingsA.filter((f) => f.severity === "critical" || f.severity === "warning").map((f) => f.category));
34
+ const categoriesInB = new Set(findingsB.filter((f) => f.severity === "critical" || f.severity === "warning").map((f) => f.category));
35
+ // Collect distinct finding messages in each set to surface actionable gaps
36
+ const messagesInA = new Set(findingsA.filter((f) => f.severity === "critical" || f.severity === "warning").map((f) => f.message));
37
+ const messagesInB = new Set(findingsB.filter((f) => f.severity === "critical" || f.severity === "warning").map((f) => f.message));
38
+ // missing_in_a: findings B has (problems B solved that A hasn't addressed) - i.e. categories B has clean that A doesn't
39
+ // Cleaner interpretation: dimensions where B scores higher represent gaps A has
40
+ const missingInA = [];
41
+ for (const msg of messagesInB) {
42
+ if (!messagesInA.has(msg)) {
43
+ missingInA.push(msg);
44
+ }
45
+ }
46
+ const missingInB = [];
47
+ for (const msg of messagesInA) {
48
+ if (!messagesInB.has(msg)) {
49
+ missingInB.push(msg);
50
+ }
51
+ }
52
+ // If no message-level gaps, fall back to category-level gaps
53
+ if (missingInA.length === 0) {
54
+ for (const cat of categoriesInB) {
55
+ if (!categoriesInA.has(cat))
56
+ missingInA.push(`${cat} issues (present on B but not A)`);
57
+ }
58
+ }
59
+ if (missingInB.length === 0) {
60
+ for (const cat of categoriesInA) {
61
+ if (!categoriesInB.has(cat))
62
+ missingInB.push(`${cat} issues (present on A but not B)`);
63
+ }
64
+ }
65
+ return { missingInA, missingInB };
66
+ }
67
+ export async function diffPages(input) {
68
+ // Run both audits in parallel
69
+ const [resultA, resultB] = await Promise.all([
70
+ auditPage({ url: input.url_a, include_raw_html: false, generate_report: false, respect_robots: input.respect_robots }),
71
+ auditPage({ url: input.url_b, include_raw_html: false, generate_report: false, respect_robots: input.respect_robots }),
72
+ ]);
73
+ const dimA = resultA.dimension_scores;
74
+ const dimB = resultB.dimension_scores;
75
+ const delta = {
76
+ schema: { a: dimA.schema, b: dimB.schema, advantage: advantage(dimA.schema, dimB.schema) },
77
+ structure: { a: dimA.structure, b: dimB.structure, advantage: advantage(dimA.structure, dimB.structure) },
78
+ robots: { a: dimA.robots, b: dimB.robots, advantage: advantage(dimA.robots, dimB.robots) },
79
+ entity_density: { a: dimA.entity_density, b: dimB.entity_density, advantage: advantage(dimA.entity_density, dimB.entity_density) },
80
+ freshness: { a: dimA.freshness, b: dimB.freshness, advantage: advantage(dimA.freshness, dimB.freshness) },
81
+ technical: { a: dimA.technical, b: dimB.technical, advantage: advantage(dimA.technical, dimB.technical) },
82
+ authority: { a: dimA.authority, b: dimB.authority, advantage: advantage(dimA.authority, dimB.authority) },
83
+ sitemap: { a: dimA.sitemap, b: dimB.sitemap, advantage: advantage(dimA.sitemap, dimB.sitemap) },
84
+ };
85
+ const overallAdvantage = advantage(resultA.score, resultB.score);
86
+ const { missingInA, missingInB } = deriveMissing(resultA.findings, resultB.findings);
87
+ // fix_recommendations_for_a: A's own critical + warning findings, sorted by impact
88
+ const impactOrder = { high: 0, medium: 1, low: 2 };
89
+ const severityOrder = { critical: 0, warning: 1, info: 2 };
90
+ const recsForA = [...resultA.findings]
91
+ .filter((f) => f.severity === "critical" || f.severity === "warning")
92
+ .sort((a, b) => {
93
+ const ia = impactOrder[a.estimated_impact ?? "low"] ?? 2;
94
+ const ib = impactOrder[b.estimated_impact ?? "low"] ?? 2;
95
+ if (ia !== ib)
96
+ return ia - ib;
97
+ return (severityOrder[a.severity] ?? 2) - (severityOrder[b.severity] ?? 2);
98
+ })
99
+ .map((f) => ({
100
+ category: f.category,
101
+ message: f.message,
102
+ fix: f.fix,
103
+ estimated_impact: f.estimated_impact,
104
+ }));
105
+ const output = {
106
+ url_a: input.url_a,
107
+ url_b: input.url_b,
108
+ better_for_citation: overallAdvantage,
109
+ scores: { a: resultA.score, b: resultB.score },
110
+ delta,
111
+ missing_in_a: missingInA,
112
+ missing_in_b: missingInB,
113
+ fix_recommendations_for_a: recsForA,
114
+ };
115
+ if (input.query) {
116
+ output.query = input.query;
117
+ }
118
+ return output;
119
+ }
120
+ //# sourceMappingURL=diff-pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff-pages.js","sourceRoot":"","sources":["../../src/tools/diff-pages.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,14 +1,14 @@
1
1
  {
2
2
  "name": "@automatelab/ai-seo-mcp",
3
- "version": "0.1.2",
4
- "mcpName": "io.github.AutomateLab-tech/ai-seo",
5
- "description": "MCP server for AI-SEO auditing: schema, robots.txt, llms.txt, citation scoring, and AEO/GEO rewrites",
3
+ "version": "0.1.3",
4
+ "mcpName": "io.github.AutomateLab-tech/ai-seo-mcp",
5
+ "description": "AI Citation Toolkit - audit, score, and rewrite web pages for AI-citation eligibility. AEO/GEO/LLM visibility for any MCP client.",
6
6
  "license": "MIT",
7
7
  "author": "automatelab.tech",
8
- "homepage": "https://github.com/AutomateLab-tech/ai-seo",
8
+ "homepage": "https://github.com/AutomateLab-tech/ai-seo-mcp",
9
9
  "repository": {
10
10
  "type": "git",
11
- "url": "https://github.com/AutomateLab-tech/ai-seo.git"
11
+ "url": "https://github.com/AutomateLab-tech/ai-seo-mcp.git"
12
12
  },
13
13
  "engines": { "node": ">=20" },
14
14
  "type": "module",