Workflows & CI/CD
Static Sites & Headless CMS
Integrate ZyVOP with Astro, Next.js, Hugo, Docusaurus, and headless CMS webhooks.
Static Sites & Headless CMS Integration
If your technical publication is built on a modern static site generator (SSG) or headless CMS, you can use ZyVOP as your automated syndication pipeline without changing your existing blogging workflow.
Architecture
graph LR
Dev["Developer"] --> Git["Git Repository<br/>(Markdown / Content)"]
Git --> Build["SSG Build<br/>(Astro / Next.js / Hugo)"]
Build --> Vercel["Primary Domain<br/>(Canonical Origin)"]
Git --> ZyVOP["ZyVOP Action / API"]
ZyVOP --> DevTo["DEV.to"]
ZyVOP --> Hashnode["Hashnode"]
ZyVOP --> Medium["Medium"]Astro Integration Example
In Astro projects with Content Collections (src/content/blog/*.md):
- Define your canonical URL in your Astro collection schema:
import { defineCollection, z } from 'astro:content';
const blog = defineCollection({
schema: z.object({
title: z.string(),
description: z.string(),
tags: z.array(z.string()),
canonical_url: z.string().optional(),
}),
});- Add a simple post-build syndication script:
import { execSync } from 'node:child_process';
import glob from 'glob';
const files = glob.sync('src/content/blog/*.md');
for (const file of files) {
console.log(`Checking ${file}...`);
execSync(`npx zyvop publish ${file} --base-url https://myastroblog.dev`, {
stdio: 'inherit',
env: process.env,
});
}Next.js (Contentlayer / MDX / Fumadocs)
In Next.js repositories, publish articles via standard NPM scripts:
{
"scripts": {
"publish:article": "zyvop publish"
}
}Running:
npm run publish:article -- ./content/posts/my-post.mdHeadless CMS Webhooks (Strapi, Sanity, Contentful)
When managing articles inside a headless CMS:
- Configure an outgoing webhook on article publish events.
- Direct the webhook to an API route (e.g. Next.js API route or AWS Lambda).
- The serverless function transforms CMS JSON fields into Markdown and forwards the payload to
POST https://zyvop.com/api/v1/articleswithAuthorization: Bearer $ZYVOP_TOKEN.