What you need
- A DataForSEO account. SEO Helper reads every number from DataForSEO through its MCP server, with your own login. Use the API login and password from app.dataforseo.com, under API access: the API password is not your dashboard password.
- DataForSEO’s charges go to that account, not to Orca. Each search is billed by DataForSEO at their prices, from your DataForSEO balance. The model’s tokens are paid from your Orca credit. Step 6 has both, measured.
- A blog in a repo, and a coding agent, for the full flow. SEO Helper sees only what it’s sent: your posts, the topics you picked before, and your site’s essentials. Your coding agent sends those, checks the answers against your repo, and writes the post. From a terminal alone you get the topics and the brief.
What you’ll do
- Install the CLI and sign in.
- Copy SEO Helper with one command, or build it from code.
- Add your DataForSEO login to a vault, in your own terminal.
- Use it: topics, more topics, and a brief.
- Let your coding agent drive: it sends your posts, checks the topics, saves the brief and writes the post.
- See what it cost, and clean up.
Or hand this page to your coding agent
If you work in Claude Code, Codex, or Cursor, it can do the typing while you watch. Open it in your blog’s repo and paste this prompt:1. Install the CLI and sign in
orca binary to ~/.local/bin. If your shell then says orca: command not found, add that folder to your PATH as the script suggests, and open a new terminal. On Windows, download the binary from the releases page. SEO Helper needs CLI 1.3.1 or later: an older CLI updates itself with orca update.
balance is your Orca credit. The amount new accounts start with is on the pricing page.
2. Copy SEO Helper
SEO Helper is a model, a reasoning effort, its instructions, and one tool: DataForSEO’s MCP server, limited to ten read tools for keywords, difficulty, intent, page 1 results and page text. The instructions hold the method: how to read what it’s sent, the five gates every topic must pass, a DataForSEO budget for each turn, and the exact format of every reply. This is all of it:reasoning gives the model room to check every gate before it lists a topic. allowed_tools is why the agent can call only these ten of DataForSEO’s tools, and nothing that writes or costs more. The model name also says who pays: orca/openrouter/<id> runs on your Orca credit. See models and provider keys.
Get SEO Helper into your account whichever way you like:
- Copy it (one command)
- Build it from code
SEO Helper is shared as a kit, a link anyone can copy an agent from.It lists what the kit would copy, one agent called It shows the same definition as the code above.
1
See what it holds
seo-helper, and copies nothing. Read the list, and go on only if you want what it holds.2
Copy it into your account
3
See your agent
3. Add your DataForSEO login
SEO Helper calls DataForSEO with your login, which you keep in a vault: Orca sends it to DataForSEO’s server and never shows it again, not to you and not to the model. Create the vault:- “No credential in the attached vaults for https://mcp.dataforseo.com/mcp”: the chat didn’t name the vault with
--vault dataforseo, or the vault holds no login yet. No session is created. - “DataForSEO refused the login in your dataforseo vault”: the login or the password is wrong, often the dashboard password instead of the API one. Delete the credential with
orca vaults credentials delete, and add it again.
4. Use it
Ask for topics, with the vault:message.txt, and send it on standard input:
Then it listed all 15 candidates it dropped, each with the gate that dropped it, such as:
session session_...), in place of SESSION_ID:
Which keyword? Ask as Brief: <keyword>, with the keyword as the topics list gives it., and no DataForSEO call, so a misread number never researches the wrong keyword.
More like a keyword seeds new candidates from it alone, puts them through the same gates, and numbers them after the last topic in the conversation. On 2026-10-18, “More like what is an mcp server” listed five, with eight rejected: what is an mcp server (9,900 a month, difficulty 20), mcp vs rag (720, 3), mcp server vs api (170, 11), how to create mcp server (210, 7) and how to use mcp servers (110, 21). In a fresh conversation the seed itself can be listed; later in one, it collides with the topic you took it from.
A brief is one keyword’s research, in a fixed format: a title line, a JSON block, then sections. It holds no prose, no voice and no word counts. A real brief for “what is mcp” on 2026-10-18 began like this (shortened):
secondary: related keywords, each with its volume and difficulty.titlesandmetas: 2 or 3 of each, each with its length in characters (titles at most 60, metas at most 155).outline: H2s, each with the results that cover it, or"gap": truefor what none of them covers.questions: from “People also ask” and related searches, only those about the keyword.links: posts from the context block only, with an anchor and where each fits.sources: pages read in the session, each to verify before citing.competitors: the top 3 results it read, each with what it covers. They have no word counts: your coding agent fetches the 3 pages and counts their words.
Is page 1 for <keyword> still the same?, such as “Is page 1 for what is mcp still the same?”. SEO Helper reads page 1 again and answers from it.
The gates and thresholds
A topic is listed only if it passes all five gates:
To use other thresholds, put a
Gates: line in the message, in the context block or after the question: Gates: min_volume 50, max_difficulty 25, prefer_difficulty 15, intent informational. A threshold you leave out keeps its default. Location and language default to United States and English: change them with a Location and language: line. The JSON block repeats the thresholds it applied, so your coding agent can check them against what it sent.
5. Let your coding agent drive
The full flow runs from your coding agent, in your blog’s repo: it sends your posts, checks every topic against your repo, saves the brief, and writes the post. Give it Orca’s tools.orca mcp serve is an MCP server with one tool per CLI action, and it uses the login you already have.
- Claude Code
- Cursor
- Codex
Install the Orca plugin. It registers the MCP server and adds a skill that knows the CLI, including how to work with a research agent like this one:Or add only the MCP server:
- It sends the context. Your words, then the context block, at most 8 KB: today’s date, the blog’s URL, every post with its title, URL and target keyword, the topics picked before, and the essentials of your site brief. It starts the conversation with one call,
chat({agent: "seo-helper", vaults: ["dataforseo"], message}), and later turns pass only the session. - It checks the topics before you see them. It reads the reply’s JSON block and checks every topic against the thresholds it sent and against your repo, which it can read in full where SEO Helper saw only a list. It drops a topic that fails and says why, such as “Dropped #3: difficulty 67 is over your 35”.
- It asks by keyword. You say “More like #2” or “Brief for #4”; it sends
More like <keyword>orBrief: <keyword>with that topic’s keyword exactly as the JSON block gives it. - It saves the brief as it came, at
.orca/seo-helper/briefs/<slug>.md, and shows you the outline and the title options. - It measures the length. It fetches the brief’s 3 competitor URLs and counts their words, and keeps your post within that range unless your repo’s rules say otherwise.
- It writes the post in your repo’s layout, under your repo’s own rules (its
CLAUDE.mdorAGENTS.md, its README, its existing posts), never SEO Helper’s. Your one-off asks (“keep it short, for CTOs”) are its instructions for this post. - It checks the post against the brief’s “Check before commit” list, and fixes what fails.
- It commits with its own git, a branch and a commit or a pull request, with the brief beside the post. Orca never needs a GitHub token. Then it deletes the session.
The site brief
Your coding agent keeps your site’s essentials in your repo, at.orca/seo-helper/site-brief.md: the blog’s URL, what you offer and to whom, the location and language, your lanes and any forbidden topics, the gate thresholds, and the folder for briefs. On first use it drafts the file from your repo and asks you to confirm the lanes, then sends its essentials in every first message. Voice, layout and figures stay in your repo’s own rules and never go to Orca.
The file changes only at your word. Say “remember that” after a change, such as “max difficulty 25 from now on, remember that”, and your coding agent edits the line. SEO Helper never writes it.
6. See what it cost, and clean up
Every call is recorded with what it cost, down to the session:orca sessions get SESSION_ID shows one session’s cost and tokens. DataForSEO’s charges show in your DataForSEO account.
Measured on 2026-10-18 on a local Orca server, with Luna and no sandbox. The more-topics, brief and number turns ran with the agent exactly as it is on this page; the topics turn ran on an earlier version with the same topics instructions.
A full conversation, topics then more topics then a brief, adds up to 0.134 on Orca credit and 0.233: 0.146. A turn’s model cost moves with how much the conversation already holds, and DataForSEO’s with how many candidates it checks.
- Model tokens are paid from your Orca credit, since SEO Helper’s model starts with
orca/. - DataForSEO is paid from your DataForSEO balance, at their prices. Each turn has a budget of DataForSEO calls in the instructions: a topics turn at most 6 keyword calls, 10 page 1 reads and 3 page reads; more topics 4 keyword calls and 5 page 1 reads; a brief 2 keyword calls, 1 page 1 read and 3 page reads.
- SEO Helper uses no machine time. It runs with no sandbox.
dataforseo, and the login in it, with its ID from that list:
seo-helper too: find its ID with orca keys list, then run orca keys revoke with it and --yes.
Where to go next
Margin Check
Another kit: what a deal does to margin, and who has to approve it.
Scout
Another kit: a research assistant that searches the web and answers with its sources.
Credentials and vaults
How vaults keep a login for an MCP server, and who can see it.
Questions
Post in #help on Orca’s Discord.