What it does. What it needs from you.
A register of the path from a Search Console query to a published page, one line per shipped behaviour, checked against the code that runs it. Every line carries a mark in the margin: some run unattended, some need a credential only you can hand over, some wait for a decision only you can make. It is a register of that path, not a list of every endpoint the API exposes.
- Runs unattended
- 11 of 26
- Needs a credential you supply
- 7 of 26
- Waits for your decision
- 8 of 26
Checked 30 August 2026. What it cannot do is at the foot of the page.
What a claim goes through before it is called verified.
A claim is a sentence the writer marked as fact, together with the source it says supports it. Before the draft reaches you, BirchSeek tries to find that support on the live page.
01
Fetch
Requests the source URL through an SSRF guard and extracts the page text.
02
Match
Looks for the writer's excerpt in that text, with case set aside and every run of characters that are not letters or digits collapsed to a space. That excerpt is optional: where the writer asserted none, this same test runs against the claim's own wording instead, which is why a pass here has two readings.
03
Window
Failing that, scans the page in windows for a token overlap of 0.60 or better - most of the wording, in any order, with up to 40% of the distinct words absent.
04
Judge
Only once both matchers have failed on that excerpt, a model reads the page and the claim and answers supported or not. Supported stands only if the excerpt the model itself cites is found on the page - which is a different excerpt from the writer's, and is not stored on the claim.
verified
Answered at 02 Match
method substring, http_status 200
Agencies publishing weekly keep 41 percent more of their organic traffic year over year.
Sites publishing at least weekly retained 41% more organic traffic year over year than sites publishing monthly.
https://example.org/2026-organic-retention
The writer's excerpt was found in the page's own text, matching once case is set aside and every run of characters that are not letters or digits is collapsed to a space. Match is the only test that locates stored text on the page, and this claim carried an excerpt for it to locate - so this is the one status on this page whose excerpt may be read as words the page carries. Had the writer asserted no excerpt, the same test would have run against the claim sentence and proved that instead, with nothing to quote.
quote_not_found
Answered at 04 Judge
method llm, similarity 0.38, http_status 200
Most teams see their first ranking movement inside three weeks.
Early movement usually shows up somewhere in the first month.
https://example.com/blog/content-velocity
Three weeks is not a month. Nothing on the page matched, the best window came back at 0.38 against a bar of 0.60, and the judge would not call it supported. The article goes to the review inbox instead of your approval queue.
A claim ends in one of three states.
verified
The page was fetched and one of the three tests above answered for the claim. The row records which, and they are not equally strong. They also settle into four facts, not three, because Match runs against the claim's own wording when the writer asserted no excerpt: Match with an excerpt proves that excerpt is on the page, Match without one proves only the claim sentence is; Window says a passage is close; Judge is reached because both matchers already failed.
quote_not_found
The support was not confirmed: usually the page loaded and the sentence was not on it, sometimes the judge went permanently unavailable before the claim was ever read. The stored detail says which. Amber in review.
fetch_failed
The page could not be read at all. Red in review.
The draft gate opens on four numbers at once: content quality 70 or better, SEO 80 or better, no critical SEO issue, and no claim left unresolved. Unresolved is every claim not yet verified or cut: quote_not_found and fetch_failed, and pending too - a claim the verifier has not reached yet holds the gate shut exactly as a failed one does. Anything short of that routes the article to the review inbox instead of your approval queue. In review you can send the draft back, or cut the sentence, which takes the claim with it.
The rest of it, line by line.
Research
Reads your Google Search Console property for the queries the site nearly wins, with the impressions and clicks each drew. Positions 11 to 20 over 30 days are the core of it; a second pass over 90 days adds the siblings a top-ten page attracts but cannot serve, from 11 down to 30, on that page or closely related to it elsewhere on the property.
A Google account with access to the property. The scope requested is webmasters.readonly, which cannot write.
Scores every Search Console row 0 to 100 from its impressions and its position, and nothing else — the stored click-through rate is shown, never scored. It always adds phrases a model proposes from your brand context, which is the whole list on a project with no Search Console property, then has a model re-rank it, weighing demand, proximity to page one, weak competition, fit and novelty. The model attaches a one-line reason to the rows it answers for; the rest keep the arithmetic score and no reason.
Nothing
Searches the live results for the target query and reads the pages that currently rank on it. The engine is a project setting: new projects search DuckDuckGo, and Google or Bing can be selected instead at any time.
Nothing. Change the engine in project settings whenever you want a different one.
Crawls up to 150 pages of your site for the health report, spacing requests at least 250 ms apart and honouring robots.txt and a Crawl-delay up to 10 seconds.
Nothing
Imports your sitemap and proposes internal link targets.
You approve each target. Only approved, still active links are put in front of the writer.
Writing
Writes against your brand context: brand voice, style guide, features, writing examples and SEO overrides.
You write the context. With none of it, the copy is generic.
Plans the article from nine section types, and rejects a plan missing the summary, introduction, key takeaways, FAQ or conclusion.
Nothing
Scrubs the draft for AI phrasing and repetition, then scores it on five dimensions: humanity, specificity, structure, readability and SEO.
Nothing
Sends a draft scoring under 70 back for a revision pass and rescores it before it reaches your queue.
Nothing
Publishing
Appends the article's verified claims to the body it delivers to your own site, as a Sources list: each claim, then a link to the page it was checked against. It is composed once, before any connector sees it, so the same block reaches the committed MDX file, the WordPress and Ghost drafts, the Notion page and the webhook's markdown. Only verified claims are listed. An off-domain placement builds its own copy of the block instead, and is not covered by the project setting: on somebody else's property the list is the only thing an editor can check, so it is not yours to remove. A syndicated copy on dev.to, Hashnode or Medium carries the block too, under a canonical link back to your page, and the project setting does not reach that one either: those three platforms have no citation field of their own, so the body is the only place the evidence can travel.
Nothing. It is on by default. Switching it off is a project setting, `append_sources_section`, and today there is no screen for it: the only way to change it is a PATCH to /v1/projects/{id} carrying the whole settings object, since a partial save replaces the lot. It exists for a publisher whose house style prints its own reference list.
Opens a pull request against your content repository with the MDX file, your frontmatter, your branch and your path. The body lists each verified claim with its source and says how the fetch confirmed it, quoting the page only where the words were found on it.
The BirchSeek GitHub App installed on that repository.
Files the article in WordPress, Ghost, Webflow, Shopify, Wix, Notion or GoHighLevel over each platform's own API, as a draft wherever the platform has one.
A credential, and the address of the shelf it writes to. WordPress takes a site URL, a username and an application password; Notion a database and the names of your properties; GoHighLevel a location, a blog, an author and at least one category.
POSTs the article as JSON to an HTTPS endpoint you control, signed with an HMAC-SHA256 of the timestamp and the raw request bytes.
Your endpoint and a shared secret.
Cross-posts to dev.to or Hashnode with the canonical pointed back at your own page. Both refuse to run without one. The Medium connector is the same shape and is open only to an account already holding an integration token, since Medium issues no new ones to anybody: see the foot of the page.
A token for that platform.
Places an original piece on a third-party host that can rank for a query your own domain cannot win yet. dev.to is the only host it posts to by API; for the rest it renders a submission packet a person carries over by hand.
You approve the host and write the reader benefit. A host the scan merely suggested can never be placed on.
Probes the target for the post before it creates one, so a retried publish updates in place instead of doubling it. Every publisher that creates a remote post does this except Medium, whose API can neither list nor update a story. Two never reach that question, having no remote post to probe for: the webhook writes a delivery row, and a hand-carried placement makes no request at all. Each is idempotent on that row instead.
Nothing
Puts each approved article on a publishing calendar, where the scheduled time is the job's own timer: move the date and the publish moves with it.
You set the date, or take the one offered.
Seeds a refresh on every article published to your own site, 180 days out by default, and scans for refreshes coming due every six hours. Cross-posted copies and off-domain placements get none: nothing auto-rewrites a page on property you do not own.
Nothing
Operating
Answers a coding agent over MCP at /v1/mcp/sse: 23 tools an ordinary account can list and call, from starting a run to approving a gate.
A scoped bsk_mcp_ token you mint. The publish scope is never in a default mint.
Hands every model call to your own agent instead of ours, over that same token. These are the three further tools the registry holds back, and tools/list does not show them to an ordinary account.
A service or admin account. Delegated generation is not open to ordinary accounts yet.
Seals every stored credential with XChaCha20-Poly1305, bound to the row that owns it.
Nothing
Counts 30 article starts to a billing period and claims the slot atomically before any paid research runs.
Nothing
Deciding
Three of these four cannot be switched off. The API refuses to store any setting other than manual for topic, draft and publish. The brief is the one gate a project may set to automatic, and when it is, research hands straight to drafting while the draft still waits for you. A gate can also be answered by an agent holding a token you minted with the approve scope, and the answer is recorded as having come from MCP: the publish gate wants the publish scope on that token as well, and an off-domain placement is refused to an agent whatever its scopes, because that one is approved by a person or not at all.
The topic. Nothing is queued until you queue it, and ranking a query is not choosing it.
Your decision. Cannot be automated.
The brief: target query, secondary keywords, intent, angle, outline, and the sources the draft will lean on.
Your decision, or automatic if you set this one gate to auto.
The draft, with every claim, its source, its quote and its status open in front of you.
Your decision. Cannot be automated.
The publish, and the date it lands on. Every irreversible act sits behind this gate.
Your decision. Cannot be automated.
What it does not do.
The 7 that change what you can ship
- It generates no images: no cover, no diagram, no screenshot. GoHighLevel is the one connector whose API will not take a post without a cover image, so it uses one you supply and reuses it on every post.
- The Sources block prints no quote, and nothing marks the sentence it belongs to. Every verified claim is listed at the foot of the article with a link to the page it was checked against, but your prose carries no footnote reference and no excerpt is printed beside the link: of the four ways a claim passes only one proves the writer's excerpt is on the page as written, in another there is no excerpt on the record at all, and a reader has no way to tell which one answered. The pull request is where the excerpt does appear, because it can carry the method beside it - it quotes the page only where Match found the writer's words on it, and says so in plain words where what Match found was the claim's own wording. A claim that could not be verified is in neither list, and the pull request counts it instead.
- Cross-posting is off until you switch it on, per project, and switching it on means accepting one risk in writing. Medium's API can create a post but cannot list or update one, so nothing can ask it whether a copy is already there: a retry after a lost response can leave a second copy that no probe will ever find, and a post that cannot be found cannot be deleted. Every other duplicate on every other platform is proven impossible before the request leaves. This one is not, so a project accepts it deliberately or leaves cross-posting to a publish you trigger yourself.
- There is no free tier and no trial. Research and generation cost money per article, so there is one paid plan.
- Two pipeline runs at a time per account. A third is refused rather than queued, so finish or cancel one first.
- Framer is not live. Its publisher is written and tested, but Framer exposes no REST API and the bridge it needs is not deployed, so its connection test cannot pass.
- Medium is shut to anyone new. The connector runs, and only for an account already holding an integration token: Medium stopped issuing them and replaces none. It is also the one target that cannot be probed before it posts, which is why a Medium publish is never retried.
Start with BirchSeek.
30 cited articles a month.