aeoptimize 0.5.3 → 0.6.1

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.
@@ -4,18 +4,18 @@
4
4
  "name": "Te-Shu Wang"
5
5
  },
6
6
  "metadata": {
7
- "description": "AI search optimization: scan, generate, and transform website content for AI readability",
8
- "version": "0.5.3"
7
+ "description": "Content-readiness lint with evidence-bounded AI discovery experiments",
8
+ "version": "0.6.1"
9
9
  },
10
10
  "plugins": [
11
11
  {
12
12
  "name": "aeoptimize",
13
13
  "source": "./",
14
- "description": "CLI toolkit + Claude Code skills for transforming SEO-optimized websites into AI-search-ready content",
14
+ "description": "CLI and Claude Code skills for reproducible content-readiness checks",
15
15
  "category": "seo",
16
16
  "tags": ["aeo", "seo", "ai-search", "llms-txt", "structured-data"],
17
- "homepage": "https://github.com/dexuwang627-cloud/aeoptimize",
18
- "repository": "https://github.com/dexuwang627-cloud/aeoptimize"
17
+ "homepage": "https://github.com/cucuwang/aeoptimize",
18
+ "repository": "https://github.com/cucuwang/aeoptimize"
19
19
  }
20
20
  ]
21
21
  }
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "aeoptimize",
3
- "description": "AI search optimization toolkit: scan, generate, and transform website content for AI readability",
4
- "version": "0.5.3",
3
+ "description": "Content-readiness lint and evidence-bounded discovery experiments",
4
+ "version": "0.6.1",
5
5
  "author": {
6
6
  "name": "Te-Shu Wang"
7
7
  },
8
- "homepage": "https://github.com/dexuwang627-cloud/aeoptimize",
9
- "repository": "https://github.com/dexuwang627-cloud/aeoptimize",
8
+ "homepage": "https://github.com/cucuwang/aeoptimize",
9
+ "repository": "https://github.com/cucuwang/aeoptimize",
10
10
  "license": "MIT",
11
11
  "keywords": ["aeo", "seo", "ai-search", "llms-txt", "structured-data", "claude-code-skill"],
