The core of Surfer is a loop you can build: take a keyword, pull the top results, extract their text, count the terms and headings they share, and show a live score while you write. With a SERP API and a page fetcher an agent does that in a weekend. What stays out of reach is what makes the score worth trusting: a model tuned on ranking data, reliable fetching of pages that block bots, support for many languages, and the Google Docs and WordPress connectors. A home-built score is a coverage heuristic that helps with briefs and drafts, not a promise about rankings.
Before you buildSurfer shows a Start for Free button but states no limits, so try it before paying. For one article a month, the free standalone tools may be enough.
Build me a content optimizer to replace Surfer SEO for my own articles. Requirements: - Node.js 22 + TypeScript: a Fastify server and a small React editor built with Vite (CodeMirror 6 for the text). `npm start` serves http://localhost:4800. - Storage: better-sqlite3 in ./data/optimizer.db: documents (keyword, country, language, markdown draft) and analyses (one per keyword and date) with the competitor pages, terms and scores. - SERP: fetch the top 10 organic results for a keyword from the DataForSEO Google Organic SERP API (DATAFORSEO_LOGIN and DATAFORSEO_PASSWORD in .env); skip video, shopping and forum results. - Page analysis: download each result with `fetch`, extract text and headings with `jsdom` and `@mozilla/readability`, and count words and headings. Mark a page failed when it returns almost no text; do not retry with a headless browser. - Terms: with `natural`, build 1 to 3 word phrases, drop stop words, keep phrases used by at least 4 competing pages, and store the median count per 1,000 words with a min-max range. - Score: 0 to 100 = coverage of the term list weighted by how many competitors use each term, with a penalty above twice the maximum count. Also show a word-count target and a heading outline from the competitor median. The formula lives in one file with tests. - Editor: a live term list with used and target counts that updates 300 ms after you stop typing; clicking a term jumps to where it appears. - Optional AI help: send the draft and the missing terms to an OpenAI-compatible endpoint (LLM_BASE_URL, LLM_API_KEY, LLM_MODEL in .env) and show suggested paragraphs as a diff to accept. - Export: copy as markdown or HTML. - Single user. No accounts, no telemetry, local-first. Outbound calls: DataForSEO, the competitor pages and, if enabled, your LLM endpoint. - Out of scope: Google Docs and WordPress plugins, topical maps, site audits, AI visibility tracking. - README: the cost of one analysis, a warning that the score is a coverage heuristic that is not validated against rankings, and that some competitor pages block fetching.
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 Surfer SEO.
Add a page audit to the content optimizer in this folder. Requirements: - A command `optimizer audit <url> --keyword "<term>"` and a form in the UI that fetch the live page, extract its text with the same Readability step, and run the existing scoring. - Print the score, the 15 most important missing terms, terms used more than twice the maximum, and the word count against the competitor median. - Save each audit with its date so a re-run after edits shows the change in score. - If the page fetch fails, say so and stop; never score an empty page. - Update the README.
Add brief export to the content optimizer in this folder. Requirements: - From an analysis, generate one markdown file: target word count, the median heading outline, the term table with min, target and max counts, and the competitor URLs. - Add the People-also-ask questions from the stored SERP data as a list to answer. - A `--docx` flag writes the same brief as a Word file with `docx`. - Briefs go to ./briefs/<keyword>-<date>.* and are never overwritten. - Update the README.
Add a score-versus-rank check to the content optimizer in this folder. Requirements: - Import Search Console data (`googleapis`, service account JSON path in .env): average position per page and query for the last 90 days. - For every saved audit whose URL has Search Console data, store the score and the position. - A page that scatter-plots score against position with uPlot, shows the correlation coefficient and the number of pages, and says "not enough data" below 30 pages. - Never present the result as proof; label it as your own site's data. - Update the README.
Writers get a concrete target and a live score without learning SEO, and editors can sign off on a number. Teams also get Google Docs and WordPress hooks, brand voice and planning tools in one place, which a script in a folder does not give them.
Estimate · DataForSEO lists a Standard-queue SERP at $0.0006, so 50 analyses a month cost pennies. Optional LLM suggestions add a few cents per draft. The build is token usage on your agent plan.
| Plan | Monthly | Annual, per month | What you get |
|---|---|---|---|
| AI Search Analytics | $95 | $82 | AI visibility only: 50 prompts tracked daily, mention gap and brand sentiment, 5 brand spaces. |
| Discovery | $59 | $49 | Create or optimize 10 documents a month (120 up front on yearly), track 10 pages, AI SEO guidelines, the Surfy assistant and a Humanizer. |
| Standard | $119 | $99 | 360 documents on yearly, 25 AI prompts tracked weekly, integrations, 1-click content optimization, team collaboration, plagiarism checker, rank drop detection. |
| Pro | $219 | $182 | Standard plus 50 AI prompts tracked daily, 5 brand spaces, internal linking, content ideas and coverage gaps, templates and custom voices, cannibalization report, MCP. |
| Peace of Mind | $359 | $299 | Pro plus 100 AI prompts daily, unlimited documents and brand spaces under fair use, advanced SERP analysis, API access, a dedicated success manager. |
| Enterprise | custom | — | SSO, white-label, custom limits and tailored onboarding. |
Every plan has a Start for Free button but the page gives no trial length or limits; the AI Humanizer, AI Detector and a free AI-visibility audit are standalone tools that need no plan.
Kinda. The core is a weekend build with the prompt on this page, but real gaps remain: A score tuned on Surfer's ranking research instead of a coverage heuristic you have not validated, The Google Docs and WordPress integrations that put guidelines next to the draft.
About $59 a month on the Discovery (EUR 59 a month) plan, $708 a year (checked 2026-10-19).
A score tuned on Surfer's ranking research instead of a coverage heuristic you have not validated; The Google Docs and WordPress integrations that put guidelines next to the draft; Topical maps, content audits and internal-linking suggestions; AI visibility tracking across ChatGPT, Gemini and AI Overviews; Team seats, shared brand voice and the plagiarism checker. If any of those matter to you, keep paying.
Yes: All-In-One-Free-SEO-Tool (open source).