Skip to content

Blog posts on Duda

Duda blog posts use the same MCP tools as WordPress — create_draft, update_draft, schedule_draft, unschedule, list_drafts, get_post. The adapter dispatches by site.platform.

  • Duda Team plan or higher (required for API access)
  • DUDA_API_USER + DUDA_API_PASS secrets set on the worker
  • Site registered with platform: duda and duda_site_name set
  • Blog already exists on the Duda site (Duda creates the blog object on first draft if missing, but the post types editor must be enabled)
create_draft
site_id="<duda-site-id>"
title="Welcome to our new site"
content_md="Hello world..."
tags=["launch", "announcement"]
author="Sarah"
featured_image_url="https://cdn.example.com/hero.jpg"

Duda specifics:

  • content_md is converted to HTML then base64-encoded before POST to /api/sites/multiscreen/{site_name}/blog/posts/import. UTF-8 safe.
  • tags are string names (not IDs like WordPress). Worker passes them through.
  • featured_image_url becomes main_image.url in the Duda payload. There’s no separate upload_media step.
  • The post lands as DRAFT. The worker refuses any path that would publish immediately.
schedule_draft
site_id="<duda-site-id>"
post_id="abc-1234"
scheduled_at="2026-06-10T08:00:00Z"

Lead time ≥ 60 seconds — past dates or near-now timestamps throw ForbiddenOperationError.

unschedule site_id="<duda-site-id>" post_id="abc-1234"

Moves a scheduled post back to draft. No published-→draft path because the worker can’t reach published posts (Duda’s /posts list endpoint returns PUBLISHED items, but the unschedule call is gated by status check).

  • upload_media — Duda accepts image URLs only
  • list_taxonomies / create_taxonomy — Duda tags are free-form strings
  • create_page_from_code — code-first pages are WordPress-only
  • list_page_templates — Duda has its own template system not exposed via REST

See Duda pages for the Pages v2 workflow.