@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 +51 -0
- package/frase-ai-visibility/SKILL.md +185 -0
- package/frase-atomization/SKILL.md +138 -0
- package/frase-cms-publishing/SKILL.md +156 -0
- package/frase-competitive-intelligence/SKILL.md +193 -0
- package/frase-content-optimization/SKILL.md +155 -0
- package/frase-content-pipeline/SKILL.md +160 -0
- package/frase-geo-optimization/SKILL.md +181 -0
- package/frase-playbook-automation/SKILL.md +181 -0
- package/frase-seo-audit/SKILL.md +145 -0
- package/package.json +44 -0
- package/skills.json +77 -0
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
|