Today seodraft is in Slack. seodraft for Slack is an open-source SEO content agent that you deploy to your own Vercel account, built on eve, Vercel's agent framework.
@mention it in a channel and it plans your topic bank, writes the next scheduled article, runs seodraft's rules and turns the approved article into LinkedIn posts, X posts and newsletter sections.
Chorch built it around something he said while rebuilding seodraft: "casi todo el trabajo se lo lleva el usuario con su agente a donde quiera que conecte", almost all the work happens wherever the user connects their agent. For a lot of teams, that place is a Slack channel.
Below you will find what the agent does in a thread, the 12 seodraft calls that wait for an approve or deny button, and how sign-in works without a single API key. We also cover the one thing it cannot do yet. Start with what happens when you mention it.
- What the agent does in a Slack thread
- seodraft stays the system of record
- Twelve seodraft calls wait for a button
- Each person signs in with their own seodraft account
- Deploying it takes one button and one connector row
- Scheduled runs are the known limit today
- Choose between Slack and the agent you already use
What the agent does in a Slack thread
The agent takes a request in Slack and runs the same seodraft workflow your own agent runs over MCP.
Ask it what is next and it calls next_write, proposes a brief with three accepted pieces of evidence, writes the body and runs the rules. When you say ship it, the approval shows up as a button in the thread.
you: @seodraft what's next on the calendar?
agent: next_write → "How long does a Shopify migration take?" (scheduled Tuesday).
Brief: intent, template, angle, 3 accepted evidence pieces, outline. Write it?
you: go
agent: upsert_post (brief, then body) → run_gate passed. Here's the article.
you: ship it
agent: [Approve / Deny] approve_post
Approved and delivered as a draft to your-org/your-site.
The order matches what we use on this blog. The current workflow saves the brief before the body and requires every evidence item in the brief to reach the article, and the agent posts a short summary of the brief in the thread before it writes a line.
After approval it offers to repurpose the article. Each social surface has its own editable style skill, checked by a banned-words lint and a reviewer that reads the post with fresh context.
seodraft stays the system of record
Everything the agent works on lives in your seodraft workspace, and the agent has no database of its own.
The profile, the evidence bank, the topic bank, the calendar, the briefs, the drafts, the rules and the delivery settings stay in seodraft. The agent reads the editorial standard with get_skill at runtime, so a change to the rules reaches Slack the moment it ships.
This is the same bet we described in Agent-first: why seodraft killed most of its web UI. Chorch put it this way: "cada día los productos estarán más pensados para agentes que para humanos", products will be designed more for agents than for humans every day.
The Slack agent is one more client of the same MCP server. A draft started in Slack can be finished from Claude or Cursor, because both read the same workspace.
Twelve seodraft calls wait for a button
The agent pauses for an approve or deny button before 12 of seodraft's tools run, and everything else runs without a prompt.
| Pauses for approval | Why |
|---|---|
approve_post, approve_profile, deliver_draft, archive_topic | They record the human's decision or write to the site's git repository |
archive_post, merge_topics with confirm: true | The dry run is free, so only the confirming call stops |
add_topics, complete_onboarding, propose_topics, refresh_metrics, research_topic, suggest_topics | They can spend the user's DataForSEO balance |
Reads, upsert_post, run_gate and scheduling never ask. Before a paid call, the agent says in one line what it does and the price its tool description names, which runs from about USD 0.004 to USD 0.12.
seodraft also refuses a paid run that would break its per-run or rolling 24-hour ceiling, whatever the agent decides. The list lives in APPROVAL_REQUIRED_TOOLS in agent/connections/seodraft.ts, and you can edit it in your fork.
Each person signs in with their own seodraft account
Every Slack user authorizes their own seodraft account through Vercel Connect, so the agent sees only the workspaces that person can open.
The first time someone needs seodraft, the agent sends them a private sign-in link. The token is resolved on every call and never reaches the model.
The template runs with zero static keys. Slack and seodraft authenticate through Vercel Connect, while Vercel Blob and the model use the project's OIDC token. DataForSEO credentials, when a workspace uses them, are entered in the seodraft web app and never pass through Slack.
Chorch's rule for this kind of work is "lo mejor es crear buenos procesos, rápidos y económicos para que los agentes trabajen mejor": build good, fast and inexpensive processes so agents work better. One sign-in per person and no keys to rotate is the cheapest process we could find.
Deploying it takes one button and one connector row
The Deploy with Vercel button provisions a Slack connector, a seodraft connector and a Blob store in one pass.
You need a seodraft account with at least one workspace, a Vercel account and a Slack workspace where you can install an app. seodraft is not in the Vercel Connect catalog yet, so in the seodraft.app row you choose Add, then OAuth, then Managed, and enter https://seodraft.app as the server URL.
Vercel Connect discovers the endpoints and registers the OAuth client with seodraft on its own. The repo is ch0rch/seodraft-content-agent, an Apache-2.0 fork of Vercel Labs' eve Content Agent Template, and the eve agent page has the deploy button and the setup steps.
Scheduled runs are the known limit today
The agent cannot write on a schedule yet, so every article starts from a message in Slack.
seodraft issues user tokens only, and eve schedules run as the app. A cron job therefore has no person to act as when it calls seodraft.
We launched the agent today, so we have no usage numbers to share yet.
Choose between Slack and the agent you already use
Deploy the Slack agent when your team talks about content in Slack, and keep using your own agent when you write alone.
Both read the same workspace and pass the same rules, so you can run them side by side. If you are curious how an agent works next to a founder day to day, read the founder's personal agent inside seodraft. If you ship your own MCP server, how to distribute an MCP server through registries covers what we learned listing ours.
Your next step: open the eve agent page, press Deploy and mention the bot in a channel. If you do not have a workspace yet, create your seodraft account: your agent writes, the rules decide, and you approve.
