Discordで社内アンケート送信→回答回収→報告
メンバーマスタから user_id を引き、Discord のチームチャンネルにメンション付きで質問を投稿、リアクション/返信で回答を回収、SessionStart フックで追跡を再開し、揃ったらオーナーに集計報告する秘書スキル。YesNo/選択肢/自由記述の3形式に対応。
約11.4万トークンの節約 (API料金換算で約170円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「Discordで社内アンケート送信→回答回収→報告」は、業務自動化カテゴリのAI指示書(MDファイル)です。メンバーマスタから user_id を引き、Discord のチームチャンネルにメンション付きで質問を投稿、リアクション/返信で回答を回収、SessionStart フックで追跡を再開し、揃ったらオーナーに集計報告する秘書スキル。YesNo/選択肢/自由記述の3形式に対応。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約11.4万トークン(API料金換算で約170円)・88%のトークンを節約できます。
- カテゴリ
- 業務自動化
- 対応AI
- claude-code、cursor
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約13万トークン
- この巻物使用時
- 約1.6万トークン
- 節約量
- 約11.4万トークン (約170円)
- 更新日
- 2026-07-14
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/discord-survey/raw を読み込んで、この指示書どおりに実装して"
中身
name: secretary-ask description: メンバーに Discord でメッセージを送って回答を回収する秘書スキル。「○○に△△を聞いて」「みんなに□□確認して」「全員に〜聞いて回答もらって」「アンケート取って」「責任者に確認して」などスタッフへの問いかけ・回答収集依頼が来たら必ずこの手順を使う。送信先はチームチャンネル、回答が揃ったらオーナーに Discord DM で報告する。
秘書スキル: メンバーに質問→回答回収
チームのメンバーに Discord でメンション付きメッセージを送り、回答を回収してオーナーに報告するスキル。
基本フロー
- メンバー特定 — 苗字を受け取ってメンバーマスタ Sheet から user_id を引く
- 質問送信 — チームチャンネルに mention 付きメッセージを投稿。回答形式に応じて絵文字リアクション or 自由返信で受け取る
- 進行状態を保存 — 進行中アンケート Sheet に poll_id, message_id, 対象 user_ids, 期限を記録
- 追跡 — 期限まで定期的にリアクション/返信を取得、未回答者には Discord 再メンション
- オーナーに報告 — 全員回答 or 期限到達で通知チャンネルに集計を投稿、オーナーにメンション
重要 ID とリソース(すべて環境ごとに設定)
| 項目 | 値 |
|---|---|
| チームチャンネル ID | <TEAM_CHANNEL_ID> |
| 通知(オーナー宛)チャンネル ID | <NOTIFY_CHANNEL_ID> |
| オーナー Discord user ID | ローカルファイルから取得(<OWNER_ID_FILE>) |
| Bot トークン | ローカルファイルから取得(<BOT_TOKEN_FILE>。コード/コマンドに直書きしない) |
| Bot 名 | <BOT_NAME> |
| Guild ID | <GUILD_ID> |
| メンバーマスタ Sheet | <MEMBER_MASTER_SHEET_ID>(表示名 → user_id) |
| 進行中アンケート Sheet | <POLL_STATE_SHEET_ID> |
| Bot 必要権限 | View / Send / ReadHistory / AddReactions(channel overwrite 経由) |
メンバー特定の手順(苗字→user_id)
- ユーザーは苗字または表示名の一部で指定する。実在メンバーはメンバーマスタ Sheet の表示名列で管理(氏名はスキル本文にハードコードしない)
- メンバーマスタ Sheet を読む
- 表示名列に対して前方一致 + 部分一致(例: 「ふる」→「古川…」のように前方一致で解決)
- 該当が複数なら候補を出してオーナーに確認、ゼロなら「該当なし、メンバーマスタに追加が必要」と返す
- 「全員」「みんな」と言われた場合は表示名列の全行
- user_id が
LOOKUP_FAILまたは空 のメンバーは送信不可。オーナーに user_id 直接入力を依頼するか、Discord member search API を再試行する
Discord 投稿 (PowerShell)
bot はチームチャンネルに View/Send/AddReactions/ReadHistory が必要。403 Missing Access が返ったらオーナーに「Bot の channel permission が外れた可能性」と直リンク付きで報告して止まる。
$token = (Get-Content "<BOT_TOKEN_FILE>" -Raw).Trim()
$channel = '<TEAM_CHANNEL_ID>'
$mentions = '<@USER_ID_1> <@USER_ID_2>'
$body = @{
content = "$mentions`n【依頼】$question`n👍=Yes / 👎=No / ❓=要相談 でリアクションしてください。"
allowed_mentions = @{ users = @('USER_ID_1','USER_ID_2') }
} | ConvertTo-Json -Depth 5 -Compress
$bytes = [System.Text.Encoding]::UTF8.GetBytes($body)
$resp = Invoke-RestMethod -Uri "https://discord.com/api/v10/channels/$channel/messages" `
-Method Post `
-Headers @{'Authorization'="Bot $token"; 'Content-Type'='application/json; charset=utf-8'; 'User-Agent'='DiscordBot (secretary-app, 0.1.0)'} `
-Body $bytes
$messageId = $resp.id # ← これを「進行中アンケート」Sheet に保存
User-Agent ヘッダは必須。
回答形式と受け取り方法
| 形式 | 送信時 | 回答方法 | 取得方法 |
|---|---|---|---|
| YesNo | 本文末に「👍=Yes / 👎=No / ❓=要相談」 | リアクション | GET /channels/{ch}/messages/{msg}/reactions/{emoji} |
| 選択肢 (2-5) | 本文に①②③④⑤+対応 emoji 1️⃣–5️⃣ | リアクション | 同上 |
| 自由記述 | 本文末に「このメッセージに返信してください」 | message reply | GET /channels/{ch}/messages?around={msg} で referenced_message_id が一致するもの抽出 |
絵文字リアクションを先回り投稿(bot 自身が押す)すると回答ボタンが先に並んで親切。PUT /channels/{ch}/messages/{msg}/reactions/{emoji}/@me
状態保存(進行中アンケート)
新規 poll を起こすたびに以下を記録:
poll_id: 8桁の uuid 先頭
作成日時: ISO8601
channel_id: <TEAM_CHANNEL_ID>
message_id: Discord 返ってきた id
質問: そのまま
回答形式: YesNo / 選択肢 / 自由記述
対象user_ids: カンマ区切り
期限: ISO8601(指定なければ 24h 後)
ステータス: pending / collecting / completed / timeout
集計結果: 完了時に書き込む JSON ライク文字列
オーナー報告日時: 最終報告時刻
Sheet 直接書き換えができないコネクタでは、ローカル JSON(~/.claude/secretary-state/polls.json)に保存する運用でよい。
自動再開フック
SessionStart hook(~/.claude/hooks/secretary-poll-resume.ps1 等)として登録し、起動のたび polls.json をスキャンして status='pending' or 'collecting' の poll があれば「再開して」と additionalContext で指示する。これで PC を一晩落とした後でも次の起動で追跡が継続する。保存時は状態に応じ pending/collecting/completed/timeout を必ず付ける。
追跡(チェック処理)
- polls.json を読み、
pending/collectingをループ - 各 poll:
- リアクション形式: 絵文字ごとに
GET .../reactions/{emoji}?limit=100 - 返信形式:
GET .../messages?after={msg}&limit=50からreferenced_message.id == msgを抽出
- リアクション形式: 絵文字ごとに
- 期待 user_id が揃ったか判定
- 未回答者がいて期限内なら再メンション(同スレッドに reply)。回数制限: 1日2回まで(朝/夕)
- 全員回答 OR 期限到達で
completed/timeoutにし、オーナーに DM 通知
オーナーへの報告
通知チャンネルにオーナーメンション付きで投稿:
<@OWNER_USER_ID>
【アンケート集計完了】
質問: 〇〇〇〇
締切: 2026-05-31 18:00
✅ メンバーA: 👍 Yes
✅ メンバーB: 👍 Yes
✅ メンバーC: 👎 No(「来週なら可」と返信)
⏰ メンバーD: 未回答(期限切れ)
✅ メンバーE: ❓ 要相談
回答率: 4/5 (80%)
webhook を使う場合も allowed_mentions の users 配列にオーナー user_id を指定する(<DISCORD_WEBHOOK_URL> は環境ごとに設定)。
やってはいけない
- メンバーマスタに無い人を勝手に user_id 推測して送らない
- bot がチームチャンネルに access できない(403)状態で投稿を強行しない(必ず先に権限付与を依頼)
- 個人攻撃や評価依頼など、メンション送信者として不適切な質問はそのまま投げずオーナーに確認
- 1日3回以上の再メンション(スパムになる)
よくある質問
+「Discordで社内アンケート送信→回答回収→報告」とは何ですか?
メンバーマスタから user_id を引き、Discord のチームチャンネルにメンション付きで質問を投稿、リアクション/返信で回答を回収、SessionStart フックで追跡を再開し、揃ったらオーナーに集計報告する秘書スキル。YesNo/選択肢/自由記述の3形式に対応。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約13万トークンかかりますが、この巻物を使えば約1.6万トークンで済みます。差し引き約11.4万トークン(API料金換算で約170円)・88%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
Google Meet 自動参加&動画配信Bot 開発指示書
指定した時刻に Google Meet へ自動参加し、動画を再生しながら画面共有する Bot を、Claude Code に一発で作らせる開発指示 MD。朝会の定例動画配信・ウェビナーの自動放送に。
Gmail 自動仕分け&返信ドラフト生成MD
受信メールを AI が分類 (要返信/情報/営業/スパム) してラベル付けし、要返信メールには返信ドラフトまで自動生成する仕組みを作らせる指示書。DWD (ドメイン全体委任) 設定手順込み。
Discord 日報Bot — 売上・KPI を毎朝自動通知
Supabase / スプレッドシートから前日実績を集計して、毎朝 Discord に埋め込み形式で通知する Bot を AI に作らせる指示書。二重通知防止・メンション設計・見落とし対策込み。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア