---
name: frase-content-pipeline
description: End-to-end content workflow using Frase — research, brief, generate, optimize, publish, and monitor AI visibility. Works via MCP tools or CLI.
---

# Frase Content Pipeline

This skill teaches you the correct end-to-end content workflow using Frase. Follow these steps in order for best results.

**Works with:** Frase MCP server (`@frase/mcp-server`) OR Frase CLI (`@frase/cli`)

## Prerequisites

- Frase MCP server connected OR `frase` CLI installed (`npx @frase/cli`)
- `FRASE_API_KEY` environment variable set (get from https://next.frase.io/settings/api)
- A Frase site created (check: `list_sites` / `frase sites list`)

## Workflow

### Step 1: Research Before Writing

**Never skip research.** Always start with SERP analysis before creating content.

**Via MCP:**
```
1. Use `start_research` with your topic to gather AI-powered insights
2. Use `analyze_serp` with your target keyword to see what ranks
3. Use `get_search_intent` to understand query intent (informational, transactional, etc.)
4. Use `analyze_competitors` to identify content gaps in top-ranking pages
```

**Via CLI:**
```bash
frase research start "your topic"
frase serp analyze "target keyword"
frase serp intent "target keyword"
frase competitive analyze "https://competitor.com/page"
```

Research tells you what topics to cover, what questions to answer, and what angle will differentiate your content.

### Step 2: Create a Brief (Don't Write from Scratch)

**Always create a brief before generating content.** Briefs contain SERP-driven outlines that ensure comprehensive topic coverage.

**Via MCP:**
```
1. Run `start_research` with your topic and wait for the research session to complete
   (poll `get_job_status` with type "research")
2. Use `create_brief` with:
   - research_session_id: the completed research session's ID (required — briefs
     are always created from research)
   - content_type: pick the most specific of blog_post, page, faq, glossary,
     comparison, pillar, how_to, landing, listicle, case_study, tutorial, news,
     product_update, data_report, event, resource, alternative, tool_review
     (default: blog_post)
   - target_word_count: optional; omit for the content type's recommended length
3. Poll `get_job_status` with the brief ID until status is "ready"
4. Use `get_brief` to retrieve the complete outline with SERP data
```

**Via CLI:**
```bash
frase research start "your topic"      # then wait for completion
frase brief create "target keyword" --type blog_post --site-id <id>
frase brief status <brief-id>          # poll until ready
frase brief get <brief-id>             # view full outline
```

The brief includes: suggested outline, SERP competitor analysis, People Also Ask questions, and AI Overview data.

### Step 3: Generate Content from the Brief

**Via MCP:**
```
1. Use `generate_content` with the brief_id
2. Poll `get_job_status` until content generation completes
3. Use `get_content` to retrieve the generated article
```

**Via CLI:**
```bash
frase content create --brief-id <brief-id>
frase content status <content-id>       # poll until ready
frase content get <content-id>
```

Content is generated based on the brief's outline, ensuring it covers all identified topics.

### Step 4: Optimize Iteratively (Target Score > 70)

**Don't publish without optimizing.** Frase scores content against SERP competitors using SEO + GEO scoring.

**Via MCP:**
```
1. Use `start_optimization` with the content_id
2. Wait for analysis, then use `get_optimization` to see suggestions
3. Apply high-priority suggestions using `apply_optimization`
4. Re-run optimization to check the new score
5. Repeat until score >= 70 (or >= 80 for high-value keywords)
```

**Via CLI:**
```bash
frase optimize start --content-id <content-id>
frase optimize get <optimization-id>
frase optimize apply <optimization-id> --suggestion <suggestion-id>
frase optimize start --content-id <content-id>   # re-score
```

Scoring guidelines:
- **< 50:** Significant gaps — missing key topics that competitors cover
- **50-69:** Decent coverage but room for improvement
- **70-79:** Good — competitive with top-ranking content
- **80+:** Excellent — likely to outperform most competitors

### Step 5: Publish to CMS

Only publish when the optimization score meets your threshold.

**Via MCP:**
```
1. Use `list_cms_connections` with the site_id to check available platforms
2. Use `publish_content` with content_id, destination, and site_id
3. If it returns rules_blocked, run `evaluate_rules` with the content_id, fix
   error-severity violations (warning-only refusals accept force: true), retry
4. Confirm the published URL
```

**Via CLI:**
```bash
frase cms connections --site-id <id>
frase publish <content-id> --cms frase   # or wordpress, webflow, sanity
```

### Step 6: Set Up AI Visibility Monitoring (GEO/AEO)

After publishing, track how AI search engines reference your content across 8 platforms.

**Via MCP:**
```
1. Use `create_prompt` with prompt_text, target_brand, and required site_id from `list_sites` (ask the user to select a site if unknown)
2. Monitors citations across ChatGPT, Perplexity, Claude, Google AI Overviews, Copilot, Grok, DeepSeek, Gemini
3. Check results with `get_prompt` and `get_ai_visibility`
```

**Via CLI:**
```bash
frase aiv prompt create "What is the best tool for content optimization?" --brand "YourBrand" --site-id <id>
frase aiv overview --site-id <id>
frase aiv insights --site-id <id>
```

## Key Principles

1. **Research before writing** — SERP data drives content quality
2. **Briefs before content** — Outlines ensure comprehensive coverage
3. **Optimize before publishing** — Score >= 70 is the minimum bar, and content rules are enforced server-side at publish (`rules_blocked`)
4. **Monitor after publishing** — Track both Google rankings and AI citations
5. **Use site_id consistently** — Associate all content with a site for proper organization

## Common Mistakes to Avoid

- Generating content without a brief (produces generic, un-optimized content)
- Publishing without checking the optimization score
- Skipping AI visibility monitoring (you won't know if AI engines cite you)
- Not specifying target_language/target_country for non-English markets
