# Contengi for v0 websites.

> Give your v0 website a CMS and an AI blog agent. Ask v0 to add one signed route and Contengi writes, publishes, edits, unpublishes and deletes posts on it.

Source: https://contengi.com/integrations/v0-websites

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

[Request beta access](https://contengi.com/beta-access) [Try it out](https://contengi.com/demo)

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](https://contengi.com/features/library)

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](https://contengi.com/features/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](https://contengi.com/features/library)

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](https://contengi.com/features/library)

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](https://contengi.com/features/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](https://contengi.com/features/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](https://contengi.com/integrations)

[WordPressCore REST API and an Application Password. No plugin to install.](https://contengi.com/integrations/wordpress) [ShopifyA private app on your own store with one scope: write\_content.](https://contengi.com/integrations/shopify) [WebflowData API v2 with a site token, mapped to your own collection fields.](https://contengi.com/integrations/webflow) [Claude websitesOne signed endpoint that Claude Code writes for you from a single prompt.](https://contengi.com/integrations/claude-websites)

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

In the platform

[### Knowledge base

The brand context every post is written from.](https://contengi.com/features/knowledge-base) [### Image generation

Featured images made in your brand style.](https://contengi.com/features/image-generation)

From the blog

[CMS to use with a v0 website when you're not a developer](https://contengi.com/blog/cms-to-use-with-v0-website) [CMS for Vercel websites](https://contengi.com/blog/cms-for-vercel-websites) [What is a headless CMS?](https://contengi.com/blog/what-is-a-headless-cms)

[See all posts](https://contengi.com/blog)

## 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.

[Request beta access](https://contengi.com/beta-access) [Try it out](https://contengi.com/demo)
