# Discord Release

> X投稿ドラフトから Discord 向けメッセージを生成し webhook で投稿する。/release-xpost 完了後に実行。

- Skill: `receptron/discord-release` (Agent Skill)
- Install (CLI): `npx skillmds@latest add receptron/discord-release`
- Raw SKILL.md: https://api.skillmd.com/api/skills/receptron/discord-release/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: receptron (https://skillmd.com/u/receptron)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/receptron/discord-release

---


バージョン $ARGUMENTS の X投稿ドラフトを Discord 向けに整形し、webhook で投稿する。

## 前提条件

- `docs/release_notes/v$ARGUMENTS/xpost_v$ARGUMENTS_draft.md` が作成済みであること
- 環境変数 `DISCORD_WEBHOOK_URL` が設定されていること
- X 投稿が完了して URL が控えられていること（Discord 投稿時に必要）

## 手順

### Step 1: 環境変数の確認

```bash
source .env 2>/dev/null
echo "${DISCORD_WEBHOOK_URL:?DISCORD_WEBHOOK_URL is not set}"
```

`.env` ファイルから読み込みを試み、それでも設定されていない場合は **STOP** してユーザーに設定を依頼する。

### Step 2: X投稿ドラフトの読み込み

```bash
cat docs/release_notes/v<version>/xpost_v<version>_draft.md
```

### Step 3: Discord 向けメッセージの整形

X投稿ドラフトから以下のルールで機械的に変換する:

1. **メインポスト + 連投ポストを1つのメッセージに統合**
2. **添付メディア行を除去**（`![...](...)`、`#### 添付メディア` 行）
3. **メタ情報セクションを除去**（`## メタ情報` ブロック）
4. **区切り線 `---` を除去**
5. **セクション見出し（`## メインポスト`、`### N. ポスト`）を除去**
6. **冒頭にヘッダーを追加**: `MulmoCast（デスクトップアプリ）v<version> リリースしました！`
7. **X 投稿 URL を冒頭ヘッダーの直後に追加**（ユーザーから取得）
8. **同一トピック内の英語/日本語はスラッシュ区切りで統合**: `English text / 日本語テキスト`
9. **各トピックは空行で区切り、見出し行で始める**: X の各ポストが1トピックに対応する。bullet (`-`) は見出しの下の詳細にのみ使い、トピックの先頭行には使わない（前のトピックの箇条書きの続きに見えるため）
10. **MulmoCast 公式 URL (`https://mulmocast.com`) を末尾に追加** — Discord の主な読者はエンドユーザーなので、ダウンロードページへの導線を優先する（GitHub Release は技術詳細向けなので末尾には載せない）

### Step 3.5: X 投稿 URL の確認

X 投稿 URL が引数やコンテキストで提供されていない場合、ユーザーに確認する。
冒頭ヘッダーの直後に配置する。

### Step 4: ユーザー確認

整形したメッセージをユーザーに提示し、内容の確認を取る。

**確認ポイント**:
- X 投稿 URL が含まれているか
- 内容に抜け漏れはないか
- 2000文字以内に収まっているか（Discord embed の description 上限）

### Step 5: Discord webhook で投稿

**重要**: ユーザー確認後に実行すること。

embed の `title` をクリックすると `url` に飛ぶ。エンドユーザー向けのため `url` は MulmoCast 公式サイトを指す（GitHub Release ではない）。

```bash
MESSAGE=$(cat docs/release_notes/v<version>/discord_v<version>_draft.md)

JSON=$(jq -n \
  --arg title "MulmoCast v<version>" \
  --arg url "https://mulmocast.com" \
  --arg desc "$MESSAGE" \
  '{embeds: [{title: $title, url: $url, description: $desc, color: 5814783}]}')

HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" \
  -H "Content-Type: application/json" \
  -d "$JSON" \
  "$DISCORD_WEBHOOK_URL")
```

### Step 6: 結果確認

- HTTP 204 → 成功
- それ以外 → エラー内容を確認してユーザーに報告

## 重要なルール

- **`DISCORD_WEBHOOK_URL` は環境変数から取得** — ハードコード禁止
- **JSON は必ず `jq` で構築** — 文字列結合で JSON を組み立てない
- **description は 2000文字以内** — 超える場合は末尾を切り詰める
- **投稿前にユーザー確認必須** — webhook 投稿は取り消せないため
- **ハッシュタグは除去** — X向けのハッシュタグ行（`#MulmoCast` 等）は Discord では不要

