CMS

Connect WordPress, Ghost, Webflow, Shopify, a GitHub static site or a custom webhook as your publishing target.

AgenticSEO publishes QA-passed articles to your website. Choose your marketing site type in Settings > Publishing, fill in its fields, and save. Supported targets are WordPress, Ghost, Webflow, Shopify, Static site (GitHub), Custom API (webhook) and Manual. Fields marked with * are required.

Note: Fields such as URLs and folders are filled with sensible defaults while they are empty. Secret fields show only their last 4 characters after you save.

WordPress

Publishes posts and uploads images with the WordPress REST API and an application password.

Field Notes
WordPress URL * For example https://example.com
Username * A user who can publish posts
Application password * In WordPress: Users > Profile > Application Passwords
Category IDs (comma separated) For example 3,7
Author ID Optional author for new posts

Images go to the media library with alt text. The first image becomes the featured image.

Ghost

Publishes posts with the Ghost Admin API.

Field Notes
Admin API URL * For example https://example.ghost.io
Admin API key (id:secret) * From a custom integration in Ghost Admin
Tags (comma separated) For example Blog

Ghost also gets the meta title, meta description, feature image and the JSON-LD schema in the page head.

Webflow

Creates items in a Webflow CMS collection with the Data API v2.

Field Notes
Site API token * From the Webflow site settings
Blog collection ID * The collection for blog posts
Rich text field slug * Default post-body
Summary field slug Default post-summary
Meta title field slug, Meta description field slug Optional
Blog URL path Default /blog

Shopify

Creates blog articles with the Shopify Admin REST API.

Field Notes
Store domain * For example my-store.myshopify.com
Admin API access token * From a custom app with blog write access
Blog ID * The blog to post in
API version Default 2026-07
Author name Defaults to your site name
Public blog URL Default your site plus /blogs/news

Warning: Webflow, Shopify and webhook targets load images from the app's public address. If images do not appear, see Troubleshooting.

Static site (GitHub)

Commits a Markdown or MDX file and its images to a GitHub repo (Next.js, Astro, Hugo, Jekyll). Your host deploys on push.

Field Default
GitHub token (contents: write) * Fine-grained token with contents write on the repo
Repository (owner/name) * none
Branch main
Content folder * content/blog
File extension md
Image folder in repo public/images/blog
Public image path /images/blog
Post URL pattern your site plus /blog/{slug}

The file has frontmatter with title, description, slug, date, draft (true when Post status is Draft), image and faq.

Custom API (webhook)

Sends the article as signed JSON to your endpoint with a POST request.

Field Notes
Endpoint URL * Your HTTPS endpoint
Signing secret (HMAC SHA-256) Optional but recommended

Payload

{
  "event": "article.publish",
  "mode": "create",
  "status": "publish",
  "site": { "id": "site-id", "name": "Acme", "url": "https://acme.com" },
  "ticket": {
    "id": "ticket-id",
    "number": 42,
    "type": "new_content",
    "keyword": "payroll software for startups",
    "targetUrl": null
  },
  "article": {
    "title": "Payroll Software for Startups: ...",
    "slug": "payroll-software-for-startups",
    "metaTitle": "...",
    "metaDescription": "...",
    "excerpt": "...",
    "markdown": "## TL;DR ...",
    "html": "<h2>TL;DR</h2> ...",
    "faq": [{ "question": "...", "answer": "..." }],
    "schemaJsonLd": { "@context": "https://schema.org", "@graph": [] },
    "images": [{ "url": "https://app-address/api/assets/abc123", "alt": "..." }]
  }
}
  • mode is create for new pages and update for refresh, internal links and title/meta tickets.
  • status is publish or draft, from Post status.

Headers and signature

content-type: application/json
user-agent: AgenticSEO-Webhook/1.0
x-agenticseo-signature: sha256=<hex HMAC of the raw body>

The signature header is sent only when a signing secret is set. Verify it in Node.js:

const crypto = require("crypto");
const expected = "sha256=" + crypto.createHmac("sha256", SECRET).update(rawBody).digest("hex");
const got = Buffer.from(req.headers["x-agenticseo-signature"] || "");
const ok = got.length === expected.length && crypto.timingSafeEqual(Buffer.from(expected), got);

Response

Return a 2xx status. To record the live URL, return JSON:

{ "url": "https://acme.com/blog/payroll-software-for-startups", "id": "your-post-id" }

Without a url, the app records your site URL plus the slug. Any non-2xx status fails the publish.

Manual

No auto-publish. Approved articles wait in Ready. You copy or download them and mark them published. See Publishing.

Change the site type

Pick a new type in Marketing site type. The app asks for the keys of the new type. Save, then publish a test article as Draft in the CMS first.

Did this page help? Tell us at support@agenticseo.com.