v0 websites

Contengi for v0 websites.

v0 got the site live on Vercel in an afternoon. Ask it for one more route and Contengi puts an agent directly on the blog, so posts get written, published, edited and taken down without another round of prompting.

Signed webhookOne prompt to v0
v0 websitesyoursite.vercel.app
CONNECTED
  1. WriteDrafted a launch post for the new planready for review
  2. PublishSigned POST to /api/contengi200, live
  3. EditSwapped a stat, added a FAQdiff ready
  4. PublishRepublished at /blog/new-plansame URL

Read, write, publish, edit, republish

An agent that works directly on your blog.

Read

Reads what is already live

The CMS lists every post Contengi has published to your site, with what is live and what has changes waiting. Refreshing an older post? Give the agent its URL and it reads the live page.

Content library and CMS
Write

Writes in your brand voice

The SEO agent researches the keyword, reads your knowledge base and hard rules, and drafts the post. Four slop filters run before you ever see it.

Content agents
Publish

Publishes when you say so

Each post goes to your route handler as signed JSON with the title, slug, SEO fields, body, FAQ and featured image. Your app stores it and replies with the live URL, which Contengi keeps.

Content library and CMS
Edit

Edits one section at a time

Ask the edit agent to tighten an intro, add a section or fix a stat. It changes only what you asked for, checks the links and shows you a diff you can revert.

Content library and CMS
Republish

Republishes at the same URL

An edited or refreshed post goes back over the original. If Contengi cannot find that original, the publish stops, so a second copy never appears at a new address.

Content agents
Claude

Works from your own Claude too

Connect Contengi to Claude and the same blog is one chat away. Claude can open a live post, edit it section by section and leave it waiting for you to publish.

Claude connector

Under the hood

How the connection is built.

v0 builds Next.js apps, so the connection is one route handler in your own project. It deploys with the rest of the site on Vercel and needs nothing extra to run.

Connection
One HTTPS endpoint on your site, for example /api/contengi. Contengi sends each post to it as JSON.
Security
Every request is signed with HMAC-SHA256 over the timestamp and the body, in the X-Contengi-Signature and X-Contengi-Timestamp headers. Your endpoint checks the signature and rejects stale timestamps, so nobody else can post to your blog.
What arrives
Title, slug, SEO title, meta description, excerpt, body HTML, FAQ, links, read time, keywords, author and featured image.
Where it is stored
Wherever your site already keeps content: a database, Supabase, a headless CMS or files in the repo. Each post is keyed on its slug, which is its URL.
Updates
An edit arrives flagged as an update with the live URL. Your endpoint replaces the post at that slug and the address never changes.
Unpublish and delete
A signed PATCH takes a post back to draft and a signed DELETE removes it, both from the Contengi CMS.
Reading
Contengi keeps a copy of every post it publishes, so edits start from exactly what went out. For older posts it reads the live page.
No backend?
Static sites can pull a JSON or RSS feed of published posts instead, behind a private token.

Setup: One prompt to v0

Connected in four steps.

Step 1

Add your site in Contengi

In Settings, Integrations, add a custom website with the endpoint URL, for example yoursite.com/api/contengi. Copy the signing secret it shows you.

Step 2

Paste the prompt into v0

v0 adds the route handler and the blog pages to your project.

Step 3

Add the secret and deploy

Save the signing secret as CONTENGI_SIGNING_SECRET in v0's environment variables or your Vercel project settings, then deploy.

Step 4

Hit Test

Contengi sends a signed test post. A 200 with a URL means you are live.

Copy, paste, deploy

The prompt that builds it.

Paste this into the v0 chat for your project. It covers the whole contract: signature check, upsert on slug, unpublish, delete and the blog pages.

Prompt
Add a Contengi publishing endpoint to this site at /api/contengi.
This is a Next.js App Router project. Use a route handler at app/api/contengi/route.ts and read the raw body with request.text() before parsing it.
1. Verify every request. Read the raw body, compute HMAC-SHA256 of "<X-Contengi-Timestamp>.<raw body>" using the CONTENGI_SIGNING_SECRET environment variable, and compare it to the X-Contengi-Signature header (format sha256=<hex>) with a constant-time check. Reject timestamps older than five minutes.
2. POST: upsert the post keyed on "slug", never on "blog_id". Store title, seo_title, meta_description, excerpt, body_html, faq, author_name and featured_image. If "test" is true, store nothing. Reply 200 with {"url": "<the post's live URL>"}.
3. PATCH with action "unpublish": set the post at "slug" back to draft so its URL returns 404. Keep the record.
4. DELETE with action "delete": remove the post at "slug".
5. Render posts at /blog/[slug] and list them at /blog, with seo_title and meta_description in the page head.

Store posts in the site's existing database or content store. If there is none, suggest one before building.

Other integrations.

All integrations

FAQ

Common questions

Do I need to know how to code?

No. You paste one prompt into v0 and it writes the route. The only manual step is saving the signing secret in your environment variables.

Where are the posts stored?

In your own project. If it has no database yet, v0 can add one from the Vercel Marketplace, such as Neon or Supabase, and the posts live there.

Does it work if I export the code and host it elsewhere?

Yes. The route is ordinary Next.js code, so it runs wherever the app runs.

Can Contengi unpublish or delete posts on my site?

Yes. The CMS sends a signed PATCH to unpublish and a signed DELETE to delete, and your route handles both. Contengi only reports a post as gone once your site replies 200.

Keep exploring

Related features and reads

Give your v0 site a blog that runs itself.

Connect your site once, with a strategist setting up your knowledge base alongside. Then write, edit and publish from one place.