The core loop is clear: read the pages that rank for a keyword, pull the headings and questions they share, build a brief, draft against it and publish. An agent with a SERP API key and an LLM writes that in a weekend. The gaps are data and plumbing: search and ranking history, a weekly sample of what ChatGPT or Perplexity say about your brand (each run costs money), and publishing with approvals to a CMS. A personal build keeps the brief and draft and loses the monitoring layer.
Before you buildFrase has no free plan, only a 7-day trial, so Starter at $49 is the cheapest way to see whether the audit and AI-visibility parts matter to you before you build the brief tool.
Build me a personal SEO brief-and-draft tool to replace Frase. Requirements: - Node.js 22 + TypeScript: Fastify with htmx pages on http://127.0.0.1:4940; storage in better-sqlite3 at ./data/briefs.db. - Input: a target keyword, country and language. Fetch the top 10 organic results through a SERP API (SERP_API_KEY and SERP_API_URL in .env) and cache each answer for 7 days. - Page reading: download each result with undici, extract the main text with @mozilla/readability and jsdom, and store title, H1-H3 headings, word count and the "people also ask" questions when the SERP API returns them. Respect robots.txt and wait 2 seconds between requests to the same host. - Brief: merge headings across results, rank topics by how many pages cover them, list the common questions, the median and range of word counts, and up to 10 terms that appear in at least 4 pages; show it as an editable outline. - Draft: send the brief, my brand notes (./brand.md) and the outline to an OpenAI-compatible model from .env and stream the article into a Markdown editor. - Coverage check after every save: how many brief topics and questions the draft covers, its word count against the median, and the terms still missing. Label it a coverage check, never a ranking prediction. Log SERP calls and model tokens per brief on the page. - Publish: export Markdown with front matter, and optionally create a WordPress draft over the REST API with an application password from .env; never publish live. - Single user. No accounts, no telemetry, local-first: only the SERP API, the pages you fetch and the model call leave the machine. - Out of scope: rank tracking, AI-engine visibility monitoring, site audits, team seats. - README: the .env keys, and a plain note that the coverage check says nothing about whether the page will rank.
Opens your agent with the prompt filled in, you press enter. Or copy it and paste it into an empty folder.
The first prompt builds the core. Run these one at a time in the same folder to grow it into your own Frase.
Add a refresh mode to the SEO brief tool in this folder. Requirements: - Take a URL I own plus its target keyword; fetch the page, build the usual brief from the current top 10 (skipping my own URL) and diff the page against it. - List topics and questions the page lacks, headings that are much shorter than the competitors' median section, and facts with a year older than the current one. - Draft replacement sections for the gaps only, shown as suggestions beside the existing text. - Never overwrite the live page; export the suggestions as Markdown. Update the README.
Add a Search Console importer to the SEO brief tool in this folder. Requirements: - Import the CSV exported from Search Console's Performance report (queries and pages, with clicks, impressions, CTR and position); no OAuth, just a file upload. - Flag queries with high impressions and low CTR, queries in positions 8-20, and question-style queries (who, what, how, why, can). - Group similar queries by shared words and show each group with the page that ranks. - A button that creates a brief from a group's top query. Update the README.
Add internal link suggestions to the SEO brief tool in this folder. Requirements: - Read my sitemap.xml (SITEMAP_URL in .env), fetch each page politely and store title, headings and main text in SQLite. - For a draft, suggest up to 8 existing pages to link to, ranked by TF-IDF overlap with the draft, with the exact sentence in the draft that would carry each link. - Skip pages already linked and never suggest the page being written. - Apply a suggestion with one click as a Markdown link. Update the README.
Add a small AI answer check to the SEO brief tool in this folder. Requirements: - A list of up to 20 prompts I care about and my domain and brand name in settings. - Once a week (node-cron), send each prompt to a model API that can search the web, store the answer and the URLs it cites, and flag whether my domain or brand appears. - Show a table of prompts against the last 8 weeks, with the cost of each run. - Label the page "a small sample, not a measurement" and keep the prompts and answers local. - Update the README with the cost per run.
Content teams pay to keep one loop running without stitching tools together: the audit finds gaps, the agent drafts in the site's voice, publishing happens from the same place and monitoring says what to fix next. The MCP server and CLI are on every plan, so the loop can also be driven from Claude or Cursor.
Estimate · Costs are per use: one SERP API call per keyword and LLM tokens per draft. A site publishing a handful of articles a month should land well under Frase Starter, but price your SERP API before relying on that. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| Starter | $49 | $39 | 1 seat, 1 site, 10 articles and 50 audit pages a month, 10 Content Guard pages, 50 AI Visibility prompts (ChatGPT and Google AI), 25 AI generations, 5,000 API, MCP or CLI requests a month. |
| Professional | $129 | $103 | 3 seats included, 5 sites, 40 articles and 250 audit pages a month, 75 Content Guard pages, 200 AI prompts adding Perplexity, content calendar, internal linking suggestions, 3 months of history. |
| Scale | $299 | $239 | 5 seats included, up to 10 sites, 100 articles and 1,000 audit pages a month, 300 Content Guard pages, 500 AI prompts adding Claude and Gemini, client-ready exportable reports, 12 months of history. |
| Enterprise | custom | — | White-label reports and a client portal, SSO and SAML, dedicated account manager, SLA, custom API access, two years of history. |
No free plan: a 7-day trial on Professional's feature set, no card needed, capped at 5 articles, 50 audit pages, 25 AI prompts and 3 seats.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: AI Visibility tracking of your brand across ChatGPT, Perplexity, Claude, Gemini and Google AI, A site audit that ranks fixes by impact, with Search Console data behind it.
About $49 a month on the Starter plan, $588 a year (checked 2026-10-19).
AI Visibility tracking of your brand across ChatGPT, Perplexity, Claude, Gemini and Google AI; A site audit that ranks fixes by impact, with Search Console data behind it; Content Guard: watching published pages for ranking drops and drafting revisions; One-click publishing to WordPress, Webflow, Sanity or Wix, with an approval queue; Frase Answers, the on-site widget that captures visitor questions. If any of those matter to you, keep paying.
Yes: Elmo (open source), DispatchSEO (open source), SerpBear (open source).