@frase/agent-skills 0.3.0

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.
@@ -0,0 +1,193 @@
1
+ ---
2
+ name: frase-competitive-intelligence
3
+ description: Deep competitive analysis, opportunity detection, and topic clustering using Frase — analyze competitors, score opportunities, and organize content into topical clusters. Works via MCP or CLI.
4
+ ---
5
+
6
+ # Frase Competitive Intelligence
7
+
8
+ This skill teaches you how to analyze competitors, detect content opportunities, and organize topics into clusters using Frase.
9
+
10
+ **Works with:** Frase MCP server (`@frase/mcp-server`) OR Frase CLI (`@frase/cli`)
11
+
12
+ ## Prerequisites
13
+
14
+ - Frase MCP server connected OR `frase` CLI installed (`npx @frase/cli`)
15
+ - `FRASE_API_KEY` environment variable set (get from https://next.frase.io/settings/api)
16
+ - A Frase site with Google Search Console connected (for opportunity detection)
17
+
18
+ ## Workflow
19
+
20
+ ### Step 1: Analyze a Competitor Page
21
+
22
+ Crawl any URL and analyze it against SERP competitors.
23
+
24
+ **Via MCP:**
25
+ ```
26
+ 1. Use `start_competitive_analysis` with:
27
+ - url: the page URL to analyze (required)
28
+ - competitor_urls: array of up to 3 competitor URLs for direct comparison (optional)
29
+ - site_id: associate with a tracked site (optional)
30
+ - location_name: location for localized SERP results (optional, use `search_locations` to find exact values)
31
+ - industry: industry context for more targeted analysis (optional)
32
+ 2. This is async — poll with `get_competitive_analysis` using the returned ID
33
+ 3. Returns gap analysis:
34
+ - Missing topics the competitor covers that you don't
35
+ - Thin sections where you need more depth
36
+ - Structural gaps (missing FAQs, tables, comparison sections)
37
+ - Content quality comparison
38
+ ```
39
+
40
+ **Via CLI:**
41
+ ```bash
42
+ frase competitive analyze "https://competitor.com/their-article"
43
+ frase competitive analyze "https://competitor.com/page" --competitor-urls "https://rival.com/page"
44
+ ```
45
+
46
+ ### Step 2: Get Detailed Analysis
47
+
48
+ **Via MCP:**
49
+ ```
50
+ 1. Use `get_competitive_analysis` with the analysis ID
51
+ 2. Review detailed findings:
52
+ - Topic coverage comparison (your content vs theirs)
53
+ - Word count and depth analysis
54
+ - Heading structure comparison
55
+ - Internal/external link analysis
56
+ ```
57
+
58
+ **Via CLI:**
59
+ ```bash
60
+ frase competitive get <analysis-id>
61
+ frase competitive get <analysis-id> --json # full details
62
+ ```
63
+
64
+ ### Step 3: List Past Analyses
65
+
66
+ **Via MCP:**
67
+ ```
68
+ 1. Use `list_competitive_analyses` with site_id
69
+ 2. Review historical competitive analyses
70
+ 3. Track how competitors evolve over time
71
+ ```
72
+
73
+ **Via CLI:**
74
+ ```bash
75
+ frase competitive list --site-id <id>
76
+ ```
77
+
78
+ ### Step 4: Detect Opportunities
79
+
80
+ Frase unifies opportunity detection from multiple signals: GSC data, competitor gaps, content decay, and programmatic patterns.
81
+
82
+ **Via MCP:**
83
+ ```
84
+ 1. Use `list_opportunities` with:
85
+ - site_id: your site ID
86
+ - view: "quick-wins" | "growth" | "strategic" | "all" (optional filter, default: "all")
87
+ 2. Each opportunity includes a composite score:
88
+ - Impact (35%): traffic potential via CTR modeling by position
89
+ - Effort (25%): implementation difficulty
90
+ - Speed (20%): estimated time to rank
91
+ - Strategic (20%): business value alignment
92
+ 3. Views filter by effort level:
93
+ - quick-wins: low effort, proven demand
94
+ - growth: medium effort, validated gaps
95
+ - strategic: high effort, high reward
96
+ ```
97
+
98
+ **Via CLI:**
99
+ ```bash
100
+ frase opportunities list --site-id <id>
101
+ frase opportunities list --site-id <id> --view quick-wins
102
+ frase opportunities list --site-id <id> --view growth
103
+ frase opportunities list --site-id <id> --view strategic
104
+ ```
105
+
106
+ ### Step 5: Act on Opportunities
107
+
108
+ **Via MCP:**
109
+ ```
110
+ 1. Use `get_opportunity` with the opportunity ID for full details
111
+ 2. Use `create_from_opportunity` to generate a brief automatically:
112
+ - Pulls in keyword data, competitor analysis, and gap insights
113
+ - Creates a pre-populated brief ready for content generation
114
+ 3. Follow the content pipeline: generate → optimize → publish
115
+ ```
116
+
117
+ **Via CLI:**
118
+ ```bash
119
+ frase opportunities get <opportunity-id>
120
+ frase opportunities create-brief <opportunity-id> --site-id <id>
121
+ # Then follow the content pipeline:
122
+ frase content create --brief-id <new-brief-id>
123
+ frase optimize start --content-id <content-id>
124
+ ```
125
+
126
+ ### Step 6: Organize with Topic Clusters
127
+
128
+ Group content into topical clusters for authority building.
129
+
130
+ **Via MCP:**
131
+ ```
132
+ 1. Use `list_clusters` to see existing topic clusters
133
+ 2. Use `create_cluster` with:
134
+ - name: cluster name (required)
135
+ - pillar_topic: main pillar topic (required)
136
+ - site_id: associate with a site (optional)
137
+ 3. Use `assign_to_cluster` to add content to a cluster:
138
+ - cluster_id: the cluster ID
139
+ - content_id or brief_id: what to assign
140
+ - role: "pillar" or "supporting"
141
+ 4. Use `suggest_clusters` with site_id for AI-powered cluster suggestions
142
+ ```
143
+
144
+ **Via CLI:**
145
+ ```bash
146
+ frase cluster list --site-id <id>
147
+ frase cluster create "Content Marketing" --site-id <id>
148
+ frase cluster assign <cluster-id> --content-id <id> --role supporting
149
+ frase cluster suggest --site-id <id> # AI-powered suggestions
150
+ ```
151
+
152
+ ## Opportunity Scoring Methodology
153
+
154
+ | Factor | Weight | What It Measures |
155
+ |--------|--------|------------------|
156
+ | Impact | 35% | Traffic potential — CTR modeling by current/target position, search volume |
157
+ | Effort | 25% | Implementation difficulty — content exists? competitors strong? |
158
+ | Speed | 20% | Time to rank — domain authority vs competition, keyword difficulty |
159
+ | Strategic | 20% | Business value — commercial intent, conversion potential |
160
+
161
+ **Composite score:** 0-100. Higher = better opportunity.
162
+
163
+ ## Cluster Strategy
164
+
165
+ Topic clusters build topical authority:
166
+
167
+ ```
168
+ ┌────────────────┐
169
+ │ Pillar Page │
170
+ │ "SEO Guide" │
171
+ └───────┬────────┘
172
+ ┌─────────────┼─────────────┐
173
+ ▼ ▼ ▼
174
+ ┌────────────┐ ┌────────────┐ ┌────────────┐
175
+ │ Supporting │ │ Supporting │ │ Supporting │
176
+ │ "On-Page" │ │ "Technical" │ │ "Link │
177
+ │ │ │ │ │ Building" │
178
+ └────────────┘ └────────────┘ └────────────┘
179
+ ```
180
+
181
+ - **Pillar pages** cover a broad topic comprehensively
182
+ - **Supporting pages** dive deep into subtopics
183
+ - Internal links connect supporting pages to pillar and vice versa
184
+ - Clusters signal topical authority to search engines and AI engines
185
+
186
+ ## Key Principles
187
+
188
+ 1. **Analyze competitors regularly** — the SERP landscape changes constantly
189
+ 2. **Act on quick wins first** — low effort, high impact opportunities compound
190
+ 3. **Use clusters for authority** — scattered content dilutes topical signals
191
+ 4. **Create from opportunities** — let data drive content creation, not guesses
192
+ 5. **Track competitor evolution** — re-analyze quarterly to catch shifts
193
+ 6. **Connect clusters to GEO** — topical authority improves AI citation rates
@@ -0,0 +1,155 @@
1
+ ---
2
+ name: frase-content-optimization
3
+ description: Score and optimize content for SEO and GEO performance using Frase — SERP-based scoring, prioritized suggestions, and iterative improvement. Works via MCP or CLI.
4
+ ---
5
+
6
+ # Frase Content Optimization
7
+
8
+ This skill teaches you how to score and optimize content for SEO and GEO performance using Frase. Frase analyzes your content against top SERP competitors and provides actionable suggestions.
9
+
10
+ **Works with:** Frase MCP server (`@frase/mcp-server`) OR Frase CLI (`@frase/cli`)
11
+
12
+ ## Prerequisites
13
+
14
+ - Frase MCP server connected OR `frase` CLI installed (`npx @frase/cli`)
15
+ - `FRASE_API_KEY` environment variable set (get from https://next.frase.io/settings/api)
16
+ - Existing content to optimize (use `list_content` / `frase content list`)
17
+
18
+ ## Workflow
19
+
20
+ ### Step 1: Start Optimization
21
+
22
+ **Via MCP:**
23
+ ```
24
+ 1. Use `start_optimization` with the content_id
25
+ 2. Frase analyzes the content against top SERP competitors
26
+ 3. Poll `get_job_status` until analysis completes (usually 15-30 seconds)
27
+ ```
28
+
29
+ **Via CLI:**
30
+ ```bash
31
+ frase optimize start --content-id <id>
32
+ frase job status <job-id> # poll until ready
33
+ ```
34
+
35
+ ### Step 2: Review Score and Suggestions
36
+
37
+ **Via MCP:**
38
+ ```
39
+ 1. Use `get_optimization` with the optimization ID
40
+ 2. Review:
41
+ - SEO score and GEO score
42
+ - Suggestions count and applied count
43
+ - Individual suggestions grouped by type, each with an ID
44
+ - Priority levels (critical, high, medium, low)
45
+ ```
46
+
47
+ **Via CLI:**
48
+ ```bash
49
+ frase optimize get <optimization-id>
50
+ frase optimize get <optimization-id> --json # full details
51
+ ```
52
+
53
+ ### Step 3: Apply Suggestions Selectively
54
+
55
+ **Not all suggestions are equal.** Prioritize based on impact.
56
+
57
+ **Via MCP:**
58
+ ```
59
+ 1. Apply critical and high-priority suggestions first using `apply_optimization` with:
60
+ - id: the optimization session ID
61
+ - suggestion_id: the specific suggestion ID to apply (apply one at a time)
62
+ 2. Re-score after applying suggestions
63
+ 3. Skip low-priority suggestions that would compromise readability
64
+ ```
65
+
66
+ **Via CLI:**
67
+ ```bash
68
+ frase optimize apply <optimization-id> --suggestion <suggestion-id>
69
+ ```
70
+
71
+ Suggestion types and how to handle them:
72
+ - **Missing topics:** Add paragraphs covering these topics — HIGH IMPACT
73
+ - **Topic depth:** Expand existing sections with more detail — MEDIUM IMPACT
74
+ - **Heading structure:** Reorganize headings for better hierarchy — MEDIUM IMPACT
75
+ - **Word count:** Extend or trim content — CONTEXT-DEPENDENT
76
+ - **Meta tags:** Update title/description — QUICK WIN
77
+
78
+ ### Step 4: Re-Score After Changes
79
+
80
+ **Via MCP:**
81
+ ```
82
+ 1. Use `start_optimization` again with the same content_id
83
+ 2. Compare the new score to the previous one
84
+ 3. If still below target, apply more suggestions
85
+ 4. Repeat up to 3 times (diminishing returns after that)
86
+ ```
87
+
88
+ **Via CLI:**
89
+ ```bash
90
+ frase optimize start --content-id <id> # re-score after applying suggestions
91
+ frase optimize get <new-optimization-id>
92
+ ```
93
+
94
+ ### Step 5: Dismiss Irrelevant Suggestions
95
+
96
+ **Via MCP:**
97
+ ```
98
+ 1. Use `dismiss_optimization` for suggestions that don't apply
99
+ 2. This improves future optimization accuracy
100
+ ```
101
+
102
+ **Via CLI:**
103
+ ```bash
104
+ frase optimize dismiss <optimization-id> --suggestion <suggestion-id>
105
+ ```
106
+
107
+ ### Step 6: Cross-Content Insights
108
+
109
+ **Via MCP:**
110
+ ```
111
+ 1. Use `get_optimization_insights` to see patterns across all your content:
112
+ - Common issues appearing in multiple articles
113
+ - Opportunities that affect many pages
114
+ - Overall content health trends
115
+ ```
116
+
117
+ **Via CLI:**
118
+ ```bash
119
+ frase optimize insights --site-id <id>
120
+ ```
121
+
122
+ ## Score Interpretation
123
+
124
+ | Score Range | Meaning | Action |
125
+ |-------------|---------|--------|
126
+ | 80-100 | Excellent | Publish confidently. Minor tweaks only. |
127
+ | 70-79 | Good | Competitive with top results. Consider a few more improvements. |
128
+ | 50-69 | Needs work | Missing important topics. Apply high-priority suggestions. |
129
+ | 30-49 | Significant gaps | Major revision needed. Consider regenerating from a fresh brief. |
130
+ | 0-29 | Not competitive | Start over with research and a new brief. |
131
+
132
+ ## Target Scores by Content Value
133
+
134
+ - **High-value keywords** (commercial intent, high volume): Target 80+
135
+ - **Competitive keywords** (many strong competitors): Target 75+
136
+ - **Standard keywords** (moderate competition): Target 70+
137
+ - **Long-tail keywords** (low competition): Target 60+
138
+
139
+ ## Key Principles
140
+
141
+ 1. **Score before publishing** — never publish un-optimized content
142
+ 2. **Apply selectively** — prioritize high-impact suggestions
143
+ 3. **Re-score after changes** — verify improvements
144
+ 4. **Don't over-optimize** — readability matters more than a perfect score
145
+ 5. **Use insights** — patterns across content reveal systemic issues
146
+ 6. **SEO + GEO together** — optimize for both traditional search and AI engine citation
147
+
148
+ ## Common Mistakes
149
+
150
+ - Applying ALL suggestions blindly (some may hurt readability)
151
+ - Optimizing once and never re-checking after edits
152
+ - Ignoring meta tags (quick win with high SEO impact)
153
+ - Targeting 100 score (diminishing returns past 80, can hurt natural flow)
154
+ - Not using insights to spot recurring issues across content
155
+ - Ignoring GEO score (AI engines increasingly drive traffic)
@@ -0,0 +1,160 @@
1
+ ---
2
+ name: frase-content-pipeline
3
+ description: End-to-end content workflow using Frase — research, brief, generate, optimize, publish, and monitor AI visibility. Works via MCP tools or CLI.
4
+ ---
5
+
6
+ # Frase Content Pipeline
7
+
8
+ This skill teaches you the correct end-to-end content workflow using Frase. Follow these steps in order for best results.
9
+
10
+ **Works with:** Frase MCP server (`@frase/mcp-server`) OR Frase CLI (`@frase/cli`)
11
+
12
+ ## Prerequisites
13
+
14
+ - Frase MCP server connected OR `frase` CLI installed (`npx @frase/cli`)
15
+ - `FRASE_API_KEY` environment variable set (get from https://next.frase.io/settings/api)
16
+ - A Frase site created (check: `list_sites` / `frase sites list`)
17
+
18
+ ## Workflow
19
+
20
+ ### Step 1: Research Before Writing
21
+
22
+ **Never skip research.** Always start with SERP analysis before creating content.
23
+
24
+ **Via MCP:**
25
+ ```
26
+ 1. Use `start_research` with your topic to gather AI-powered insights
27
+ 2. Use `analyze_serp` with your target keyword to see what ranks
28
+ 3. Use `get_search_intent` to understand query intent (informational, transactional, etc.)
29
+ 4. Use `analyze_competitors` to identify content gaps in top-ranking pages
30
+ ```
31
+
32
+ **Via CLI:**
33
+ ```bash
34
+ frase research start "your topic"
35
+ frase serp analyze "target keyword"
36
+ frase serp intent "target keyword"
37
+ frase competitive analyze "https://competitor.com/page"
38
+ ```
39
+
40
+ Research tells you what topics to cover, what questions to answer, and what angle will differentiate your content.
41
+
42
+ ### Step 2: Create a Brief (Don't Write from Scratch)
43
+
44
+ **Always create a brief before generating content.** Briefs contain SERP-driven outlines that ensure comprehensive topic coverage.
45
+
46
+ **Via MCP:**
47
+ ```
48
+ 1. Use `create_brief` with:
49
+ - topic: your target keyword or title
50
+ - generate_outline: true (this triggers SERP research and auto-outline)
51
+ - content_type: blog | guide | listicle | comparison | landing | product
52
+ - site_id: your site ID
53
+ - target_language / target_country: for regional targeting
54
+ 2. Poll `get_job_status` with the brief ID until status is "ready"
55
+ 3. Use `get_brief` to retrieve the complete outline with SERP data
56
+ ```
57
+
58
+ **Via CLI:**
59
+ ```bash
60
+ frase brief create "target keyword" --generate-outline --type blog --site-id <id>
61
+ frase brief status <brief-id> # poll until ready
62
+ frase brief get <brief-id> # view full outline
63
+ ```
64
+
65
+ The brief includes: suggested outline, SERP competitor analysis, People Also Ask questions, and AI Overview data.
66
+
67
+ ### Step 3: Generate Content from the Brief
68
+
69
+ **Via MCP:**
70
+ ```
71
+ 1. Use `generate_content` with the brief_id
72
+ 2. Poll `get_job_status` until content generation completes
73
+ 3. Use `get_content` to retrieve the generated article
74
+ ```
75
+
76
+ **Via CLI:**
77
+ ```bash
78
+ frase content create --brief-id <brief-id>
79
+ frase content status <content-id> # poll until ready
80
+ frase content get <content-id>
81
+ ```
82
+
83
+ Content is generated based on the brief's outline, ensuring it covers all identified topics.
84
+
85
+ ### Step 4: Optimize Iteratively (Target Score > 70)
86
+
87
+ **Don't publish without optimizing.** Frase scores content against SERP competitors using SEO + GEO scoring.
88
+
89
+ **Via MCP:**
90
+ ```
91
+ 1. Use `start_optimization` with the content_id
92
+ 2. Wait for analysis, then use `get_optimization` to see suggestions
93
+ 3. Apply high-priority suggestions using `apply_optimization`
94
+ 4. Re-run optimization to check the new score
95
+ 5. Repeat until score >= 70 (or >= 80 for high-value keywords)
96
+ ```
97
+
98
+ **Via CLI:**
99
+ ```bash
100
+ frase optimize start --content-id <content-id>
101
+ frase optimize get <optimization-id>
102
+ frase optimize apply <optimization-id> --suggestion <suggestion-id>
103
+ frase optimize start --content-id <content-id> # re-score
104
+ ```
105
+
106
+ Scoring guidelines:
107
+ - **< 50:** Significant gaps — missing key topics that competitors cover
108
+ - **50-69:** Decent coverage but room for improvement
109
+ - **70-79:** Good — competitive with top-ranking content
110
+ - **80+:** Excellent — likely to outperform most competitors
111
+
112
+ ### Step 5: Publish to CMS
113
+
114
+ Only publish when the optimization score meets your threshold.
115
+
116
+ **Via MCP:**
117
+ ```
118
+ 1. Use `list_cms_connections` with the site_id to check available platforms
119
+ 2. Use `publish_content` with content_id, destination, and site_id
120
+ 3. Confirm the published URL
121
+ ```
122
+
123
+ **Via CLI:**
124
+ ```bash
125
+ frase cms connections --site-id <id>
126
+ frase publish <content-id> --cms frase # or wordpress, webflow, sanity
127
+ ```
128
+
129
+ ### Step 6: Set Up AI Visibility Monitoring (GEO/AEO)
130
+
131
+ After publishing, track how AI search engines reference your content across 8 platforms.
132
+
133
+ **Via MCP:**
134
+ ```
135
+ 1. Use `create_prompt` with prompt_text and target_brand
136
+ 2. Monitors citations across ChatGPT, Perplexity, Claude, Google AI Overviews, Copilot, Grok, DeepSeek, Gemini
137
+ 3. Check results with `get_prompt` and `get_ai_visibility`
138
+ ```
139
+
140
+ **Via CLI:**
141
+ ```bash
142
+ frase aiv prompt create "What is the best tool for content optimization?" --brand "YourBrand" --site-id <id>
143
+ frase aiv overview --site-id <id>
144
+ frase aiv insights --site-id <id>
145
+ ```
146
+
147
+ ## Key Principles
148
+
149
+ 1. **Research before writing** — SERP data drives content quality
150
+ 2. **Briefs before content** — Outlines ensure comprehensive coverage
151
+ 3. **Optimize before publishing** — Score >= 70 is the minimum bar
152
+ 4. **Monitor after publishing** — Track both Google rankings and AI citations
153
+ 5. **Use site_id consistently** — Associate all content with a site for proper organization
154
+
155
+ ## Common Mistakes to Avoid
156
+
157
+ - Generating content without a brief (produces generic, un-optimized content)
158
+ - Publishing without checking the optimization score
159
+ - Skipping AI visibility monitoring (you won't know if AI engines cite you)
160
+ - Not specifying target_language/target_country for non-English markets
@@ -0,0 +1,181 @@
1
+ ---
2
+ name: frase-geo-optimization
3
+ description: Optimize content for AI engine citation (GEO/AEO) using Frase — quotability scoring, content structuring, cross-platform citation analysis, and gap diagnosis. Works via MCP or CLI.
4
+ ---
5
+
6
+ # Frase GEO/AEO Optimization
7
+
8
+ This skill teaches you how to optimize content so AI search engines (ChatGPT, Perplexity, Claude, Google AI Overviews, Copilot, Grok, DeepSeek, Gemini) cite it in their responses. GEO (Generative Engine Optimization) and AEO (Answer Engine Optimization) are the next evolution beyond traditional SEO.
9
+
10
+ **Works with:** Frase MCP server (`@frase/mcp-server`) OR Frase CLI (`@frase/cli`)
11
+
12
+ ## Prerequisites
13
+
14
+ - Frase MCP server connected OR `frase` CLI installed (`npx @frase/cli`)
15
+ - `FRASE_API_KEY` environment variable set (get from https://next.frase.io/settings/api)
16
+ - Published content to optimize (check: `list_content` / `frase content list`)
17
+ - AI Visibility monitoring set up (see `frase-ai-visibility` skill)
18
+
19
+ ## Why GEO/AEO Matters
20
+
21
+ Traditional SEO gets you ranked in Google. GEO/AEO gets you **cited by AI engines**. As users shift to AI-powered search, content that AI engines quote drives increasing traffic and brand awareness.
22
+
23
+ **Key difference:** SEO optimizes for ranking signals. GEO optimizes for **quotability** — making your content easy for AI models to extract, attribute, and cite.
24
+
25
+ ## Workflow
26
+
27
+ ### Step 1: Baseline Your AI Visibility
28
+
29
+ Before optimizing, measure where you stand.
30
+
31
+ **Via MCP:**
32
+ ```
33
+ 1. Use `get_ai_visibility` with site_id for overall metrics
34
+ 2. Use `list_prompts` to see monitored queries
35
+ 3. Note which platforms cite you and which don't
36
+ ```
37
+
38
+ **Via CLI:**
39
+ ```bash
40
+ frase aiv overview --site-id <id>
41
+ frase aiv prompts --site-id <id>
42
+ ```
43
+
44
+ ### Step 2: Identify Citation Gaps
45
+
46
+ **Via MCP:**
47
+ ```
48
+ 1. Use `get_insights` for AI-specific recommendations
49
+ 2. Use `get_competitors` to see who gets cited instead of you
50
+ 3. Categorize gaps:
51
+ - Content gap: topic not covered at all
52
+ - Authority gap: content exists but lacks depth/citations
53
+ - Entity gap: brand not recognized as authoritative
54
+ - Citation gap: content exists but isn't structured for AI
55
+ ```
56
+
57
+ **Via CLI:**
58
+ ```bash
59
+ frase aiv insights --site-id <id>
60
+ frase aiv competitors --site-id <id>
61
+ ```
62
+
63
+ ### Step 3: Optimize Content for Quotability
64
+
65
+ For each piece of content with low GEO scores:
66
+
67
+ **Via MCP:**
68
+ ```
69
+ 1. Use `start_optimization` with the content_id
70
+ 2. Use `get_optimization` to review suggestions
71
+ 3. Focus on GEO-specific improvements:
72
+ a. Add structured claims with citations (e.g., "According to [source], X increases Y by Z%")
73
+ b. Include statistics and data points with sources
74
+ c. Write clear, quotable one-sentence statements
75
+ d. Add FAQ sections with concise 2-3 sentence answers
76
+ e. Use clear H2/H3 headings that match common queries
77
+ f. Add a summary/TL;DR section at the top or bottom
78
+ g. Include comparison tables for "vs" queries
79
+ 4. Apply suggestions using `apply_optimization`
80
+ ```
81
+
82
+ **Via CLI:**
83
+ ```bash
84
+ frase optimize start --content-id <id>
85
+ frase optimize get <optimization-id>
86
+ frase optimize apply <opt-id> --suggestion <sug-id>
87
+ ```
88
+
89
+ ### Step 4: Structure Content for AI Extraction
90
+
91
+ AI engines extract information differently than traditional search. Structure your content with these patterns:
92
+
93
+ **Claim + Evidence pattern:**
94
+ ```
95
+ [Clear statement]. According to [source], [supporting data]. This means [implication].
96
+ ```
97
+
98
+ **FAQ pattern:**
99
+ ```
100
+ ## Frequently Asked Questions
101
+
102
+ ### [Question matching user query]?
103
+ [Concise 2-3 sentence answer with a specific fact or number].
104
+ ```
105
+
106
+ **Comparison pattern:**
107
+ ```
108
+ ## [Product A] vs [Product B]
109
+ | Feature | Product A | Product B |
110
+ |---------|-----------|-----------|
111
+ | [Feature] | [Value] | [Value] |
112
+ ```
113
+
114
+ **Definition pattern:**
115
+ ```
116
+ ## What is [Term]?
117
+ [Term] is [concise definition in one sentence]. [Elaboration with specific details].
118
+ ```
119
+
120
+ ### Step 5: Republish and Monitor
121
+
122
+ **Via MCP:**
123
+ ```
124
+ 1. Use `publish_content` to push optimized content live
125
+ 2. Wait 2-4 weeks for AI engines to re-crawl
126
+ 3. Use `get_ai_visibility` to check for citation changes
127
+ 4. Use `get_alerts` for new/lost citation notifications
128
+ ```
129
+
130
+ **Via CLI:**
131
+ ```bash
132
+ frase publish <content-id> --cms frase
133
+ # Wait 2-4 weeks
134
+ frase aiv overview --site-id <id>
135
+ frase aiv alerts --site-id <id>
136
+ ```
137
+
138
+ ### Step 6: Iterate Across Content Library
139
+
140
+ **Via MCP:**
141
+ ```
142
+ 1. Use `get_optimization_insights` to find patterns across all content
143
+ 2. Prioritize pages by traffic potential × citation gap size
144
+ 3. Batch optimize: start with highest-impact pages first
145
+ 4. Track improvements over time with `get_ai_visibility`
146
+ ```
147
+
148
+ **Via CLI:**
149
+ ```bash
150
+ frase optimize insights --site-id <id>
151
+ ```
152
+
153
+ ## GEO Score Interpretation
154
+
155
+ | Score | Meaning | Action |
156
+ |-------|---------|--------|
157
+ | 70+ | Well-structured for AI citation | Maintain and monitor |
158
+ | 50-69 | Some AI-readiness but gaps exist | Apply GEO suggestions |
159
+ | < 50 | Not structured for AI engines | Major restructuring needed |
160
+
161
+ ## Content Elements That Improve GEO
162
+
163
+ | Element | Impact | Why |
164
+ |---------|--------|-----|
165
+ | Structured claims with sources | High | AI engines prefer citable statements |
166
+ | Statistics and data points | High | Concrete numbers are easy to extract |
167
+ | FAQ sections | High | Direct answer to user queries |
168
+ | Clear H2/H3 headings | Medium | Helps AI identify relevant sections |
169
+ | Comparison tables | Medium | Structured data for "vs" queries |
170
+ | Summary/TL;DR | Medium | Quick extraction point |
171
+ | Lists and bullet points | Medium | Easy to parse and cite |
172
+ | Author credentials | Low-Medium | Signals authority to some AI engines |
173
+
174
+ ## Key Principles
175
+
176
+ 1. **Quotability over keyword density** — write sentences AI engines want to cite
177
+ 2. **Structure over length** — well-organized 1500 words beats unstructured 3000 words
178
+ 3. **Facts over opinions** — AI engines cite verifiable claims with sources
179
+ 4. **Answer the question directly** — don't bury the answer in paragraph 5
180
+ 5. **Multi-format content** — tables, lists, FAQs, and prose give AI multiple extraction points
181
+ 6. **Monitor and iterate** — GEO optimization is ongoing, not one-time