No-write payload and mapping preview
SEO_BLOG_PUBLISH_TOKEN='<tenant-token>' \
SEO_BLOG_SITE_SLUG='<slug>' \
WEBFLOW_TOKEN='<webflow-token>' \
WEBFLOW_COLLECTION_ID='<webflow-collection-id>' \
SEO_BLOG_SITE_ORIGIN='<origin>' \
npx --yes @wotaso/seo-blog-admin-cli publish-cms --cms webflow --site-slug '<slug>' --site-origin '<origin>' --dry-run
For a currently due approved post, --dry-run builds the destination payload without writing to the provider. It does not contact the provider or prove credentials, remote schema compatibility, deployment, or a live page; when no post is due, provider inputs are not exercised.
Scheduled runner health heartbeat
SEO_BLOG_PUBLISH_TOKEN='<tenant-token>' \
SEO_BLOG_SITE_SLUG='<slug>' \
WEBFLOW_TOKEN='<webflow-token>' \
WEBFLOW_COLLECTION_ID='<webflow-collection-id>' \
SEO_BLOG_SITE_ORIGIN='<origin>' \
SEO_BLOG_SCHEDULED='true' \
npx --yes @wotaso/seo-blog-admin-cli health --config seo-blog.config.json --mode cms --site-slug '<slug>' --site-origin '<origin>'
Run this from the real scheduled runner after seo-blog.config.json contains the selected connector configuration and the listed secrets are loaded. It reports configuration readiness, not a live article. The dashboard expires readiness at the returned deadline, with a 36-hour fallback when no deadline is available.
Fields and data model
- Rich text receives the rendered body HTML
- Custom collection fields use an explicit field map
- Existing items are updated rather than recreated
Canonical and route
The Webflow Collection Template owns the public route, canonical tag, and sitemap. SEODrafts checks the expected URL against the configured site origin, while the rendered Webflow output remains authoritative.
Known limits
- Default mappings only fit collections with matching field names.
- Large collections need a deterministic lookup strategy.
- The API token needs publishing rights for the target site and Collection.
Recovery
- Begin with dry run and draft mode.
- Compare the field map with Webflow field types when validation fails.
- Verify the Collection Template route before reporting a post as published.