SEO Agent
An SEO agent reads your competitors and your Search Console data, works out what is worth writing about, writes it, and puts it in a feed your website already shows. What it is allowed to do is set once on the agent rather than asked for each time.
Everything lives under Content in the sidebar: Resources is the library, Feeds decides which slice of it each website shows, and SEO is the agent that decides what should be in there next.
The SEO page is one page, in the order the work happens: what is running, the topics it found, the articles it wrote, the websites it researches, and the log of everything it has done. Each is a table you can search and sort.
Before you start
Three things, in this order. The agent cannot do anything useful without all three, and it will tell you which one is missing.
- A website. Content → SEO → Add website. The description is not decoration — every topic the agent proposes is judged against it, so "we sell industrial pallet racking to warehouses in the Midlands" produces better topics than "we are a leading solutions provider".
- Competitors. Three to five domains that outrank you. Their published pages are the evidence for what is worth covering. Straightline reads their titles and headings only, never the body, and respects their robots.txt.
- A feed. The set of tags your website shows, and where articles get published.
Where the numbers come from
There is no keyword-volume subscription behind this, and nothing here invents one. A topic's score is three facts added together, and every row shows which ones it has:
- Search Console impressions. The only measured demand in the product, and it is free. Export it from Search Console (Performance → Export → CSV) and upload the file on the website page exactly as it downloads.
- Competitor coverage. How many of your tracked competitors have a page on the topic. Four out of five is four companies who each decided it was worth writing.
- Whether you already cover it.
The highest-value rows are usually the ones marked just off page one — queries where you already rank between 11 and 30. The page exists and nearly ranks, so improving it is far cheaper than writing something new.
The agent never supplies a number. It proposes phrasings and groups them; the measuring happens afterwards, in code, against the evidence above.
How much it does on its own
Set on the agent, and it is the single most important setting:
| Mode | What happens |
|---|---|
| Suggest | Proposes topics. You decide what gets written. |
| Draft | Writes them too. They wait as drafts until you publish. |
| Publish | Writes and publishes on its own. |
The limits
These are enforced in code, not asked of the model, and they apply however the work was started — the schedule, a button, the API, or Claude through MCP.
- Articles per month. A hard stop, not a slow-down.
- Minimum days between articles. A site that gains six articles in an afternoon looks like what it is.
- Word count floor and ceiling. A draft outside them is thrown away.
- Tags. An agent may only apply tags its feed already carries. It cannot invent one, because an invented tag publishes an article into nothing.
- Links. Only your own domain, the sources you gave it, and any domains you list. Anything else is stripped out, so it cannot cite a URL it made up.
- Claims. It may only state things about your business that are in the knowledge base you gave it.
If it goes wrong
Every agent page has Take it all back down. Choose a window — the last day, week, or month — and it removes every article that agent published in it from your website and switches the agent off.
Nothing is deleted. The articles become drafts and can be published again. It only touches what the agent published unattended, never anything a person wrote.
Getting it indexed
This is the part most content tools get wrong, so it is worth understanding.
The script embed builds your feed in the browser, after your page has loaded. A search engine's first fetch of that page sees an empty container. Google will sometimes come back and render the JavaScript; it is slower, it is not guaranteed, and most other crawlers never do it at all.
So a feed can also be rendered on the server, and printed into your page while your own server builds it. The feed page gives you the exact snippet, already filled in with your key:
<?php echo @file_get_contents('https://www.usestraightline.com/api/v1/embed/resources/html/?api_key=YOUR_KEY&feed=guides'); ?>
Anything that can fetch a URL will do — this is not PHP-specific. The feed page has the same thing written out for PHP, Node.js, Python and browser JavaScript, and an API tab with the four raw endpoints for anything else.
Only one of those five is different, and it is the one worth knowing about: the browser JavaScript version is the script embed described above, and it is labelled on the page as the one a search engine does not see.
The key is your Feed Key, from Account → Feed Key; it is read-only and returns only what you have published. The response is a plain HTML fragment with no styling of its own, so it takes your page's. It is cached for five minutes, so publishing shows up on your site while you are still looking at it.
Two ways to render it, set by Render mode on the feed:
- Titles and summaries, linking to each article. Each article gets its own
URL, which is how an article ranks for its own search. Needs a page per
article on your site — build that one from
/api/v1/embed/resources/<slug>/html/, and set Article URL pattern on the feed so the links point at it. - The whole article, printed on the page. No extra pages needed and indexable immediately, but everything shares one URL, so the page ranks as a whole rather than each article ranking on its own.
There is a sitemap at /api/v1/embed/resources/sitemap.xml with the same
key — add it to your sitemap index so new articles are found quickly.
Use See what a crawler gets on the feed page to check. It shows the source rather than a rendering, because the question is whether the words are in the markup, and a rendered preview looks identical either way.
Running it from the API or Claude
Everything above is available over the platform API under /api/v1/seo/, and
as MCP tools if you have connected Claude. The same limits apply — they live
below all three surfaces, so a tool call is refused by exactly the same rules
a button is. See API & MCP for the endpoint list.