No-write payload and mapping preview
SEO_BLOG_PUBLISH_TOKEN='<tenant-token>' \
SEO_BLOG_SITE_SLUG='<slug>' \
WIX_API_KEY='<wix-api-key>' \
WIX_SITE_ID='<wix-site-id>' \
WIX_MEMBER_ID='<wix-member-id>' \
SEO_BLOG_SITE_ORIGIN='<origin>' \
npx --yes @wotaso/seo-blog-admin-cli publish-cms --cms wix --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>' \
WIX_API_KEY='<wix-api-key>' \
WIX_SITE_ID='<wix-site-id>' \
WIX_MEMBER_ID='<wix-member-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
- Excerpt is capped at 500 characters
- SEO slug is capped at 100 characters
- Project locale maps to the Wix language code
Canonical and route
Wix Blog generates the public route and canonical tag. SEODrafts records the expected URL from the site origin and slug but waits for the successful Wix response before treating it as final.
Known limits
- The publisher blocks content above its safe payload limit.
- Every Markdown block must return a valid Ricos document.
- API key, site, and member must belong to the same Wix context.
Recovery
- Publish as a draft and inspect rich content first.
- When an ID is missing, inspect the API response instead of creating blindly again.
- Isolate the Markdown block responsible for conversion errors.