with one click
with one click
リリースノートとX投稿ドラフトからMulmoScript(リリースノート動画用)を生成する。/release-xpost 完了後に実行。
X投稿ドラフトから Discord 向けメッセージを生成し webhook で投稿する。/release-xpost 完了後に実行。
リリースノート作成。前回リリース以降の全PRを調査し、PR要約とリリースノートを生成する。
リリースワークフロー全体をガイド。ドラフト一括作成 → リリース PR マージ → 公開アクション一括実行 → 後処理の順に進行。
MulmoScript から Zenn 記事を生成する。/release-script 完了後に実行。
QA テストスイートを作成する。Playbook の知見を活用して CDP 経由の Playwright テストを生成。
| name | release-xpost |
| description | X投稿ドラフト作成。リリースノートからXスレッド用の投稿を生成し、文字数チェック・スクリーンショット撮影を行う。 |
| allowed-tools | Read, Write, Edit, Glob, Grep, Bash, Task, AskUserQuestion, mcp__electron-playwright__browser_take_screenshot, mcp__electron-playwright__browser_evaluate, mcp__electron-playwright__browser_run_code, mcp__electron-playwright__browser_tabs |
| argument-hint | <version> (例: 1.0.11) |
バージョン $ARGUMENTS のX(Twitter)スレッド用の投稿ドラフトを作成する。
docs/release_notes/v$ARGUMENTS/release_notes_v$ARGUMENTS.md が作成済みであることyarn start で起動中であることdocs/release_notes/v<version>/xpost_v<version>_draft.mddocs/release_notes/v<version>/images/ (スクリーンショット)過去2バージョンのX投稿を読み込み、フォーマット・トーンを把握する:
ls docs/release_notes/*/xpost_*.md
各ファイルを読んで、構成パターンを確認する。
リリースノートの内容をもとに、スレッドの構成を提案する:
#MulmoCast #AIvideo #AI動画ユーザーに構成を確認する。
必ず docs/release_notes/v<version>/xpost_v<version>_draft.md にファイルとして書き出すこと。 口頭での提示だけで済ませない。
以下のフォーマットで作成:
# X Thread Draft for v<version>
## メタ情報
- **作成者**: @mulmocast (MulmoCast)
- **スレッド件数**: N 件(予定)
## メインポスト
📢 MulmoCast v<version> released!
[英語の説明]
[日本語の説明]
### 添付メディア

---
## 連投ポスト
### 1. ポスト
[内容]
#### 添付メディア

---
Step 3 のドラフトに対して文字数を検証する。 結果は各ポストの末尾に **文字数**: NNN/280 として記載する。
X投稿の文字数ルール:
以下のPythonスクリプトで全投稿をチェック:
# X weighted count: CJK/fullwidth = 2, others = 1, total limit = 280
weighted = 0
for ch in post:
cp = ord(ch)
if (0x1100 <= cp <= 0x115F or 0x2E80 <= cp <= 0x303E or
0x3040 <= cp <= 0x33BF or 0x3400 <= cp <= 0x4DBF or
0x4E00 <= cp <= 0x9FFF or 0xA960 <= cp <= 0xA97C or
0xAC00 <= cp <= 0xD7A3 or 0xF900 <= cp <= 0xFAFF or
0xFE10 <= cp <= 0xFE6F or 0xFF01 <= cp <= 0xFF60 or
0xFFE0 <= cp <= 0xFFE6 or
0x1F000 <= cp <= 0x1FFFF or
0x20000 <= cp <= 0x2FA1F):
weighted += 2
else:
weighted += 1
超過した場合: 280以内に収まるまでテキストを編集する。英語テキストを優先的に短縮する(日本語は意味が変わりやすいため)。編集後に再度チェックし、全ポストが280以内になってからファイルに書き出す。
ドラフトファイルに記載した各ポストの添付メディアに対応するスクリーンショットを用意する。
方法A: ユーザーに依頼(推奨)
docs/release_notes/v<version>/images/ に保存方法B: Playwright MCP で撮影(アプリ起動中の場合)
browser_evaluate で Settings → Language → Englishbrowser_evaluate で対象画面に移動browser_take_screenshot でキャプチャdocs/release_notes/v<version>/images/ に保存browser_snapshot は絶対に使わない(大量トークン消費)browser_evaluate や browser_run_code で要素操作する{ポスト番号}-{画像番号}_{説明}.png
01、連投1=02、連投2=03...(2桁ゼロ埋め)01, 02...)01-01_settings_azure_openai.png ← メインポスト, 画像1
02-01_settings_vertex_ai.png ← 連投1, 画像1
02-02_style_image_params_vertexai.png ← 連投1, 画像2
03-01_style_caption_split.png ← 連投3, 画像1
この命名規則により /release-script が画像→ビートの対応を機械的にマッピングできる。
ドラフトをユーザーに提示し、以下を確認:
docs/release_notes/v1.0.9/xpost_v1.0.9.mddocs/release_notes/v1.0.10/xpost_v1.0.10.mddocs/release_notes/v1.0.11/xpost_v1.0.11_draft.md