@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.
package/README.md ADDED
@@ -0,0 +1,51 @@
1
+ # @frase/agent-skills
2
+
3
+ Agent skills for the [Frase](https://frase.io) SEO & GEO platform. These skills teach AI assistants (Claude Code, Cursor, Windsurf, Copilot, and 18+ other tools) how to use Frase effectively for content workflows.
4
+
5
+ ## What are Agent Skills?
6
+
7
+ Agent Skills are markdown files that load into an AI assistant's context, teaching it domain-specific knowledge about how to use your tools correctly. Unlike MCP tools (which provide the _ability_ to call APIs), skills provide the _knowledge_ of how to use them together effectively.
8
+
9
+ ## Available Skills
10
+
11
+ | Skill | Description |
12
+ |-------|-------------|
13
+ | `frase-content-pipeline` | End-to-end content workflow: research, brief, write, optimize, publish, monitor |
14
+ | `frase-seo-audit` | Run and interpret SEO audits, prioritize fixes by traffic impact |
15
+ | `frase-ai-visibility` | Track and improve brand visibility across AI search engines |
16
+ | `frase-content-optimization` | Score, optimize, and improve content for SEO and GEO performance |
17
+
18
+ ## Installation
19
+
20
+ ### Via skills.sh (recommended)
21
+
22
+ ```bash
23
+ npx skills add frase/frase-skills
24
+ ```
25
+
26
+ This installs all Frase skills into your AI assistant's context.
27
+
28
+ ### Manual
29
+
30
+ Copy any `.md` file from this package into your project's `.claude/` directory (for Claude Code) or equivalent context directory for your AI tool.
31
+
32
+ ## Prerequisites
33
+
34
+ These skills work best with the [Frase MCP Server](https://www.npmjs.com/package/@frase/mcp-server) connected:
35
+
36
+ ```bash
37
+ # Claude Code
38
+ claude mcp add frase -- npx -y @frase/mcp-server --api-key sk_live_your_key
39
+
40
+ # Cursor — add to .cursor/mcp.json
41
+ # Windsurf — add to ~/.codeium/windsurf/mcp_config.json
42
+ # VS Code Copilot — add to .vscode/settings.json
43
+ ```
44
+
45
+ Get your API key at [next.frase.io/settings/api-keys](https://next.frase.io/settings/api-keys).
46
+
47
+ ## Related
48
+
49
+ - [@frase/mcp-server](https://www.npmjs.com/package/@frase/mcp-server) — MCP server with 63 tools
50
+ - [Frase API Docs](https://next.frase.io/api/docs) — Interactive API reference
51
+ - [OpenAPI Spec](https://next.frase.io/openapi.json) — Machine-readable API schema
@@ -0,0 +1,185 @@
1
+ ---
2
+ name: frase-ai-visibility
3
+ description: Track and improve brand visibility across 8 AI search engines (ChatGPT, Perplexity, Claude, Google AI Overviews, Copilot, Grok, DeepSeek, Gemini) using Frase. Works via MCP or CLI.
4
+ ---
5
+
6
+ # Frase AI Visibility (GEO/AEO)
7
+
8
+ This skill teaches you how to track and improve brand visibility across AI search engines using Frase — covering GEO (Generative Engine Optimization) and AEO (Answer Engine Optimization).
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 published content
17
+ - Professional plan or higher (for multi-platform tracking)
18
+
19
+ ## What is AI Visibility?
20
+
21
+ AI search engines increasingly answer user queries directly instead of showing links. **AI Visibility** tracks whether these platforms cite YOUR content in their responses.
22
+
23
+ Frase monitors citations across **8 platforms:**
24
+ - ChatGPT
25
+ - Perplexity
26
+ - Claude
27
+ - Google AI Overviews
28
+ - Microsoft Copilot
29
+ - Grok
30
+ - DeepSeek
31
+ - Gemini
32
+
33
+ ## Workflow
34
+
35
+ ### Step 1: Check Current Visibility
36
+
37
+ **Via MCP:**
38
+ ```
39
+ 1. Use `get_ai_visibility` with site_id to see overall metrics:
40
+ - Citation count across platforms
41
+ - Share of voice vs competitors
42
+ - Trend direction (improving, declining, stable)
43
+ ```
44
+
45
+ **Via CLI:**
46
+ ```bash
47
+ frase aiv overview --site-id <id>
48
+ ```
49
+
50
+ ### Step 2: Set Up Monitoring
51
+
52
+ Track specific keywords and queries that matter to your business.
53
+
54
+ **Via MCP:**
55
+ ```
56
+ 1. Use `list_prompts` to check existing monitored queries
57
+ 2. Use `create_prompt` with:
58
+ - prompt_text: a natural question users might ask AI engines (required, min 10 chars)
59
+ Example: "What is the best SEO tool for content optimization?"
60
+ - target_brand: your brand name to track visibility for (required)
61
+ Example: "Frase"
62
+ - frequency: "daily" (default), "weekly", or "manual"
63
+ - platforms: optionally specify which AI platforms to track
64
+ 3. Frase monitors this query across selected AI platforms
65
+ 4. It tracks whether your brand/content is cited in responses
66
+ ```
67
+
68
+ **Via CLI:**
69
+ ```bash
70
+ frase aiv prompt create "What is the best SEO tool for content optimization?" --brand "Frase" --site-id <id>
71
+ frase aiv prompts --site-id <id> # list all monitored prompts
72
+ ```
73
+
74
+ Monitor at least:
75
+ - Your primary product/service keywords
76
+ - Comparison queries ("X vs Y")
77
+ - "Best of" and recommendation queries
78
+ - Questions your target audience asks
79
+
80
+ ### Step 3: Analyze Results
81
+
82
+ **Via MCP:**
83
+ ```
84
+ 1. Use `get_prompt` with a prompt ID to see:
85
+ - Which AI platforms cite you (and which don't)
86
+ - What competitors are cited instead
87
+ - The exact text AI engines use when citing you
88
+ 2. Use `get_insights` for actionable recommendations
89
+ 3. Use `get_competitors` to see competitor visibility
90
+ ```
91
+
92
+ **Via CLI:**
93
+ ```bash
94
+ frase aiv insights --site-id <id>
95
+ frase aiv competitors --site-id <id>
96
+ ```
97
+
98
+ ### Step 4: Set Up Alerts
99
+
100
+ **Via MCP:**
101
+ ```
102
+ 1. Use `get_alerts` to see alerts for:
103
+ - New citations (you started appearing in AI responses)
104
+ - Lost citations (you were dropped from AI responses)
105
+ - Competitor changes (competitors gained or lost visibility)
106
+ ```
107
+
108
+ **Via CLI:**
109
+ ```bash
110
+ frase aiv alerts --site-id <id>
111
+ ```
112
+
113
+ ### Step 5: Improve Visibility (GEO Optimization)
114
+
115
+ When AI engines don't cite your content, optimize for GEO:
116
+
117
+ **Via MCP:**
118
+ ```
119
+ 1. Use `start_optimization` on the relevant content
120
+ 2. Focus on GEO-specific suggestions:
121
+ - Add structured claims with citations
122
+ - Include statistics and data points
123
+ - Use clear, quotable statements
124
+ - Add FAQ sections with concise answers
125
+ - Structure content with clear headings and summaries
126
+ 3. Republish optimized content using `publish_content`
127
+ 4. Monitor changes in AI citations over the following weeks
128
+ ```
129
+
130
+ **Via CLI:**
131
+ ```bash
132
+ frase optimize start --content-id <id>
133
+ frase optimize get <optimization-id> # review GEO suggestions
134
+ frase optimize apply <opt-id> --suggestion <sug-id>
135
+ frase publish <content-id> --cms frase # republish after optimization
136
+ ```
137
+
138
+ ### Step 6: Compare Against Competitors
139
+
140
+ **Via MCP:**
141
+ ```
142
+ 1. Use `get_competitors` to see who appears in AI responses for your keywords
143
+ 2. Analyze what competitors do differently:
144
+ - Content structure and formatting
145
+ - Citation density and source quality
146
+ - Freshness and update frequency
147
+ 3. Apply insights to your own content strategy
148
+ ```
149
+
150
+ **Via CLI:**
151
+ ```bash
152
+ frase aiv competitors --site-id <id>
153
+ frase competitive analyze "https://competitor.com/page"
154
+ ```
155
+
156
+ ## Key Principles
157
+
158
+ 1. **Monitor continuously** — AI search results change frequently
159
+ 2. **Track competitors** — understand who gets cited and why
160
+ 3. **Optimize for citations** — structure content so AI engines can quote it
161
+ 4. **Multi-platform tracking** — each AI engine has different citation preferences
162
+ 5. **Patience required** — AI search changes take weeks to appear as AI engines re-crawl
163
+ 6. **GEO + SEO together** — high SEO scores improve discoverability, high GEO scores improve citability
164
+
165
+ ## AI Platform Differences
166
+
167
+ | Platform | Citation Style | What It Favors |
168
+ |----------|---------------|----------------|
169
+ | ChatGPT | Inline citations with links | Authoritative, well-structured content |
170
+ | Perplexity | Explicit source attribution | Fresh content, multiple corroborating sources |
171
+ | Claude | Context-based references | Detailed, nuanced content with clear claims |
172
+ | Google AI Overviews | Extracted snippets | Concise answers, structured data |
173
+ | Copilot | Link cards | Microsoft ecosystem content, recent sources |
174
+ | Grok | Inline references | Real-time data, trending topics |
175
+ | DeepSeek | Source attribution | Technical depth, data-heavy content |
176
+ | Gemini | Knowledge panel style | Structured data, entity-rich content |
177
+
178
+ ## Gap Types to Diagnose
179
+
180
+ When your content isn't getting cited, identify the gap type:
181
+
182
+ - **Content gap** — topic not covered at all → create new content
183
+ - **Authority gap** — content exists but lacks depth/citations → add data, sources, expert quotes
184
+ - **Entity gap** — brand not recognized as authoritative → build topical authority with clusters
185
+ - **Citation gap** — content exists but isn't structured for AI → restructure with claims, FAQs, summaries
@@ -0,0 +1,138 @@
1
+ ---
2
+ name: frase-atomization
3
+ description: Break long-form content into atomic pieces (social posts, email snippets, ad copy, threads) using Frase — batch atomize, export, and repurpose across channels. Works via MCP or CLI.
4
+ ---
5
+
6
+ # Frase Content Atomization
7
+
8
+ This skill teaches you how to break long-form content into reusable atomic pieces using Frase — social posts, email snippets, ad copy, Twitter/X threads, LinkedIn posts, and more.
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 or draft content to atomize (use `list_content` / `frase content list`)
17
+
18
+ ## What is Content Atomization?
19
+
20
+ Atomization breaks a single piece of long-form content (article, guide, report) into 10-30+ smaller pieces optimized for different channels. One 2000-word article becomes social posts, email snippets, ad copy, and more — without writing from scratch.
21
+
22
+ ## Workflow
23
+
24
+ ### Step 1: Select Content to Atomize
25
+
26
+ **Via MCP:**
27
+ ```
28
+ 1. Use `list_content` to find published content
29
+ 2. Choose high-performing or evergreen pieces — they produce the best atoms
30
+ 3. Note the content_id
31
+ ```
32
+
33
+ **Via CLI:**
34
+ ```bash
35
+ frase content list --site-id <id>
36
+ ```
37
+
38
+ ### Step 2: Run Atomization
39
+
40
+ **Via MCP:**
41
+ ```
42
+ 1. Use `create_atomization` with:
43
+ - content_id: the content to break apart (required)
44
+ - formats: array of desired output types (optional)
45
+ Options: social, email, ad, thread, summary
46
+ - tone: adjust tone for atoms (optional)
47
+ Options: professional, casual, technical
48
+ 2. Poll `get_job_status` until atomization completes
49
+ ```
50
+
51
+ **Via CLI:**
52
+ ```bash
53
+ frase atomize start <content-id> --type <type>
54
+ # Types: linkedin_carousel, twitter_thread, newsletter, instagram_carousel
55
+ frase job status <job-id> # poll until ready
56
+ ```
57
+
58
+ ### Step 3: Review Atoms
59
+
60
+ **Via MCP:**
61
+ ```
62
+ 1. Use `get_atomization` with the atomization ID
63
+ 2. Review generated atoms:
64
+ - Each atom has a unique ID, format type, and content
65
+ - Atoms are grouped by format (social, email, ad, etc.)
66
+ - Each includes suggested platform and character count
67
+ ```
68
+
69
+ **Via CLI:**
70
+ ```bash
71
+ frase atomize get <atomization-id>
72
+ frase atomize get <atomization-id> --json # full details
73
+ ```
74
+
75
+ ### Step 4: Export Atoms
76
+
77
+ **Via MCP:**
78
+ ```
79
+ 1. Use `export_atomization` with:
80
+ - id: the atomization ID
81
+ - format: export format (csv, json, markdown)
82
+ 2. Use exported atoms in your social media scheduler, email tool, or ad platform
83
+ ```
84
+
85
+ **Via CLI:**
86
+ ```bash
87
+ frase atomize export <atomization-id> --format csv
88
+ frase atomize export <atomization-id> --format markdown
89
+ ```
90
+
91
+ ### Step 5: Batch Atomize Multiple Articles
92
+
93
+ For content libraries, atomize in bulk:
94
+
95
+ **Via MCP:**
96
+ ```
97
+ 1. Use `batch_atomize` with:
98
+ - content_ids: array of content IDs to atomize
99
+ - formats: desired output types (applied to all)
100
+ 2. Poll `get_job_status` for the batch job
101
+ 3. Retrieve individual results with `get_atomization`
102
+ ```
103
+
104
+ **Via CLI:**
105
+ ```bash
106
+ frase atomize batch --content-ids <id1>,<id2>,<id3>
107
+ frase job status <batch-job-id>
108
+ ```
109
+
110
+ ## Atom Types
111
+
112
+ ### MCP Formats
113
+
114
+ | Format | Best For | Typical Length |
115
+ |--------|----------|---------------|
116
+ | social | Twitter/X, Facebook, LinkedIn | 140-600 chars |
117
+ | email | Newsletter sections | 100-200 words |
118
+ | ad | Google/Meta ad copy | 30-150 chars |
119
+ | thread | Twitter/X threads | 5-10 tweets |
120
+ | summary | Executive summaries | 2-3 sentences |
121
+
122
+ ### CLI Types
123
+
124
+ | Type | Best For | Output |
125
+ |------|----------|--------|
126
+ | linkedin_carousel | LinkedIn carousel posts | Multi-slide content |
127
+ | twitter_thread | Twitter/X threads | Tweet-sized segments |
128
+ | newsletter | Email newsletters | Newsletter-ready sections |
129
+ | instagram_carousel | Instagram carousel posts | Visual-first content |
130
+
131
+ ## Key Principles
132
+
133
+ 1. **Atomize high-performers first** — articles with proven engagement produce better atoms
134
+ 2. **Match tone to platform** — professional for LinkedIn, casual for Twitter, concise for ads
135
+ 3. **Batch for efficiency** — atomize 10+ articles at once to build a content bank
136
+ 4. **Export and schedule** — use CSV exports with your social media scheduler
137
+ 5. **Don't post all atoms at once** — spread across days/weeks for sustained engagement
138
+ 6. **Track which atoms perform** — identify formats and topics that resonate per platform
@@ -0,0 +1,156 @@
1
+ ---
2
+ name: frase-cms-publishing
3
+ description: Multi-platform publishing using Frase — FraseCMS, WordPress, Webflow, Sanity, scheduling, auto-optimization, and content versioning. Works via MCP or CLI.
4
+ ---
5
+
6
+ # Frase CMS Publishing
7
+
8
+ This skill teaches you how to publish content across multiple CMS platforms using Frase, including scheduling, auto-optimization (watchdog), and content versioning.
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 at least one CMS connection (check: `list_cms_connections` / `frase cms connections`)
17
+
18
+ ## Supported CMS Platforms
19
+
20
+ | Platform | Connection Type | Features |
21
+ |----------|----------------|----------|
22
+ | FraseCMS | Built-in | Subdomain, custom domain, reverse proxy hosting |
23
+ | WordPress | REST API | Posts, pages, Yoast/RankMath SEO meta support |
24
+ | Webflow | API | Collections, asset management |
25
+ | Sanity | API | Document types, custom schemas |
26
+
27
+ ## Workflow
28
+
29
+ ### Step 1: Check CMS Connections
30
+
31
+ **Via MCP:**
32
+ ```
33
+ 1. Use `list_cms_connections` with site_id
34
+ 2. Review connected platforms and their status
35
+ 3. If no connections exist, set up via Frase dashboard or CLI
36
+ ```
37
+
38
+ **Via CLI:**
39
+ ```bash
40
+ frase cms connections --site-id <id>
41
+ ```
42
+
43
+ ### Step 2: Set Up a CMS Connection (if needed)
44
+
45
+ **Via CLI:**
46
+ ```bash
47
+ frase cms setup --site-id <id> --provider wordpress --config '{"url":"https://yoursite.com","api_key":"wp_key"}'
48
+ frase cms setup --site-id <id> --provider frase
49
+ frase cms setup --site-id <id> --provider webflow --config '{"api_token":"wf_token","site_id":"wf_site"}'
50
+ frase cms setup --site-id <id> --provider sanity --config '{"project_id":"proj","dataset":"production","token":"sk_token"}'
51
+ ```
52
+
53
+ ### Step 3: Publish Content
54
+
55
+ Only publish content that meets your optimization threshold (score >= 70 recommended).
56
+
57
+ **Via MCP:**
58
+ ```
59
+ 1. Use `publish_content` with:
60
+ - content_id: the content to publish (required)
61
+ - destination: target CMS (frase_cms, wordpress, webflow, sanity)
62
+ - site_id: your site ID
63
+ - scheduled_at: ISO date for future publishing (optional)
64
+ 2. Confirm the published URL in the response
65
+ ```
66
+
67
+ **Via CLI:**
68
+ ```bash
69
+ frase publish <content-id> --cms frase --site-id <id>
70
+ frase publish <content-id> --cms wordpress --site-id <id>
71
+ frase publish <content-id> --cms webflow --site-id <id>
72
+ # Scheduled publishing:
73
+ frase publish <content-id> --cms frase --site-id <id> --schedule "2026-04-01T09:00:00Z"
74
+ ```
75
+
76
+ ### Step 4: Browse Published Content
77
+
78
+ **Via CLI:**
79
+ ```bash
80
+ frase cms posts --connection-id <connection-id>
81
+ frase cms posts --connection-id <connection-id> --limit 50
82
+ ```
83
+
84
+ ### Step 5: Enable Auto-Optimization (Watchdog)
85
+
86
+ Frase's watchdog monitors published content for decay signals and auto-applies safe optimization suggestions.
87
+
88
+ **Decay signals monitored:**
89
+ - Content age (staleness)
90
+ - Traffic trend (declining visits)
91
+ - Ranking trend (dropping positions)
92
+ - Competitor activity (new competing content)
93
+
94
+ **Safe auto-apply actions:**
95
+ - Schema markup additions
96
+ - Keyword optimization in headings/meta
97
+ - Content enhancement suggestions
98
+ - Internal link additions
99
+
100
+ **Via MCP:**
101
+ ```
102
+ 1. Use `get_auto_optimization_status` with site_id to check current status
103
+ 2. Use `toggle_auto_optimization` with:
104
+ - site_id: your site ID
105
+ - enabled: true to enable, false to disable
106
+ 3. Watchdog runs automatically and creates optimization tasks
107
+ 4. Content is auto-snapshotted before any changes (enables undo)
108
+ ```
109
+
110
+ **Via CLI:**
111
+ ```bash
112
+ frase health overview --site-id <id> # includes auto-optimization status
113
+ ```
114
+
115
+ ### Step 6: FraseCMS Configuration
116
+
117
+ For FraseCMS-hosted sites, configure hosting mode:
118
+
119
+ | Mode | How It Works | Best For |
120
+ |------|-------------|----------|
121
+ | Subdomain | `yourblog.frase.site` | Quick setup, testing |
122
+ | Custom domain | `blog.yoursite.com` | Professional sites |
123
+ | Reverse proxy | Content served at `yoursite.com/blog/*` | SEO (keeps domain authority) |
124
+
125
+ ## Publishing Checklist
126
+
127
+ Before publishing any content, verify:
128
+
129
+ 1. **Optimization score >= 70** (or your target threshold)
130
+ ```bash
131
+ frase optimize start --content-id <id>
132
+ frase optimize get <optimization-id>
133
+ ```
134
+
135
+ 2. **Rules pass** (if using content rules)
136
+ ```bash
137
+ frase rules evaluate --content-id <id> --rule-set-id <rule-set-id>
138
+ ```
139
+
140
+ 3. **Meta tags set** (title, description)
141
+
142
+ 4. **Internal links included** (link to related content)
143
+
144
+ 5. **CMS connection active**
145
+ ```bash
146
+ frase cms connections --site-id <id>
147
+ ```
148
+
149
+ ## Key Principles
150
+
151
+ 1. **Optimize before publishing** — never publish content below your score threshold
152
+ 2. **Use scheduling** — queue content for optimal publish times (cron publishes every 5 minutes)
153
+ 3. **Enable auto-optimization** — let watchdog catch content decay early
154
+ 4. **Version snapshots** — Frase auto-snapshots before changes, enabling undo
155
+ 5. **One source of truth** — manage all publishing through Frase for consistent tracking
156
+ 6. **Monitor after publishing** — set up AI visibility tracking for published content