Your app receives the article — Vercel just deploys it.
Vercel is hosting and deployment, not a CMS: it has no site builder and no content store, so there is nothing inside Vercel for an article to land in. What receives your articles is the app Vercel serves. Add one route handler — or a single Vercel Function if your build is static — and DraftSEO POSTs each finished article to it as signed JSON. Your framework renders the page; Vercel serves it without a redeploy.
| Vercel content API | None — projects, deployments, domains — the Vercel REST API has no post, page or article resource |
|---|---|
| Where articles land | Your framework's receiver — one route handler, recipe provided per stack |
| Security | HMAC-signed + timestamped — verified over ${timestamp}.${rawBody}, 5-minute replay window |
| Fully static builds | Add a runtime first — SSR, or one Vercel Function as the receiver |
| Storage | Bring a database — Functions have no persistent filesystem; Neon, Supabase or any Postgres works |
Who does what
Pick the framework your app is built in, paste its receiver, verify the signature, and store the post. After the green test delivery: zero minutes per article, and your components, routes and caching stay entirely yours.
Push it once — Vercel deploys it like any other commit.
Setup
The setup is your framework’s, not Vercel’s — so the first step is naming the stack.
Connect a site → Vercel, then choose Next.js, Astro, Nuxt, SvelteKit, Expo, Node.js, FastAPI, Django or Go. You land on that stack’s recipe with a signing secret.
~1 minute
SSR, an API route or a Vercel Function — a webhook needs something answering at request time. A static export or a Vite/React SPA gets a single function as the receiver.
Usually already true
Verify the HMAC over ${timestamp}.${rawBody}, upsert the post into your database, render it from your own pages. Add the secret as a Vercel environment variable, push, and Vercel deploys it.
~10 minutes
DraftSEO fires a signed test at your endpoint — and a deliberately invalid one, which your receiver must reject. Two green checks mean you are connected.
~1 minute
Every generated article arrives at your endpoint on schedule, images and metadata included.
Ongoing · zero clicks
FAQ
No — and no tool does, because there is nothing there to publish into. Vercel’s API manages projects, deployments, domains, environment variables and storage; it has no post or page resource, and a deployment is an immutable build of your whole app rather than a place to add one article. DraftSEO publishes into the app Vercel serves, which is the part that actually renders your blog.
DraftSEO ships receiver recipes for the stacks Vercel runs: Next.js, Astro, Nuxt, SvelteKit, Expo (web), Node/Express, FastAPI, Django and Go. Anything else Vercel deploys — Remix, React Router, Hono, Flask — receives the same signed JSON; the recipe in the same language is the closest starting point.
Yes, but not on Vercel — Vercel has no .NET runtime, so an ASP.NET Core app is hosted elsewhere (Azure, a VPS, a container host). Pick ASP.NET Core in the connect wizard and you get its receiver recipe; where the app is hosted does not change it.
In a database — Vercel Functions have no persistent filesystem, so a post written to disk is gone on the next invocation. Neon, Supabase or any Postgres works; the receiver upserts on the article id and your pages read from the same table.
Not if your app reads posts at request time. With SSR the new post is live the moment your receiver stores it; with ISR, revalidate the path from your receiver. Only a fully static export needs a rebuild, and your receiver can trigger a Vercel Deploy Hook itself.
No card required. Signed test delivery in under a minute.