12
12
  "commands": [
package/CHANGELOG.md ADDED
@@ -0,0 +1,35 @@
1
+ # Changelog
2
+
3
+ All notable user-visible changes will be documented here. The project follows Semantic Versioning after the v0.6 evidence baseline is released.
4
+
5
+ ## 0.6.1
6
+
7
+ ### Fixed
8
+
9
+ - Bound public CLI verification to the downloaded tarball that passed SHA-256 verification.
10
+ - Added an executable clean-worktree release candidate gate and cross-Node package reproducibility check.
11
+ - Exercised the public rule corpus across the HTML parser boundary and strengthened release verifier failure tests.
12
+
13
+ ## 0.6.0
14
+
15
+ ### Changed
16
+
17
+ - Reframed the score as deterministic content readiness rather than a prediction of ranking or AI citation.
18
+ - Classified FAQ and `llms.txt` as optional, zero-point signals.
19
+ - Removed the exact-one-H1 and fixed meta-description-length assumptions.
20
+ - Changed quantitative-content guidance to flag unsourced claims instead of rewarding more numbers.
21
+ - Stopped inferring `FAQPage` structured data from question headings.
22
+ - Limited CI support to maintained Node.js LTS lines and refreshed dependencies.
23
+ - Added methodology, contribution, security, roadmap, and root GitHub Action files.
24
+ - Made the GitHub Action advisory by default, with explicit blocking mode, version-matched package installation, stable outputs, and contract fixtures.
25
+ - Added a public positive, negative, and false-positive boundary corpus for every scored rule.
26
+ - Added a copyable end-to-end GitHub Action sample plus release and rollback instructions.
27
+
28
+ ### Security
29
+
30
+ - Updated runtime and development dependencies to remove known npm audit findings present in the previous lockfile.
31
+
32
+ ## 0.5.3 — 2026-04-15
33
+
34
+ - Added the `aeoptimize` executable alias.
35
+ - Synchronized CLI, Action, and plugin version metadata.
@@ -0,0 +1,37 @@
1
+ # Contributing
2
+
3
+ Contributions that make `aeoptimize` more reproducible, explainable, or easier to adopt are welcome.
4
+
5
+ ## Development setup
6
+
7
+ Use Node.js 22.12 or newer. Node 24 LTS is the recommended development version.
8
+
9
+ ```bash
10
+ npm ci
11
+ npm run check
12
+ npm pack --dry-run
13
+ npm audit --audit-level=high
14
+ ```
15
+
16
+ Do not commit `node_modules`, `dist`, package tarballs, credentials, or reports containing private URLs.
17
+
18
+ ## Pull requests
19
+
20
+ Keep each pull request focused. Include:
21
+
22
+ - the problem and user workflow;
23
+ - tests or fixtures that fail before the change and pass after it;
24
+ - JSON/output compatibility notes;
25
+ - documentation updates for user-visible behavior;
26
+ - the source and evidence class for any scoring-rule change.
27
+
28
+ Rule proposals must follow [docs/methodology.md](docs/methodology.md). Unsupported ranking, citation, adoption, or performance claims will not be accepted. Do not add fabricated statistics to examples or fixtures.
29
+
30
+ ## Commit and review expectations
31
+
32
+ - Run `npm run check`, `npm pack --dry-run`, and `npm audit --audit-level=high`.
33
+ - Preserve deterministic output unless the pull request explicitly versions the methodology change.
34
+ - Treat generated JSON-LD and crawler policy as reviewable candidates, never universal defaults.
35
+ - Add a changelog entry for behavior, compatibility, security, or methodology changes.
36
+
37
+ Opening an issue before a large change is recommended so scope and compatibility can be agreed first.
package/README.md CHANGED
@@ -1,204 +1,160 @@
1
1
  # aeoptimize
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/aeoptimize.svg)](https://www.npmjs.com/package/aeoptimize)
4
- [![CI](https://github.com/dexuwang627-cloud/aeoptimize/actions/workflows/ci.yml/badge.svg)](https://github.com/dexuwang627-cloud/aeoptimize/actions/workflows/ci.yml)
5
- [![license](https://img.shields.io/npm/l/aeoptimize.svg)](https://github.com/dexuwang627-cloud/aeoptimize/blob/main/LICENSE)
4
+ [![CI](https://github.com/cucuwang/aeoptimize/actions/workflows/ci.yml/badge.svg)](https://github.com/cucuwang/aeoptimize/actions/workflows/ci.yml)
5
+ [![license](https://img.shields.io/npm/l/aeoptimize.svg)](https://github.com/cucuwang/aeoptimize/blob/main/LICENSE)
6
6
 
7
- **CLI toolkit + Claude Code skills that transform SEO-optimized websites into AI-search-ready content.**
7
+ Deterministic content-readiness lint for static websites and documentation.
8
8
 
9
- ## Why AEO?
9
+ `aeoptimize` checks reproducible properties such as document structure, sourced quantitative claims, structured-data hygiene, indexing controls, metadata quality, and repetitive wording. It is intended for local development and CI regression checks.
10
10
 
11
- | | SEO | AEO |
12
- |---|---|---|
13
- | **Goal** | Rank higher | Get cited |
14
- | **Audience** | Search crawler | Language model |
15
- | **Key metric** | Position | Citation accuracy |
16
- | **Content style** | Keyword-rich | Self-contained, structured |
17
- | **Structured data** | Nice to have | Essential |
11
+ It does **not** predict ranking, indexing, rich results, Google AI Overviews, or citation by ChatGPT, Perplexity, or another AI system. Google states that its AI search features need no special AI text file or schema, and valid structured data does not guarantee a search feature. See [methodology and limitations](docs/methodology.md).
18
12
 
19
- 67% of users now get their first answer from AI. If your content can't be extracted and cited, it's invisible.
13
+ ## Quick start
20
14
 
21
- AI search engines (ChatGPT, Perplexity, Google AI Overview) don't rank pages — they **cite** content. `aeoptimize` helps you make your content citable.
22
-
23
- ## Quick Start
15
+ Requires Node.js 22.12 or newer.
24
16
 
25
17
  ```bash
26
- npx aeoptimize scan your-site.com
18
+ npx aeoptimize scan https://example.com
19
+ npx aeoptimize scan ./dist --dir
20
+ npx aeoptimize scan ./dist --dir --json
27
21
  ```
28
22
 
29
- ```
30
- AEO Readability Report
31
- Score: 61/100 AI Readability: Good
32
-
33
- Structure ██████████████░░░░░░ 18/25
34
- Citability ████████████░░░░░░░░ 16/25
35
- Schema ███████░░░░░░░░░░░░░ 7/20
36
- AI Metadata ███████░░░░░░░░░░░░░ 8/15
37
- Content Density ███████████████░░░░░ 12/15
38
-
39
- Top Suggestions:
40
- → Add FAQ section with question-format headings
41
- → Add AI-relevant schema types
42
- → Create and link an llms.txt file
23
+ Example output:
24
+
25
+ ```text
26
+ Content Readiness Report
27
+ Score: 71/100
28
+
29
+ Structure 20/25
30
+ Citability 18/25
31
+ Schema 16/20
32
+ AI Metadata 10/15
33
+ Content Density 7/15
43
34
  ```
44
35
 
45
- ## Features
36
+ The score is a versioned heuristic for catching regressions within the same project. Do not treat it as a percentage chance of search or AI visibility, and do not compare unrelated sites as if it were an outcome metric.
46
37
 
47
- ### Scan AI Readability Audit
38
+ ## What is scored
48
39
 
49
- 17 rules across 5 dimensions, 0-100 score. Zero cost, offline capable, deterministic.
40
+ | Dimension | Max | Scope |
41
+ | --- | ---: | --- |
42
+ | Structure | 25 | Document outline and readability heuristics |
43
+ | Citability | 25 | Claim specificity, source signals, definitions, attribution |
44
+ | Schema | 20 | JSON-LD structural hygiene when present; absence is not penalized |
45
+ | AI Metadata | 15 | Page-level indexing control and description quality |
46
+ | Content Density | 15 | Content/boilerplate and repetition heuristics |
50
47
 
51
- ```bash
52
- npx aeoptimize scan https://example.com # Remote URL
53
- npx aeoptimize scan ./dist --dir # Local directory
54
- npx aeoptimize scan ./dist --dir --json # Machine-readable
55
- ```
48
+ Two often-promoted AEO signals are deliberately excluded from the score:
49
+
50
+ - FAQ content and `FAQPage` schema are optional. The generator does not infer FAQ schema from question headings.
51
+ - `llms.txt` is an experimental proposal. Generating or publishing it does not add points.
56
52
 
57
- | Dimension | Max | What it measures |
58
- |-----------|-----|------------------|
59
- | **Structure** | 25 | Heading hierarchy, paragraph length, FAQ presence |
60
- | **Citability** | 25 | Self-contained statements, data/stats, definitions |
61
- | **Schema** | 20 | JSON-LD presence, completeness, AI-relevant types |
62
- | **AI Metadata** | 15 | llms.txt, robots.txt AI config, meta description |
63
- | **Content Density** | 15 | Content vs boilerplate, keyword stuffing detection |
53
+ Every rule, its evidence class, and known false-positive boundary is documented in [docs/methodology.md](docs/methodology.md) and exercised by the [versioned public fixture corpus](fixtures/v0.6/rule-corpus.ts).
64
54
 
65
- ### Multi-AI Scoring
55
+ ## CI contract
66
56
 
67
- Score with multiple AI engines simultaneously. Detects `gemini` and `copilot` CLIs, dispatches parallel scoring, merges with rule engine.
57
+ `--json` is the stable automation surface. A non-zero threshold is useful only after your team reviews the baseline and accepts the current methodology version.
68
58
 
69
59
  ```bash
70
- npx aeoptimize scan https://example.com --multi-ai
60
+ npx aeoptimize scan ./dist --dir --json > aeoptimize-report.json
61
+ node -e "const r=require('./aeoptimize-report.json'); process.exit(r.overall.total < 60 ? 1 : 0)"
71
62
  ```
72
63
 
64
+ The v0.6 GitHub Action is advisory by default. It reports findings without blocking the workflow:
65
+
66
+ ```yaml
67
+ - uses: cucuwang/aeoptimize@v0.6.1
68
+ with:
69
+ path: dist
73
70
  ```
74
- Score: 72/100 (Rule Engine: 61 | AI Consensus: 83)
75
71
 
76
- Rule Engine ████████████░░░░░░░░ 61/100
77
- Claude ████████████████░░░░ 85/100
78
- Gemini ████████████████░░░░ 81/100
72
+ Projects can explicitly choose blocking mode after accepting a baseline:
79
73
 
80
- AI Insights:
81
- Claude: "FAQ section lacks schema markup"
82
- Gemini: "Missing llms.txt reduces discoverability"
74
+ ```yaml
75
+ - uses: cucuwang/aeoptimize@v0.6.1
76
+ with:
77
+ path: dist
78
+ fail-on-low-score: 'true'
79
+ min-score: '60'
83
80
  ```
84
81
 
85
- | Scenario | Weighting |
86
- |----------|-----------|
87
- | Rule engine + 2+ AIs | 50% rules + 50% AI average |
88
- | Rule engine + 1 AI | 60% rules + 40% AI |
89
- | Rule engine only | 100% rules |
82
+ The Action exposes `score` and `report` outputs in both modes. Its release is reproducible only when the Action tag and matching npm package version both exist. Before pinning a version, verify both artifacts; if either is missing, use the CLI directly.
83
+
84
+ A copyable advisory workflow and controlled input are available in the [end-to-end Action sample](examples/github-action-sample/README.md).
90
85
 
91
- ### Generate — AI Infrastructure Files
86
+ ## Optional generators
92
87
 
93
88
  ```bash
94
- npx aeoptimize generate ./dist --dry-run # Preview
95
- npx aeoptimize generate ./dist # Write files
89
+ npx aeoptimize generate ./dist --dry-run
90
+ npx aeoptimize generate ./dist
96
91
  ```
97
92
 
98
- Generates:
99
- - **llms.txt** — Machine-readable site summary ([llmstxt.org](https://llmstxt.org) standard)
100
- - **llms-full.txt** — Full content for deep AI consumption
101
- - **JSON-LD schemas** — Article, FAQPage, BreadcrumbList
102
- - **robots.txt suggestions** — AI crawler allow/deny rules
103
-
104
- ### Transform — AI Content Restructuring (Claude Code Skill)
93
+ The generator can create:
105
94
 
106
- Uses your existing Claude subscription zero extra cost:
95
+ - `llms.txt` and `llms-full.txt` as experimental outputs based on the [llms.txt proposal](https://llmstxt.org/);
96
+ - candidate `Article` and `BreadcrumbList` JSON-LD for manual review;
97
+ - crawler-specific `robots.txt` suggestions, printed but never applied automatically.
107
98
 
108
- - Split long paragraphs into citable statements
109
- - Extract implicit Q&A into FAQ schema
110
- - Remove keyword stuffing
111
- - Fix dangling references ("This...", "It...", "They...")
112
- - Inject structured data
99
+ Generated structured data must be reviewed against visible content and the applicable search-engine documentation. The generator intentionally does not create `FAQPage` from headings alone.
113
100
 
114
- ## Framework Plugins
101
+ ## Framework integrations
115
102
 
116
103
  ### Vite
117
104
 
118
105
  ```ts
119
- // vite.config.ts
106
+ import { defineConfig } from 'vite';
120
107
  import { aeoPlugin } from 'aeoptimize/vite';
121
108
 
122
109
  export default defineConfig({
123
- plugins: [aeoPlugin()]
110
+ plugins: [aeoPlugin()],
124
111
  });
125
112
  ```
126
113
 
127
114
  ### Next.js
128
115
 
129
- ```ts
130
- // next.config.mjs
116
+ ```js
131
117
  import { withAeo } from 'aeoptimize/next';
132
118
 
133
119
  export default withAeo({});
134
120
  ```
135
121
 
136
- Build 時自動生成 `llms.txt`、`llms-full.txt`、`_aeo/generated-schemas.json` 並印出 AEO 分數。
137
-
138
- Options: `{ silent?: boolean; outDir?: string }`
139
-
140
- ## Guardrails
141
-
142
- ### Pre-commit Hook
143
-
144
- ```bash
145
- npx aeoptimize hook install # Default: min score 60
146
- npx aeoptimize hook install --min-score 80 # Custom threshold
147
- npx aeoptimize hook uninstall # Remove hook
148
- ```
122
+ Both integrations scan the build output and generate the same optional artifacts as the CLI. Options: `{ silent?: boolean; outDir?: string }`.
149
123
 
150
- Automatically checks AEO score of staged `.html` and `.md` files before each commit. Blocks commit if any file scores below the threshold.
124
+ ## Experimental AI review
151
125
 
152
- Works with husky too — add to your `.husky/pre-commit`:
153
126
  ```bash
154
- npx aeoptimize scan ./dist --dir --json | node -e "const j=JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')); if(j.overall.total<60){console.error('AEO score too low:',j.overall.total);process.exit(1)}"
127
+ npx aeoptimize scan https://example.com --multi-ai
155
128
  ```
156
129
 
157
- ### GitHub Action
158
-
159
- ```yaml
160
- # .github/workflows/aeo.yml
161
- name: AEO Check
162
- on: [pull_request]
163
- jobs:
164
- aeo:
165
- runs-on: ubuntu-latest
166
- steps:
167
- - uses: actions/checkout@v4
168
- - uses: dexuwang627-cloud/aeoptimize/action@v0.5.3
169
- with:
170
- path: dist
171
- min-score: 60
172
- ```
130
+ When supported local AI CLIs are available, this adds a subjective review and reports an experimental blend. Model output can vary and is not ground truth. The deterministic rule score remains visible separately.
173
131
 
174
- ## Claude Code Skills
132
+ ## Pre-commit hook
175
133
 
176
134
  ```bash
177
- claude plugin marketplace add dexuwang627-cloud/aeoptimize
135
+ npx aeoptimize hook install
136
+ npx aeoptimize hook install --min-score 60
137
+ npx aeoptimize hook uninstall
178
138
  ```
179
139
 
180
- - `/aeo-scan` Interactive audit with multi-AI scoring
181
- - `/aeo-generate` — Guided file generation with preview
182
- - `/aeo-transform` — AI-powered content restructuring
140
+ The hook checks staged `.html`, `.htm`, `.md`, and `.mdx` content. Review the baseline before using a threshold to block commits; `git commit --no-verify` remains an explicit escape hatch.
183
141
 
184
- ## Help
142
+ ## Claude Code skills
185
143
 
186
144
  ```bash
187
- npx aeoptimize --help # All commands
188
- npx aeoptimize scan --help # Scan options
189
- npx aeoptimize generate --help # Generate options
145
+ claude plugin marketplace add cucuwang/aeoptimize
190
146
  ```
191
147
 
192
- ## Contributing
148
+ - `/aeo-scan` — deterministic readiness audit with optional experimental review
149
+ - `/aeo-generate` — preview optional discovery artifacts
150
+ - `/aeo-transform` — propose content edits without inventing claims
151
+
152
+ ## Project status
193
153
 
194
- Contributions are welcome! Feel free to open issues or pull requests.
154
+ The v0.6 evidence baseline focuses on methodology, reproducible fixtures, CI compatibility, packaging, and external adoption—not more scoring rules. Release acceptance and rollback are documented in [docs/release-v0.6.md](docs/release-v0.6.md); longer-term adoption work remains in [ROADMAP.md](ROADMAP.md).
195
155
 
196
- 1. Fork the repository
197
- 2. Create your feature branch (`git checkout -b feature/amazing`)
198
- 3. Run tests (`npm test`)
199
- 4. Commit your changes
200
- 5. Open a Pull Request
156
+ Contributions are welcome. Rule changes require an evidence note and positive/negative fixtures; see [CONTRIBUTING.md](CONTRIBUTING.md). Report vulnerabilities through the process in [SECURITY.md](SECURITY.md).
201
157
 
202
158
  ## License
203
159
 
204
- MIT
160
+ MIT
package/ROADMAP.md ADDED
@@ -0,0 +1,31 @@
1
+ # Roadmap
2
+
3
+ ## v0.6 — Evidence Release
4
+
5
+ The release goal is a trustworthy CI lint contract, not additional AEO claims.
6
+
7
+ Release gates:
8
+
9
+ - current repository identity across npm, README, Action, and Claude plugin metadata;
10
+ - green CI on supported Node.js LTS releases;
11
+ - zero high or critical npm audit findings at release time;
12
+ - versioned methodology with evidence classes and explicit non-goals;
13
+ - public positive, negative, and false-positive fixtures for every scored rule;
14
+ - root GitHub Action metadata and an end-to-end sample repository;
15
+ - stable JSON output, changelog, release notes, and rollback instructions.
16
+
17
+ The code-level gates are enforced by `npm run release:check`, `src/core/__tests__/release-contract.test.ts`, the versioned corpus in `fixtures/v0.6/`, and the local composite Action contract. CI compares real Node.js 22 and 24 package manifests and hashes. Repository rulesets and the release runbook remain separate maintainer controls.
18
+
19
+ ## Product validation after v0.6
20
+
21
+ - Validate one core workflow: static site or documentation CI content-readiness lint.
22
+ - Obtain three independently controlled public adoption examples.
23
+ - Triage external issues and document support boundaries before adding framework breadth.
24
+ - Measure technical outcomes such as a caught `noindex` regression or schema/content mismatch. Keep ranking and citation outcomes separate.
25
+
26
+ ## Not planned without new evidence
27
+
28
+ - claiming that a readiness score predicts search position or AI citation;
29
+ - awarding points for `llms.txt`, FAQ count, schema count, or a fixed meta-description length;
30
+ - automatic deployment of generated JSON-LD or crawler policy;
31
+ - adding more AI scorers and calling their average consensus.
package/SECURITY.md ADDED
@@ -0,0 +1,15 @@
1
+ # Security policy
2
+
3
+ ## Supported versions
4
+
5
+ Security fixes are applied to the latest published minor release. Older releases may be asked to upgrade when a backport is not practical.
6
+
7
+ ## Reporting a vulnerability
8
+
9
+ Use GitHub's private vulnerability reporting for `cucuwang/aeoptimize` when available. If the repository does not show a private reporting option, open a minimal issue asking for a private contact channel; do not include exploit details, credentials, private URLs, or user data in a public issue.
10
+
11
+ Include the affected version, environment, reproduction preconditions, impact, and the smallest safe proof of concept. You should receive an acknowledgement within seven days. A remediation timeline depends on severity and reproducibility.
12
+
13
+ ## Scope notes
14
+
15
+ `aeoptimize` can fetch remote pages, invoke a local browser, read build output, and install a Git hook. Reports may contain URLs and excerpts from scanned content. Review artifacts before publishing them and never scan private systems without authorization.
@@ -1,48 +1,19 @@
1
1
  ---
2
2
  name: aeo-ai-scorer
3
- description: Use when scoring a webpage's AI readability using Claude's language understanding, as part of the multi-AI scoring workflow in aeo-scan
3
+ description: Use only for an explicitly requested experimental content-quality review alongside the deterministic aeoptimize report
4
4
  model: inherit
5
5
  ---
6
6
 
7
- You are an AEO (Answer Engine Optimization) scoring engine. Your job is to evaluate a webpage's AI search readiness and return a structured score.
7
+ You are an experimental content-quality reviewer. Your output is subjective and must not be presented as a prediction of ranking, indexing, rich results, visibility, or citation.
8
8
 
9
- ## Input
9
+ Review the supplied content for:
10
10
 
11
- You will receive:
12
- 1. The page's HTML content (or text extract)
13
- 2. The rule engine's scan report (JSON)
11
+ - descriptive hierarchy, readability, and semantically appropriate lists;
12
+ - self-contained statements, sourced quantitative claims, definitions, and attribution;
13
+ - structured data that matches visible content;
14
+ - intentional indexing controls and page-specific descriptions;
15
+ - boilerplate and repetitive wording.
14
16
 
15
- ## Scoring Dimensions
17
+ FAQ content is optional. `llms.txt` is an unscored proposal. Do not impose a fixed meta-description length, exact H1 count, keyword-density threshold, or schema count.
16
18
 
17
- Score each dimension on its scale:
18
- - **structure** (0-25): Heading hierarchy quality, paragraph length (ideal: 40-80 words), FAQ sections, list usage
19
- - **citability** (0-25): Self-contained statements (no dangling "This...", "It..."), data/statistics, clear definitions ("X is Y"), source attribution
20
- - **schema** (0-20): JSON-LD presence and completeness, AI-relevant types (Article, FAQPage, HowTo, Product)
21
- - **aiMetadata** (0-15): llms.txt reference, robots.txt AI crawler configuration, meta description quality (50-160 chars)
22
- - **contentDensity** (0-15): Content vs boilerplate ratio, keyword stuffing (>3% = bad), content uniqueness signals
23
-
24
- ## Output Format
25
-
26
- Respond with ONLY valid JSON:
27
-
28
- ```json
29
- {
30
- "score": <total 0-100>,
31
- "structure": <0-25>,
32
- "citability": <0-25>,
33
- "schema": <0-20>,
34
- "aiMetadata": <0-15>,
35
- "contentDensity": <0-15>,
36
- "insight": "<one sentence: the single most impactful thing to fix>"
37
- }
38
- ```
39
-
40
- ## Guidelines
41
-
42
- - Be objective and consistent — same content should get same score
43
- - Compare against an ideal AEO-optimized page, not against average websites
44
- - The rule engine already checks structural patterns; focus on semantic quality that rules can't measure:
45
- - Can you actually extract a citable quote from each paragraph?
46
- - Does the content answer a specific question or just ramble?
47
- - Would you cite this page when answering a user's question?
48
- - Do NOT inflate scores to be nice — a typical unoptimized page should score 30-50
19
+ Return only the JSON shape requested by the caller. State the most important evidence-backed issue in `insight`. Repeated model runs may differ; the deterministic report remains the CI source of truth.
@@ -1,63 +1,17 @@
1
1
  ---
2
2
  name: aeo-analyzer
3
- description: Use when deep-analyzing a specific page for AI optimization opportunities, dispatched by aeo-scan for detailed per-page analysis
3
+ description: Use when an explicit qualitative review is needed for a page after the deterministic readiness scan
4
4
  model: inherit
5
5
  ---
6
6
 
7
- You are an AEO (Answer Engine Optimization) specialist. Your job is to analyze a single web page and produce a detailed, actionable report on how to improve its AI search readability.
7
+ You are a content-readiness reviewer. Separate deterministic findings, heuristics, and experiments; do not predict ranking or citation.
8
8
 
9
- ## Your Analysis Should Cover
9
+ For each proposed change:
10
10
 
11
- 1. **Issue-by-Issue Breakdown**
12
- - For each issue found by the scanner, explain WHY it matters for AI citation
13
- - Reference specific content in the page (quote the problematic text)
14
- - Rate fix difficulty: easy (5 min), medium (30 min), hard (1+ hour)
11
+ 1. quote the smallest relevant source passage;
12
+ 2. name the evidence class and false-positive boundary;
13
+ 3. provide a focused before/after diff;
14
+ 4. preserve meaning, voice, and factual provenance;
15
+ 5. state a deterministic score change only when the same scan reproduces it.
15
16
 
16
- 2. **Prioritized Fix Recommendations**
17
- - Order by: (impact on score) × (ease of implementation)
18
- - Group related fixes together
19
- - Estimate score improvement per fix
20
-
21
- 3. **Before/After Examples**
22
- - For the top 3 improvements, show exactly how the content should change
23
- - Use diff format: what to remove vs what to add
24
- - Explain why the "after" version is more AI-friendly
25
-
26
- 4. **Content Strategy Notes**
27
- - What type of AI queries would this page answer?
28
- - What's missing that would make it the definitive source?
29
- - Are there FAQ opportunities hidden in the content?
30
-
31
- ## Output Format
32
-
33
- Structure your analysis as:
34
-
35
- ```
36
- ## Page: [title]
37
- Current Score: [X]/100
38
-
39
- ### Priority Fixes
40
-
41
- #### 1. [Fix Name] — Expected improvement: +N points
42
- **Issue:** [what's wrong]
43
- **Why it matters:** [AI search impact]
44
- **Fix:**
45
- - Before: [quoted original]
46
- - After: [suggested replacement]
47
-
48
- [repeat for each fix]
49
-
50
- ### Quick Wins (under 5 minutes each)
51
- - [list of easy fixes]
52
-
53
- ### Summary
54
- - Current: X/100 → Estimated after fixes: Y/100
55
- - Most impactful change: [one sentence]
56
- ```
57
-
58
- ## Guidelines
59
-
60
- - Be specific — quote actual content, don't speak in generalities
61
- - Focus on what AI engines actually care about, not traditional SEO metrics
62
- - If the page is already well-optimized (>80), say so and suggest only minor refinements
63
- - Never suggest adding false claims or misleading structured data
17
+ Prioritize unsupported quantitative claims, unintended indexing controls, structured data that conflicts with visible content, and clear readability regressions. Never invent claims, sources, authors, dates, FAQ content, or benefits. Use primary documentation for technical assertions.