Push draft release notes to Strapi CMS. Content is simplified for end users in staging, separate from full docs changelog.
changelog/index.mdx is the single English source. Do not shorten it for CMS — Step 1 (LLM simplify) produces popup copy in staging/en/.
| Docs translation (i18n/README.md) | CMS sync (this doc) | |
|---|---|---|
| Command | pnpm translate |
pnpm cms:prepare:en / cms:prepare:locales / cms:sync |
| Output | {lang}/**/*.mdx on Mintlify |
.github/scripts/cms/staging/ → Strapi |
| Input | Full docs MDX | LLM-simplified popup copy |
| Locales | ja, zh, ko | en, zh, ja, ko, fr, ru, es |
- Do not use
pnpm translateto fill CMS staging — usepnpm cms:prepare:enthencms:prepare:locales. - Get user approval on staging EN before
cms:prepare:locales; on all staging beforecms:sync. - Sync and publish comfyui only by default (
--project comfyui). - Cloud hard gate: every time someone asks to push/sync/publish to CMS, ask again whether Cloud should go out. Run
--project cloudonly after they manually confirm Cloud staging (links + copy) in that request. Pasted Cloud URLs or “push to CMS” alone are not Cloud approval. The gate covers preview, sync, and publish. See skillcms-changelog-sync→ Hard gate: Cloud push / publish. - Strapi publish is manual by default — run
pnpm cms:publishafter review (not automatic on sync). - Do commit
.github/scripts/cms/staging/andpublished-versions.jsonafter Strapi publish.
Three separate steps — review between each; sync only after confirmation:
changelog/index.mdx ← full docs (unchanged)
│
▼ Step 1: pnpm cms:prepare:en
staging/en/ ← simplified popup EN (review)
│
▼ Step 2: pnpm cms:prepare:locales
staging/{zh,ja,ko,fr,ru,es}/ ← translated from staging EN (review)
│
▼ Step 3: pnpm cms:sync
Strapi drafts → publish → published-versions.json
| Command | Step | Role |
|---|---|---|
pnpm cms:prepare:en |
1 | LLM simplify docs EN → staging/en/ |
pnpm cms:prepare:locales |
2 | Translate staging/en/ → other locales |
pnpm cms:preview / cms:sync |
3 | Push staging → Strapi drafts |
pnpm cms:publish |
— | Publish reviewed Strapi drafts → live |
Docs site (zh/changelog/, etc.) stays independent. CMS uses .github/scripts/cms/staging/ only.
.github/scripts/cms/staging/
en/changelog/index.mdx ← comfyui (default project)
zh/ … ja/ … ko/ … fr/ … ru/ … es/
cloud/
en/changelog/index.mdx ← cloud project
zh/ … (same locale set)
Each version is saved immediately after simplify/translate (safe to resume).
After prepare:en, secondary projects (cloud) merge only the prepared <Update> blocks from comfyui. If cloud EN already has that version, incoming tracking shortlinks are rewritten to match cloud EN (local vs cloud campaign URLs). prepare:locales translates each project from its own staging EN and does not copy comfyui locale files onto cloud.
Bullet URLs (agents rewrite after prepare:en; see skill cms-changelog-sync): Cloud prefers a user-supplied UTM/links.comfy.org URL, else https://cloud.comfy.org/?template=<name> from workflow_templates index.json (video: r2v → i2v → t2v). Docs and local CMS prefer a blog.comfy.org post, then the GitHub PR, then the repo commit/tag. Cloud copy is shorter than local (announce the model, do not enumerate every node).
| Project | CLI | Default attention |
|---|---|---|
comfyui |
default / CMS_PROJECT=comfyui |
low |
cloud |
--project cloud / CMS_PROJECT=cloud |
low |
Set high attention for a specific version:
pnpm cms:set-attention -- cloud v0.24.0 high --savePersists to attention-overrides.json (used on sync). Or edit that file manually.
pnpm cms:prepare:en -- --force v0.25.0 # Step 1: simplify EN
pnpm cms:prepare:locales -- v0.25.1 # Step 2: translate (after EN approved)
pnpm cms:preview -- --project comfyui v0.25.1 # Step 3: dry-run sync (comfyui only)
pnpm cms:sync -- --project comfyui v0.25.1 # Step 3: push drafts (after staging approved)
pnpm cms:publish -- --project comfyui v0.25.1 # publish + refresh published-versions.json
# Cloud: pnpm cms:preview|sync|publish -- --project cloud … only after Hard gate confirmationDefault: comfyui + cloud on prepare. Sync/publish/preview default for agents: comfyui only — add --project cloud only when the user explicitly confirms Cloud after the agent asks (hard gate; every CMS push/publish request; includes preview).
Local default (no args): all unpublished EN versions (from published-versions.json). Full backfill: CMS_SYNC_ALL=1.
Prompt: cms-simplify-prompt.ts — tuned for a small in-app notification, not full docs.
Configured in cms-config.json → simplify:
| Key | Default | Meaning |
|---|---|---|
max_bullets_total |
10 | Bullets for the entire version (not per section) |
max_sections |
3 | **New Open-Source Model Support** → **Partner Node Updates** → optional **New Node Updates** (bold labels, not ##) |
- Section order is fixed when present: open-source models first, partner nodes second, node updates last
- New Node Updates is optional by default. Omit from the CMS popup even if docs has New Nodes; include only when a human explicitly asks
- Each bullet: Name: 12–25 word description — preserve model/node traits from source
- Keep PR links when the source has them
- Drop performance tweaks, minor fixes, Load3D/UI housekeeping, and New Nodes unless requested
- English only (Step 1):
pnpm cms:prepare:en -- --force v0.25.0 - Translate only (Step 2):
pnpm cms:prepare:locales -- --force v0.25.0— reads existingstaging/en/, never re-simplifies
| File | Purpose |
|---|---|
cms-config.json |
Locales, projects (comfyui/cloud), simplify settings |
attention-overrides.json |
Per-project high-attention versions (optional) |
published-versions.json |
Published versions — sync skips these |
See .env.local.example (TRANSLATE_* for prepare, CMS_* for sync).
After reviewing drafts in Strapi (or trusting staging content):
pnpm cms:publish --preview -- --project comfyui v0.25.1 # dry-run
pnpm cms:publish -- --project comfyui v0.25.1 # publish + auto-refresh published-versions.json
pnpm cms:publish -- --project comfyui v0.25.1 --no-registry # publish only, skip JSON
# Cloud publish: only after Hard gate confirmation, with --project cloud- Publishes every locale that has a draft (en first, then zh/ja/ko/fr/ru/es)
- Automatically refreshes
published-versions.jsonfrom Strapi (scans comfyui + cloud) - Default (no version): all unpublished EN versions that have EN drafts in Strapi
- Bulk: add
--yesorCMS_PUBLISH_CONFIRM=1; all drafts:CMS_PUBLISH_ALL=1 - Uses Strapi Content API
PUT ?status=published
cms:publish refreshes the registry automatically. Manual rescan without publishing:
bun .github/scripts/cms/update-published-versions.ts --write