Articles reach your Node.js server — Amplify only builds and hosts it.
The Amplify API manages apps, branches, deployments, domains and build webhooks, and Amplify Data is a database your own app calls — neither is somewhere an outside service publishes to. The server-rendered Node.js app Amplify Hosting runs is. Give your Next.js, Nuxt, Astro or SvelteKit app a receiver route, or stand up a Lambda function with a function URL beside a static one, and every finished article arrives there as a signed JSON POST.
| Amplify content API | None — apps, branches, domains — no post, page or article resource; Amplify Data is your app’s own database |
|---|---|
| Article destination | A route in your Node.js app — Next.js, Nuxt, Astro, SvelteKit or Express; a Lambda function for static apps |
| Verification | Signed with your webhook secret — HMAC over ${timestamp}.${rawBody}, turned away after 5 minutes |
| Environment variables | Reach the build, not the server — one amplify.yml line writes the secret into .env.production |
| Custom domains | Register the www address — the bare domain redirects to www by default, and DraftSEO does not follow redirects |
Who does what
Choose the framework Amplify builds, drop in its receiver, and pass the secret through amplify.yml so your server can read it. After the signed test succeeds you spend no time per article, and your pages, layouts and data model stay exactly as you built them.
Add the variable, redeploy the branch, and the setup is done.
Setup
The receiver code is your framework’s recipe; the Amplify-specific work is getting the secret from the build to the server.
Connect a site → AWS Amplify, then choose Next.js, Nuxt (Vue), Astro, SvelteKit or Node.js / Express. The recipe that opens carries your signing secret.
~1 minute
Add DRAFTSEO_WEBHOOK_SECRET under Hosting → Environment variables → Manage variables, then put env | grep -e DRAFTSEO_WEBHOOK_SECRET >> .env.production before npm run build in amplify.yml. Next.js reads that file when it runs; Nuxt, Astro, SvelteKit and Express each need one more change, which the connect wizard shows.
~3 minutes
Mount it at /api/webhook, not /webhook.json — Amplify serves dotted paths as static files. Delete any leftover single-page-app rewrite that could catch the path, then redeploy the branch. Nuxt builds with the aws_amplify preset; Express needs a deploy-manifest.json and port 3000.
~10 minutes
Register your app’s address (on a custom domain, the www one), then press Send test for a signed test delivery — and a deliberately invalid one, which your receiver must reject.
~1 minute
From here, generated articles post to your Amplify app on your calendar, carrying their images and SEO metadata.
Ongoing · zero clicks
FAQ
No — Amplify has no content resource for anything to publish into. Its API manages apps, branches, deployments, domains and build webhooks, and Amplify Data is a database your own app calls rather than a publishing target. DraftSEO publishes into the app Amplify Hosting builds and serves, where your blog pages are rendered.
Amplify runs server code only on Node.js: Next.js natively (AWS documents versions 12 through 15), Nuxt through its aws_amplify Nitro preset, Astro and SvelteKit through community adapters AWS links but does not maintain, and Node.js / Express through a deploy-manifest.json with the server on port 3000. A site in another language runs somewhere else on AWS or beyond, and its receiver recipe is the same there.
A static or single-page app on Amplify runs no server code, so the receiver goes in an AWS Lambda function with a function URL (auth type NONE). The connect wizard gives you the handler ready to paste into index.mjs.
Because Amplify environment variables reach the build, not the running server. Add env | grep -e DRAFTSEO_WEBHOOK_SECRET >> .env.production to the build commands in amplify.yml, before npm run build. AWS documents this for Next.js, which reads the file when it runs; Nuxt, Astro, SvelteKit and Express each need one more change to pick the secret up, and the connect wizard shows it for your framework. AWS also warns that anyone with access to your build artifacts can read that file.
Yes — keep dots out of it. Use /api/webhook rather than /webhook.json: Amplify serves dotted paths as static files and drops the POST body when it falls back to the server. If the single-page-app rewrite to /index.html is still in Rewrites and redirects, remove it too, since it can catch the webhook path before your server sees it.
No card required. Signed test delivery in under a minute.