name: oyasumi description: 毎晩「おやすみ」「おやすみなさい」「good night」「夜のまとめ」「就寝」「1日の振り返り」「夜のブリーフィング」などと入力されたら必ず起動する。1日の活動(SNS投稿・ブログ・タスク完了・市民相談・ニュース・政策候補追加・Drive新規資料)を機械集約してNotionデイリーサマリを生成し、Google Driveに当日新規保存された資料を要約して📂Drive資料サマリDBへ蓄積(重複除外)、未完了タスクを明日に自動繰越し、明日のスケジュールをプレビューし、朝のダッシュボードに「昨夜のまとめ」セクションを反映する就寝時オートメーション。金曜日の夜のみ追加で週次レポートを自動生成する。完全自動化(途中で選択肢を求めない)。
おやすみスキル — 夜のオートメーション
ユーザーが夜の挨拶(「おやすみ」など)をしたとき、または「夜のまとめ」「1日の振り返り」を求めたとき、このスキルを実行する。
🔴 タスクはTodoist参照(2026-06-14〜・最優先・他記述に優先)
本スキル内の「完了タスク集計・未完了タスクの繰越し・プロジェクト化判定」は Notion✅タスクDB(292cf503)・プロジェクトDBではなく Todoist を使う。下記表・Stepで ✅タスクDB 292cf503 view を叩く記述は無効化し、代わりに:
- 今日完了したタスク = その日
td.py done <id>でcloseした分(会話・nichijoで完了にしたもの)。Todoistの完了履歴に依存せず、当日closeした件名を要約に載せる。 - 未完了タスクの確認・繰越し =
python3 ~/.claude/scripts/todoist/td.py overdue(期限切れ)+td.py today。繰越しは期限切れタスクを翌日へ送るならtd.py addではなく既存タスクの期限付け替え(必要時のみ・基本は据え置きで草川が翌朝td.py morningで再確認)。 - 監査・プロジェクト化判定 =
td.py audit(期限超過/期限なし/@結果待ち/@保留の件数)。基準A〜Eの判断ロジックは継続するが登録先はTodoistプロジェクト。 詳細は CLAUDE.md「タスク・プロジェクトはTodoistに一本化」+project_todoist_task_migration.md。
⚡ トークン効率化原則(2026-05-07追加・最重要)
oyasumi は ohayo と同様に1回100K+消費しがち。以下を厳守してトークン半減を狙う。
- Notion DB 取得は常に
pageSize: 30上限:今日付の差分しか使わないので全件不要。view_url 経由で時系列降順を担保 - Drive
list_recent_filesはpageSize: 10:議員業務関連の当日新規は通常3〜5件。10件超は modifiedTime 降順先頭10件のみ採用 - Drive
read_file_contentは先頭1500字打切り:要約200〜400字には十分(旧3000字から半減) - Gmail 取得は ohayo との共有前提:oyasumi が取得した結果は同一セッション内で ohayo 起動時に再利用可能。別セッション24h超のみ ohayo 側で再取得
- Step 6 デイリーサマリは2,500字以内厳守:0件セクション見出しごと省略、テーブルは2列10行以内、説明的長文化禁止
- Step 8 朝ダッシュボード本文置換:fetch→update_content の2発を許容するが、
old_strは短く(見出し1行+直下数行)に絞ってマッチ確実性を担保。長文一発置換禁止 - 0件 DB のスキップ:notion-query-database-view が0件返した DB は後段集計から完全スキップ(空テーブル組み立てに余計なトークンを使わない)
Why: 2026-05-06 ohayo 燃費改善方針と対称運用。夜100K+ × 朝100K+ で日次200K+ は持続不可能。
設計原則(最重要)
このスキルは 完全自動化 が絶対条件。以下を厳守すること:
- 途中で選択肢・確認・質問を一切しない。判断が必要な場面はすべてデフォルト動作で進む
- 失敗してもスキップして続行(fail-safe)。1つのStepが失敗しても他のStepを止めない
- 判断が分かれる場合はドラフト保存(ステータス:下書き/要確認)にして、翌朝のダッシュボードで人間が確認する流れに統一
- 書き込み系は必ず実行。「データが揃ってない」「変化がなさそう」等の理由でスキップしない(空でも空のサマリを保存)
やること(全Step並列実行が基本)
Step 0: 日付の取得と曜日判定
- 今日の日付 を
YYYY-MM-DDとYYYY年M月D日(曜日)の両形式で確定 - 曜日判定:金曜日なら Step 7(週次レポート生成)を有効化
- 明日の日付 を
YYYY-MM-DDとYYYY年M月D日(曜日)で確定 - 今週の月曜の日付 を計算(金曜のみ使用:週次レポートの集計開始日)
Step 1: 並列データ収集(全部同時に投げる)
以下のデータを 同時並行 で取得する。順次実行は禁止。
1-A. 明日のCalendar取得(kusakawa.taku のみ・2026-05-01 燃費精査)
mcp__claude_ai_Google_Calendar__list_events:
- calendarId:
kusakawa.taku@gmail.comのみ(t.higuchi125@gmail.comは議員業務イベント0件運用のため呼び出さない・注:kusagawaではなくkusakawa) - time_min: 明日の00:00:00(ISO 8601)
- time_max: 明日の23:59:59(ISO 8601)
- orderBy:
startTime、timeZone:Asia/Tokyo
時刻順に並べ、タイトル・開始時刻・終了時刻・場所を抽出。
1-B. 今日のCalendar振り返り取得
mcp__claude_ai_Google_Calendar__list_events:
- calendarId:
kusakawa.taku@gmail.comのみ - time_min: 今日の00:00:00 / time_max: 今日の23:59:59
- → Step 2のnichijo自動補完と Step 6のサマリで使用
1-C. Gmail振り返り
mcp__claude_ai_Gmail__search_threads:
- query:
newer_than:1d -category:promotions -category:social - max_results: 20
- → 件名・送信者・既読/未読を集約
ohayo との Gmail 共有(2026-05-01 燃費精査):
- 取得結果を内部メモに保持し、翌朝同一セッションで ohayo が起動した際に再利用可能な形で保持する
- 別セッション or 24h超なら ohayo 側で再取得
1-D. Notion DB群並列取得
以下を 並列 で取得:
| データソース | DB / data_source_id | フィルタ条件 |
|---|---|---|
| 📣 投稿管理DB(SNS+ブログ統合) | 1bd98deb-624f-402c-aeb3-bdaa4782b389 |
ステータスが完了系 かつ 更新日=今日。プラットフォームでブログ/SNS/動画を区別(旧ブログ記事管理DB dcdf44af- は2026-05-03廃止統合) |
| 日次ルーティンログDB | f6d15ac0-73fa-414f-8242-03e8f06aa4e3 |
日付=今日(存在チェック用) |
| ✅タスクDB(完了) | 292cf503-a68f-81c6-b9dd-000b3ffdd2ce |
ステータス=Done かつ 更新日=今日 |
| ✅タスクDB(未完了・期限今日以前) | 同上 | ステータス≠Done/Archive かつ 期限≤今日 |
| 一般質問ネタDB | 42716725-fece-497f-9782-705076539de4 |
作成日=今日 |
| 市民意見リストDB | c2c34bd8-1e16-492e-aab0-d3f497d18d4d |
作成日=今日 + 別途 対応状況が未対応/対応中の全件 |
| 📰ニュースDB | 29e5c1a2-d64d-4822-81fd-0d642c3f07bc |
日付=今日 |
| 🎯政策候補DB | 6f1895ac- 系(fetch して確認) |
作成日=今日 |
🚨 取得手段は notion-query-database-view 一択(2026-05-01 燃費精査・改訂):
notion-searchは使わない。data_source_url指定 +created_date_rangeフィルタでの絞り込みは信頼性が低く0件を返しがち(2026-04-30 oyasumi で SNS/ブログ/市民意見リストDB の3連発0件失敗の原因)- 全DB の view_url を以下に固定。view_url 不明なDB(政策候補DB等)は 初回1回だけ
notion-fetchで取得して以後 memo、notion-searchへの fallback は禁止 - 0件でもエラー扱いせず、0件として記録して進める
確定済み view_url(変更厳禁)
| DB | view_url |
|---|---|
| ✅タスクDB(最重要) | https://www.notion.so/292cf503a68f814eafcdec9eed56f273?v=292cf503a68f811e9555000c1fce8ad5 |
| 📰ニュースDB | https://www.notion.so/f2eefc669dd54648bbcdacdc8afa1158?v=9d34f9a4-2bc1-4381-a31b-8f8c8ac719e2 |
| SNS投稿管理DB(2026-05-08修正) | https://www.notion.so/78f40f33ae714f329cc3b00c0a36707c?v=6ac6eddd-53b7-4e54-8ebe-ec2e02227718 |
| 一般質問ネタDB(2026-05-08修正) | https://www.notion.so/cb47d25e30b14b61b39f56254bf9432a?v=2d912401-3794-484a-8252-04ade354fbd2 |
| 📋市民意見リストDB(永続・c2c34bd8系・2026-05-08確定) | data_source collection://c2c34bd8-1e16-492e-aab0-d3f497d18d4d / database top page https://www.notion.so/8a36d28a0e1d4fb595a09107f663aa1e(要viewURL再取得) |
| プロジェクトDB | https://www.notion.so/292cf503a68f813aa68dd75cbc469c92?v=292cf503a68f814c914e000c76ddc78f |
| 📂Drive資料サマリDB | https://app.notion.com/p/8815412449ad4de5b3b57145513309df |
| 🎯政策候補DB | 初回 notion-fetch で取得後 memo |
⚠️ 2026-05-08確定:旧記載
70eeaeabe7e246599e0e7d5f8fef88c6は実は「📦 旧受付BOX(2026-04-30〜2026-05-02・市民意見リストへ統合済み・data_source 354432ec-)」を指していた廃止DB。現役は c2c34bd8 系。SNS投稿管理DB/一般質問ネタDB はpage URLのみで?v=不在のためnotion-query-database-viewがvalidation_errorで0件返却していた(2026-04-30〜05-07の3DB失敗事故の根本原因)。 ⚠️ 旧ブログ記事管理DB(dcdf44af-)は2026-05-03廃止統合済み。SNS投稿管理DB(1bd98deb-)にプラットフォーム=ブログとして統合されている。
✅タスクDB 取得後の処理(必須)
ステータスがDone/Archiveのものは除外(この除外が抜けると古い完了タスクが残る)- その上で
date:期限:start≤ 今日 のものを「未完了・期限超過/今日」として抽出 - 別途
ステータス=inboxかつdate:期限:start= 今日 のものを「本日inbox」として抽出
各DBの集計方針
- SNS投稿管理DB / ブログ記事管理DB: 取得後ローカルで「更新日=今日 かつ ステータスが投稿済/公開済系」を絞り込む
- 市民意見リストDB(c2c34bd8): 取得後ローカルで「作成日=今日」+「対応状況が未対応/対応中の全件」を別途集計
- 一般質問ネタDB: 取得後ローカルで「作成日=今日」を絞り込む
- 🎯政策候補DB: 取得後ローカルで「作成日=今日」を絞り込む
⚠️ ダッシュボードの旧テーブルからの数値流用は禁止。必ず実DBクエリの結果のみを採用する(2026-04-30事故踏まえ)。
1-E. Google Drive 当日更新ファイル取得
mcp__claude_ai_Google_Drive__list_recent_files を 並列 で呼ぶ:
- orderBy:
lastModified - pageSize:
10(2026-05-07 燃費改善:旧25→10。当日新規は通常3〜5件で十分) - excludeContentSnippets:
true(一覧段階では本文不要)
取得後、ローカルで以下を必ず実施:
modifiedTimeが 今日(JST 00:00〜23:59) の範囲のファイルだけ抽出(タイムゾーン換算注意:DriveはUTC、今日のJST 00:00 = 前日UTC 15:00)- 既登録ID除外:📂Drive資料サマリDB(data_source_id
317c4d02-ac0a-48c3-9fc5-56029000e64e)をnotion-query-database-viewで過去7日分取得し、そこに含まれるファイルIDプロパティの値とマッチするidのファイルはスキップ - 残った新規ファイル群を 新規Drive資料リスト として保持(後続 Step 5.5 で処理)
- 上限:最大10件(多すぎる日は modifiedTime 降順で先頭10件)。残りは
処理ステータス=スキップで件数だけ集計 - 0件なら空のままでOK(後続 Step 5.5 もスキップ)
注意:list_recent_files は所有・閲覧したすべてのファイルが返る。viewedByMeTime のみで modifiedTime が今日でないものは除外(単に今日開いただけのファイルを「新規資料」として誤検出しない)。
Step 2: nichijo(日次ルーティンログ)自動補完
Step 1-D で取得した「日次ルーティンログDB の今日のページ」の状態に応じて分岐:
共通:CalendarのKEEP/SKIP判定(nichijo Step 1.5と同一基準)
Step 1-C で取得した今日のCalendarイベントから、以下を KEEP(記録に残す):
- 議会公務(本会議/委員会/議員総会/議運/会派会議)
- 視察・現地確認・調査
- 委員会・協議会・連絡会・審議会
- 市民相談/面談/ヒアリング
- 街頭演説・挨拶まわり・戸別訪問・後援会活動
- 地域イベント参加(祭り/式典/総会/自治会行事/PTA等)
- 後援会・支持者交流(懇親会・ワイン会・新年会等)
- 講演・登壇・取材対応
- 公開行事への出席
以下は SKIP(記録から除外):
- 家族関連(送迎/通院等)
- 個人の習い事・趣味(公務性なし)
- 「【参考】」「【参考までに】」プレフィクス
- 「private」「個人」と明示されたもの
- 判断に迷う場合は KEEP 寄り
2-A. 今日のページが存在しない場合(自動推測でフル生成)
以下のソースから今日の活動を自動推測:
- 今日のCalendar予定(KEEPのみ・1-Cで取得)
- 今日のSNS投稿(1-D)
- 今日のブログ公開(1-D)
- 今日完了したタスク(1-D)
- 今日新規追加された市民意見(1-D)
これらを時系列で並べ、以下のフォーマットで日次ルーティンログDBに新規ページを作成:
タイトル: YYYY-MM-DD ⚠️AI自動生成
日付: today
内容(content):
## ⚠️ AI自動推測による補完版
このログは「おやすみ」スキル起動時に nichijo の手動記録が無かったため、
Calendar・SNS・タスク完了履歴等から自動推測したものです。
翌朝、必要に応じて手動修正してください。
### 📅 本日のスケジュール(Google Calendar抽出・議員業務分のみ)
- **HH:MM–HH:MM** または **終日**: 予定タイトル
...
*除外(私的予定)*: 予定タイトル列挙(あれば)
### 今日の発信
- SNS: N件投稿(媒体: ...)
- ブログ: M件公開
### 完了タスク
- タスク名1
...
### 受け付けた市民意見
- 件名1
...
ステータス:下書き(DBに該当プロパティがあれば)
2-B. 今日のページが既に存在する場合(Calendar セクションのみ補完)
既存ページを notion-fetch で取得し、以下の判定:
### 📅 本日のスケジュールセクションが既に存在する → 何もしない(重複追記しない)- 同セクションが存在しない →
notion-update-pageのupdate_contentで本文末尾にCalendar KEEP分を追記:
### 📅 本日のスケジュール(Google Calendar抽出・議員業務分のみ)
- **HH:MM–HH:MM** または **終日**: 予定タイトル
- ...
*除外(私的予定)*: 予定タイトル列挙(あれば)
KEEP分が0件なら「(議員業務分の予定なし)」と明記して空セクションだけ作る(後続スキルでの照合のため)。
既存の手動記録は絶対に上書き・改変しない(追記のみ)。
Step 3: 未完了タスクの自動繰越し + プロジェクト化判定(2026-05-01追加)
入力データの取得(必ず実DBクエリ)
Step 1-D の query 結果(タスクDBの「すべて」view)から、ローカルで以下を抽出:
- 必ず除外:
ステータス∈ {Done,Archive}(これを忘れると古い完了済タスクが繰越し対象として残り、ダッシュボードを汚す) - 対象抽出:
- 期限が今日:
date:期限:start= 今日の YYYY-MM-DD - 期限が今日以前(超過):
date:期限:start< 今日 ステータス=inboxで期限なし → 繰越し対象外(Step 6 サマリの 📋 積み残しでだけ言及)
- 期限が今日:
プロジェクト化判定(Step 3 内に組込み・2026-05-01以降必須)
繰越タスク群に対して、以下基準A〜Eのいずれか1つ以上該当する未紐付けタスク(プロジェクトrelation空)を検出:
- A: 同一テーマで関連タスク2件以上 / B: 同テーマ散在10件以上
- C: 着手〜完了が2週間超(=繰越超過状態) / D: 複数ステークホルダー絡み
- E: 「〜検討」「〜整備」「〜推進」等の継続性ある語感
重複判定回避: 昇格判定日=今日が入っているタスクは再判定スキップ(nichijo整理モードとのダブル提案防止)。
該当検出時は朝のダッシュボード「💡 プロジェクト化候補」セクションに反映(草川が朝確認時にyes/no判断)。oyasumi本体では自動登録しない(朝の判断に委ねる)。
繰越しルール
- 期限が今日のタスク: 期限の DB 値変更は行わない(朝のダッシュボードで「本日期限」として再表示すればよく、書き換えはノイズ)
- 期限が今日以前(=超過)のタスク: 期限はそのまま(超過証跡保持)
- DBへの ⚠️ プレフィクス書き込みは原則禁止(タイトル汚染リスク・二重マーカー化)
- 旧仕様(タイトル先頭に ⚠️ 付加)は廃止。代わりに ダッシュボード描画時に表示のみで ⚠️ 付与 する(ohayo Step 4 のテーブル組み立てで処理)
- 例外:ユーザーが明示的に「タイトルにも書いて」と指示したときのみ実施
制約
- 絶対にタスクを削除しない
- 絶対にタイトルを書き換えない(上記例外を除く)
- 失敗時もスキップ続行
- 件数の集計値(超過 X 件 / 本日期限 Y 件)を Step 6 サマリへ受け渡す
Step 4: 未対応市民相談の整理(参照のみ)
Step 1-D で取得した「市民意見リストDB(対応状況=未対応/対応中)」全件を集計。 件数と直近5件のタイトルを Step 6 のデイリーサマリへ流す。
新規書き込みは行わない(参照のみ)。
Step 4.5: AIミーティングノート自動振り分け(2026-05-03追加)
Notion AI Meeting で当日記録された会議を、📅 ミーティングノートDB(26d7848d-ad1a-4e84-806f-a8dbccb1872b)へ自動転記する。これは nichijo整理モード R1-B / R2 / R4-A の subset を oyasumi 内部で実行するもので、ユーザーが明示的に「整理」と打たなくても夜の段階で自動整理が完了するようにする。
設計方針(草川 2026-05-03 承認の D + B 案):
- D: nichijo の整理ロジックを内部呼出し(重複定義を避ける)
- B: 会議体マスタとのマッチは確度0.8以上のみ自動紐付け、それ以下は relation 空で保存して翌朝レビュー対象にする
4.5-1. 当日のAIミーティングノート取得
mcp__claude_ai_Notion__notion-query-meeting-notes で当日 createdTime のページを取得:
{
"filter": {
"operator": "and",
"filters": [{
"property": "created_time",
"filter": {
"operator": "date_is",
"value": {"type": "exact", "value": {"type": "date", "start_date": "YYYY-MM-DD"}}
}
}]
}
}
取得結果が0件なら本Stepをスキップ。Step 6サマリに「AIミーティング: 0件」と記載のみ。
4.5-2. 既振り分け済みフィルタリング
📅 ミーティングノートDB(ds:26d7848d-)を notion-query-database-view でクエリ。今日作成された全レコードの AI元ノートURL を取得し、4.5-1 で取得したAIノートURL一覧と照合。既に紐付け済みのものは除外。
4.5-3. 各AIノートの分類・推定(R2 subset)
残った各AIノートについて、タイトル+(必要なら冒頭本文先頭500字)から以下を推定:
会議種別の自動推定:
| キーワード | 推定種別 |
|---|---|
| 議会/定例会/委員会/本会議/会派/議運/議長/議員 | 議会公務 |
| 自治会/町内会/総会/組合/協会/JC/協議会/青年会議所 | 地域・団体 |
| 相談/お困り/陳情/要望/〇〇様(個人名) | 市民相談 |
| その他(マッチなし) | 未分類 |
重要度の自動推定:
- 高:議会関連 / 市長関連 / 緊急性キーワード(決定/緊急/重要)
- 中:定例会議 / 通常打ち合わせ
- 低:その他・短時間メモ
フォローアップ要否の自動推定:
- タイトル or 本文に「次回」「ToDo」「○○まで」「課題」「持ち帰り」等のキーワードがあれば
__YES__、なければ__NO__
4.5-4. 会議体マスタとのマッチング(B案:確度0.8以上のみ)
🏛 会議体マスタDB(ds:46414643-)から「アクティブ状態 = 継続中」のレコード一覧を取得。
各AIノートタイトルに対して、会議体名との文字列マッチを実行:
- 完全一致 or 包含マッチ(タイトルに会議体名が含まれる):確度1.0、自動紐付け
- 部分一致(会議体名の8割以上の文字がタイトル内連続出現):確度0.8、自動紐付け
- 曖昧マッチ(複数の会議体に部分一致 or 単語レベルマッチ):確度0.5以下、relation 空で保存
過去の自動マッチ事例(参考):
- コスモス祭り → コスモス三寺
- JC関連 → 亀山JC
- 応援団 → 三重大学応援団
- eスポーツ → 亀山市eスポーツ協会
4.5-5. 📅 ミーティングノートDBへの転記(R4-A subset)
各AIノートに対して mcp__claude_ai_Notion__notion-create-pages で新規レコード作成:
parent: { data_source_id: "26d7848d-ad1a-4e84-806f-a8dbccb1872b" }
properties: {
"タイトル": "[AIノート元タイトル、先頭の ‣ 等の余計な記号は除去]",
"date:開催日:start": "YYYY-MM-DD", // 当日
"会議種別": "[4.5-3で推定した値]",
"重要度": "[4.5-3で推定した値]",
"フォローアップ要否": "[4.5-3で推定した値]",
"ステータス": "開催済み",
"作成元": "nichijoスキル", // 既存選択肢を流用(oyasumi由来も nichijoスキル として扱う)
"AI元ノートURL": "[元AIノートのURL]",
"会議体": [マッチ確度0.8以上の会議体URL] or [] // 空配列の場合は未紐付け
}
本文の構造化は行わない(オーバーヘッド回避のため、本文整理は明示の整理モードに任せる)。
4.5-6. サマリ集計(Step 6 デイリーサマリ用)
以下を Step 6 に渡す:
aim_total: 当日AIミーティング総数aim_processed: 自動転記した件数aim_already_linked: 既に紐付け済みでスキップした件数aim_unmatched_kaigitai: 会議体未紐付け(確度<0.8)の件数 と各タイトルaim_processed_titles: 転記した会議のタイトル一覧(最大5件)
4.5-7. エラー処理
- AIミーティングノートDB取得失敗:警告ログを記録、本Stepスキップ
- create-pages 失敗(個別):その1件はスキップして残りを継続、サマリにエラー件数を記載
- 部分成功でも本Stepは「完了」扱い
4.5-8. フォローアップ自動抽出 → ✅タスクDB(2026-05-08追加・「未確認」運用)
4.5-3 で フォローアップ要否=__YES__ と推定された AIミーティングノートに対して、本文先頭1500字を mcp__claude_ai_Notion__notion-fetch で取得し、以下のキーワードパターン行をパースしてタスク候補を抽出:
| パターン例 | 抽出方針 |
|---|---|
次回(まで)?に[\s::]+(.+) |
タイトル化、文末まで or 改行まで |
ToDo[\s::]+(.+) / アクション[\s::]+(.+) / 課題[\s::]+(.+) |
タイトル化 |
(.+?)持ち帰り / (.+?)宿題 |
タイトル化 |
(\d{1,2})月(\d{1,2})日まで(.+) |
タイトル+期限同時抽出 |
展開ロジック:
- 1ミーティングから最大5タスクまで抽出(それ超過は切り捨て・ノイズ防止)
- 各候補について ✅タスクDB(
data_source_id: 292cf503-a68f-81c6-b9dd-000b3ffdd2ce)にnotion-create-pages:properties: { "タスク名": "【未確認・自動抽出】[会議体名 or 会議タイトル前半]:[抽出文 60字以内]", "ステータス": "inbox", "優先度": "中", "date:期限:start": "[抽出された日付があれば/なければ空]", "date:期限:is_datetime": 0, "作成元": "oyasumi-skill-auto-extract", "関連ミーティング": "[該当📅DBページのrelation・あれば]" } - 重複防止: 同一タイトル+作成日=今日のタスクが既に存在する場合はスキップ(
notion-searchで前検証) - 抽出0件のミーティングは何もせず継続
- 個別 create_pages 失敗時は他ミーティングを継続
集計を Step 6 に渡す:
mtg_extracted_tasks_total: 全件数mtg_extracted_tasks_by_meeting: ミーティング別件数(最大5件)mtg_extracted_tasks_titles: 抽出タイトル一覧(最大5件・サマリ用)
「未確認」運用ルール:
- ステータスは既存選択肢の
inboxを流用(タスクDBに「未確認」ステータスは存在しないため、タイトル先頭の【未確認・自動抽出】プレフィクスで識別) - 草川が朝ohayoで一覧確認後、確定時はプレフィクスを削除して通常運用に昇格、誤抽出時は削除
Step 5: 政策候補の自動ドラフト抽出(軽量)
以下の いずれか が満たされた場合のみ、🎯政策候補DBに「下書き」ステータスでドラフトを1件追加:
- 今日の市民意見追加が 10件以上 で、共通テーマが推測できる
- 今日のニュースで 亀山関連度 ★★★★ 以上 が10件以上ある
ドラフト内容
タイトル: 【夜抽出ドラフト】YYYY-MM-DD - [推測テーマ]
ステータス: 下書き
作成元: oyasumi-skill-auto-draft
内容:
## 抽出元
- 今日の市民意見 N件: [タイトル列挙]
- 今日のニュース M件: [タイトル列挙]
## 仮の論点(要レビュー)
[2〜3行で論点の素描]
## 次アクション
朝のダッシュボードで草川が確認 → policy-synthesizer / policy-validator で本格検証へ
閾値未満なら何もしない(過剰なドラフトを生まない)。
Step 5.5: Drive 当日新規資料の要約と DB 登録
Step 1-E で抽出した 新規Drive資料リスト を1件ずつ処理する。リストが空なら本Stepをスキップ。
5.5-1. ファイル本文取得
各ファイルについて mcp__claude_ai_Google_Drive__read_file_content を呼ぶ。
- 取得後、先頭1500字までで打ち切る(2026-05-07 燃費改善:旧3000字→1500字。要約200〜400字には十分)
- 取得失敗(権限なし/非対応形式:動画・大型バイナリ等)の場合は
処理ステータス=要約失敗でメタ情報のみ登録
5.5-2. 要約生成(200〜400字)
以下の 議員業務視点 で要約:
- 何が書かれているか(中核内容を1〜2文)
- 草川の仕事との接点(亀山市政・議会・市民相談・政策候補・選挙等のどれに関連するか)
- 使い道の目星(一般質問ネタ/政策候補ドラフト/市民相談返信の根拠/後援会報告/選挙資料 等)
要約は平易な日本語で。禁止用語(悉皆等)は使わない。
5.5-3. 議会活用メモ抽出(任意・該当時のみ)
要約と同時に、以下のいずれかが該当すれば「議会活用メモ」フィールドに1〜2行で記録:
- 一般質問のネタになりそう →
→ 一般質問ネタ候補:[論点] - 既存の市民意見と連動 →
→ 市民意見「[件名]」と関連 - 政策候補ドラフト化候補 →
→ 政策候補化検討:[テーマ] - 該当なしなら空欄
5.5-4. 📂Drive資料サマリDBへ登録
mcp__claude_ai_Notion__notion-create-pages で1件ずつページ作成:
- parent:
data_source_id: 317c4d02-ac0a-48c3-9fc5-56029000e64e - properties:
ファイル名: DriveファイルのtitleファイルID: Driveファイルのid(重複除外キー)date:更新日時:start:modifiedTime(ISO8601)date:更新日時:is_datetime: 1MIMEタイプ: 下記マッピング表で SELECTファイル容量MB:fileSize÷ 1048576(小数点2桁)Drive URL:viewUrl要約: 5.5-2で生成した200〜400字議会活用メモ: 5.5-3で抽出(なければ空)date:登録日:start: 今日のYYYY-MM-DDdate:登録日:is_datetime: 0ソース:oyasumi自動処理ステータス: 成功時要約済/ 失敗時要約失敗/ 上限超過スキップ
MIMEタイプ → SELECTマッピング
| Google Drive mimeType | SELECT 値 |
|---|---|
application/pdf |
|
application/vnd.google-apps.document |
Google Doc |
application/vnd.google-apps.spreadsheet |
Google Sheet |
application/vnd.google-apps.presentation |
Google Slide |
application/msword / application/vnd.openxmlformats-officedocument.wordprocessingml.document |
Word |
application/vnd.ms-excel / application/vnd.openxmlformats-officedocument.spreadsheetml.sheet |
Excel |
application/vnd.ms-powerpoint / application/vnd.openxmlformats-officedocument.presentationml.presentation |
PowerPoint |
image/* |
Image |
text/* |
Text |
| その他 | その他 |
5.5-5. 集計を Step 6 へ受け渡す
- 新規登録件数 N(成功)
- 失敗件数 K
- スキップ件数 S(上限超過分)
- 各登録ページの URL とタイトル(Step 6のサマリで列挙するため保持)
5.5全体の制約:失敗が出ても他のファイル処理を止めない(fail-safe)。0件処理でもエラー扱いしない。
5.5-6. 議会活用メモから自動展開 → 📝質問ネタDB/🎯政策候補DB(2026-05-08追加・「未確認」運用)
5.5-4 で 要約済 ステータスで登録した Drive資料サマリレコードのうち、議会活用メモ フィールドが空でないものについて、テキストパターンを解析して該当DBへ自動展開する。
パターン分岐:
| 議会活用メモのパターン | 展開先 |
|---|---|
→ 一般質問ネタ候補:(.+) |
📝一般質問ネタDB(42716725-fece-497f-9782-705076539de4) |
→ 政策候補化検討:(.+) |
🎯政策候補DB(Step 5 とは別パスで「Drive単独抽出ドラフト」として 1件 create) |
→ 市民意見「.+?」と関連 |
v2で対応(今は議会活用メモに残すのみ) |
📝一般質問ネタDBへの create_pages:
properties: {
"タイトル": "【未確認・Drive自動抽出】[マッチ部の50字以内]",
"状況": "収集", // 既存選択肢を流用(「未確認」ステータスは無いため)
"概要": "📂Drive資料『[ファイル名]』より自動抽出。\n議会活用メモ:[元メモ全文]\n出典: [Drive URL]",
"作成元": "oyasumi-skill-auto-extract"
}
🎯政策候補DBへの create_pages(Step 5 の閾値判定に該当しなくても Drive 単独でドラフト化):
properties: {
"タイトル": "【Drive抽出ドラフト】YYYY-MM-DD - [マッチ部の50字以内]",
"ステータス": "下書き",
"作成元": "oyasumi-skill-auto-extract",
"内容": "## 抽出元\n📂 Drive資料『[ファイル名]』 [Drive URL]\n\n## 議会活用メモ(元)\n[元メモ全文]\n\n## 次アクション\n朝のダッシュボードで草川が確認 → policy-synthesizer で本格検証へ"
}
制約:
- Drive資料1件から最大2展開まで(質問ネタ+政策候補の組合せ等)
- 重複防止: 同一タイトル+作成日=今日のレコードが既に存在する場合はスキップ
- 抽出失敗・create失敗時は他レコードを継続
- 「未確認」運用は 4.5-8 と同じ(タイトルプレフィクスで識別、草川が確定時にプレフィクス削除)
集計を Step 6 に渡す:
drive_extracted_questions: 質問ネタ自動抽出件数drive_extracted_policies: 政策候補自動抽出件数drive_extracted_titles: 抽出タイトル一覧(最大5件・サマリ用)
Step 5.6: 公開済アーカイブ取得(月曜夜のみ・草川の実テキスト学習素材)
Step 0 で曜日が 月曜日 と判定された場合のみ実行。それ以外の曜日では完全スキップ。
5.6-1. スクレイパー実行
bash python3 ~/.claude/scripts/published-archive/scrape.py --since 8 を実行。
(過去8日間 = 1週間+α分の差分取得。月曜実行で漏れなく前週分カバー)
出力: ~/.claude/scripts/published-archive/output.json
- ブログ(go2senkyo RSS):直近8日分
- YouTube(公式RSS):直近8日分
- Threads:直近5〜6件(ログイン制限)
5.6-2. 既登録URLと照合
📚公開済アーカイブDB(data_source 0ae2d907-d804-49ab-9860-b4b981d34c56)を notion-query-database-view で過去30日分取得し、公開URL プロパティと scrape 結果のURLを比較。
view_url(初回 fetch で取得後 memo):
https://app.notion.com/p/a9d670b3acec4f18bb8dabdd651f5fa9
5.6-3. 新規分のみ Notion create-pages
scrape結果の各itemについて、URLがDB未登録なら以下を properties としてページ作成:
タイトル: item.title媒体: item.media(ブログ/Threads/YouTube)公開URL: item.urldate:公開日:start: item.published(ISO8601)date:公開日:is_datetime: 1本文: item.body の先頭1900字文字数: item.char_countvoice-DNA抽出済:__NO__差分あり:__NO__分野: 推定(タイトル+本文から「子育て/教育/防災/環境/交通/産業/行政/都市計画/福祉/その他」のいずれか)
ページ content には ## {媒体} 公開済テキスト 見出し+公開URL/公開日/文字数のみ記載(本文全文は output.json 参照)。
5.6-4. voice-dna 抽出トリガー
voice-DNA抽出済=false の件数を集計。5件以上溜まっていれば Task tool で kusakawa-voice-analyst を起動:
- input:
~/.claude/scripts/published-archive/output.jsonを真の声ソースとして読み込み、voice-dna.md を更新 - 完了後、対応する Notion ページの
voice-DNA抽出済を__YES__に一括更新
未満なら何もしない。
5.6-5. 集計を Step 6 へ
- 新規追加件数 N(媒体別内訳)
- voice-dna抽出 起動有無
- 失敗があれば末尾に警告
5.6全体の制約:失敗時もスキップ続行。0件処理でもエラー扱いしない。
Step 6: デイリーサマリページ作成(必須・毎晩)
mcp__claude_ai_Notion__notion-create-pages で以下を作成:
- parent:
page_id: 34ecf503-a68f-8182-99d3-fabb7e7c4c5e(📔 夜のまとめ) - タイトル:
📔 YYYY-MM-DD(曜日)デイリーサマリ - icon:
📔
本文圧縮ルール(2026-05-01 燃費精査)
- 0件のセクションは見出しごと省略(「該当なし」だけ書いて空テーブルを残さない)
- 箇条書きは1行30〜50字目安。説明的な長文化を避ける
- 要約・備考は1セクション3行以内で完結。詳細は元ページURLにリンクで送る
- テーブルは
指標 / 件数2列のみで、行数は10行以内 - 全体の目標:デイリーサマリ1本 = 2,500字以内(圧縮前は5,000〜8,000字になりがち)
content フォーマット(必須)
# YYYY年M月D日(曜日)デイリーサマリ
> 就寝時刻 HH:MM JST に oyasumi スキル自動生成
---
## 📊 今日の数字(実DB集計・Done/Archive除外済み)
| 指標 | 件数 |
|------|------|
| ✅ 本日 Done に変わったタスク | N件 |
| 🚚 期限≤今日の未完了タスク | M件(4/27期限 X件 / 4/28 Y件 / 4/29 Z件 など内訳) |
| 📆 明日(YYYY-MM-DD)期限の本日inbox+Remind タスク | 件数 |
| 📱 SNS投稿 | X件 |
| 📝 ブログ公開 | Y件 |
| 🎙️ 受付市民相談 | Z件 |
| 🗞️ 今朝のニュース | P件 |
| 📚 一般質問ネタ追加 | Q件 |
| 🎯 政策候補ドラフト追加 | R件([本日抽出 / 抽出なし])|
| 📂 Drive新規資料 | N件([要約済 N / 失敗 K / スキップ S])|
| 📚 公開済アーカイブ追加(月曜のみ) | N件([ブログ X / YouTube Y / Threads Z])|
**注意**: ダッシュボードの旧タスクテーブルからは件数を引かないこと。実DBを必ずクエリして集計(2026-04-30事故踏まえ)。
---
## 📱 今日のSNS発信(媒体別)
- **Threads** (件数): タイトル / タイトル / ...
- **X** (件数): タイトル / タイトル / ...
- **Instagram** (件数): タイトル / ...
- **Facebook** (件数): タイトル / ...
- **LINE** (件数): タイトル / ...
(0件の場合)今日のSNS発信はありません。
---
## 📝 今日のブログ公開
- [タイトル](URL)
(0件の場合)今日のブログ公開はありません。
---
## ✅ 完了したタスク
- タスク名(プロジェクト:xxx)
- ...
(0件の場合)今日完了したタスクはありません。
---
## 🚚 明日へ繰越したタスク
| # | タスク名 | 元期限 | 新期限 | 優先度 |
|---|---------|--------|--------|--------|
| 1 | ... | YYYY-MM-DD | YYYY-MM-DD | 高 |
(0件の場合)繰越しはありません。
---
## ⚠️ 期限超過アラート
- ⚠️ タスク名(期限:YYYY-MM-DD、N日超過)
- ...
(0件の場合)期限超過タスクはありません。
---
## 🎙️ 未対応の市民相談(累計)
総数:N件
直近5件:
1. 件名(受付日)
2. ...
→ 全件: [市民からの意見まとめ](https://www.notion.so/ec4c8e956fe74a518ecb393f893a8fde)
---
## 🗞️ 今朝のニュース振り返り
- [カテゴリ][★X] 見出し(議会活用メモ:あり/なし)
- ...
(議会活用メモが空のものを2件以上検出した場合の追記)
> ⚠️ 議会活用メモが未記入のニュースが N 件あります。朝のダッシュボードで補記推奨。
---
## 📂 本日のDrive新規資料(要約済 N件)
- **[ファイル名](Drive URL)**(MIMEタイプ・X.XMB)
- 要約: [200〜400字の要約・1〜2文に圧縮表示]
- 議会活用: [メモがあれば/なければ「(特になし)」]
- ...
→ 全件: [📂 Drive資料サマリDB](https://app.notion.com/p/8815412449ad4de5b3b57145513309df)
(0件の場合)本日Driveに新規保存された議員業務関連資料はありません。
(失敗・スキップが出た場合)⚠️ 要約失敗 K件 / 上限超過スキップ S件
---
## 🤝 本日の会議自動整理(AIミーティング → 📅DB)
**処理結果**:
- AIミーティング総数: `aim_total` 件
- 📅 DB へ自動転記: `aim_processed` 件
- 既紐付けスキップ: `aim_already_linked` 件
- 会議体未紐付け(確度<0.8、要朝レビュー): `aim_unmatched_kaigitai` 件
**転記された会議**(最大5件表示):
1. [タイトル] | 種別: [推定] | 重要度: [推定] | 会議体: [マッチ会議体名 or 未紐付け]
2. ...
(会議体未紐付けが1件以上ある場合の追記)
> ⚠️ 会議体マスタとマッチしなかった会議が `aim_unmatched_kaigitai` 件あります。朝のダッシュボードで会議体を手動紐付け、または新規会議体登録を検討してください。
→ 全件: <mention-page url="https://www.notion.so/a247fd5d56da4acdb9db3ad97cec6a12">🗂️ 会議ハブ</mention-page>
(0件の場合)本日のAIミーティング記録はありません。
---
## 📝 自動抽出された質問ネタ候補(未確認・2026-05-08新設)
- **総件数**: `drive_extracted_questions` 件(Drive由来)
- 朝のohayoで一覧表示・草川判断で「収集→検討中」へ昇格
**直近5件**:
1. `[drive_extracted_titles[0]]` ← 出典: [ファイル名]
2. ...
→ 全件: <mention-page url="https://www.notion.so/cb47d25e30b14b61b39f56254bf9432a">📝 一般質問ネタDB</mention-page>
(0件の場合)本日の自動抽出はありませんでした。
---
## ✅ 自動抽出されたタスク候補(未確認・2026-05-08新設)
- **総件数**: `mtg_extracted_tasks_total` 件(ミーティング由来)
- 朝のohayoで一覧表示・草川判断で確定 or 削除
**直近5件**:
1. `[mtg_extracted_tasks_titles[0]]` ← 出典: [ミーティング会議名]
2. ...
→ 全件: <mention-page url="https://www.notion.so/292cf503a68f814eafcdec9eed56f273">✅ タスクDB</mention-page>
(0件の場合)本日の自動抽出はありませんでした。
---
## 📅 明日(M月D+1日 曜日)の予定
| 時刻 | タイトル | 場所 |
|------|---------|------|
| HH:MM〜HH:MM | ... | ... |
(0件の場合)明日の予定は登録されていません。
---
## 🎯 朝イチで確認したいこと(自動推測)
[以下から優先度順に最大3項目を機械的に抽出]
1. ⚠️期限超過タスクが N 件 → 朝のダッシュボード「✅タスク」で対応判断
2. 未対応市民相談 N 件 → ◯◯案件は受付から N 日経過
3. 明日の最初の予定 HH:MM「◯◯」 → 移動時間 X 分前出発推奨
4. (政策ドラフト追加時)夜抽出された政策候補ドラフト → policy-synthesizer 実行検討
(特になしの場合)特筆事項はありません。良い夜を。
---
## 🔗 関連リンク
- 朝のダッシュボード: https://www.notion.so/722beb9e9827421aa5dbbef67c1c4688
- 昨日のサマリ: [昨日分のURLを記載/なければ「初回生成」]
仕様上の注意
- 必ずこのページを作成する。データが0件でも空テーブルで作る
- 数字は 必ず Step 1-D の取得結果そのまま。恣意的に丸めない
- ページ作成後、URLを保持して Step 8 で使う
Step 6.5: 仕上げモード自動実行(2026-05-08新設・基準a 完全保守的)
nichijo「仕上げ」モード(U1〜U4 の A/B/C 系統)を oyasumi 内部で自動実行する。これにより草川が「仕上げ」発話をしなくても夜の段階で清書・素材抽出・DB振分が完了する。
設計方針(草川 2026-05-08 承認の基準a):
- A: モバイル下書き仕上げ → voice-dna整合90%以上のみ自動清書、90%未満は朝レビュー
- B: 当日コンテンツ素材抽出 → 素材抽出のみ(本文生成は朝下流agentに委ねる)
- C: 全DB横断振り分け → 確度0.8以上のみ自動、未満は未紐付けで朝レビュー
6.5-A: 📱モバイル下書き仕上げ(保守的・voice-dna整合90%以上のみ自動)
6.5-A-1. 対象抽出
以下の下書きを集約:
- 当日 nichijo モバイル下書き(日次ルーティンログDB の今日のページ内・モバイル走り書きセクション)
- 📣SNS投稿管理DB(
1bd98deb-624f-402c-aeb3-bdaa4782b389)の「ステータス=未着手」かつ「作成元=モバイル」の今日の下書き
6.5-A-2. voice-dna整合度の機械評価
各下書きに対して、以下を読み込んで照合:
~/.claude/agents/knowledge/kusagawa_archive/04_compass/voice-dna.md(コア・必須)voice_examples.mdは重いのでフル読込しない。代わりに voice-dna.md §6(NG表現リスト)と §7(典型構文パターン)の整合だけチェック
6.5-A-3. 整合スコア計算
下書きを文単位で分割し、各文に以下のチェック:
- ✅ 草川の常用語彙・文末・接続詞が使われているか
- ❌ NG表現(断定的「絶対」「必ず」、難読語「悉皆」等)が含まれていないか
- ✅ 文末パターンが voice-dna §6 の許容形式か(です/ます/思います/と考えます等)
- ✅ 一文長が voice-dna §7 の標準範囲内(30〜80字目安)か
スコア = 整合文数 ÷ 全文数 × 100。90%以上のみ自動清書対象。
6.5-A-4. 自動清書(90%以上のみ)
- 誤字脱字修正(feedback_obsidian_memo.md 誤字疑いリスト参照)
- 文末整え(一貫性確保)
- 改行・段落整形
- 論旨は絶対に変えない/情報を追加しない/削除は明白な誤字のみ
清書済みは:
- nichijoモバイル下書き → 該当日次ルーティンログページの本文を
notion-update-pageで更新(モバイル走り書きセクションのみ) - SNS下書き → 📣SNS投稿管理DB の
本文プロパティを更新、ステータスを下書き完成系の既存選択肢へ(無ければ進行中)
6.5-A-5. 90%未満は保留
90%未満のスコアの下書きは何もしない(草川オリジナル原文のまま保持)。朝のohayo「📱下書き仕上げ保留」セクションで一覧表示し、草川が手動で「仕上げて」発話するかオリジナルのまま使うかを判断。
6.5-A-6. 集計を Step 6.5 完了サマリに渡す
polished_total: 清書済み件数polished_held: 保留件数(90%未満)polished_titles: 清書済みタイトル一覧(最大3件)
6.5-B: 当日コンテンツ素材抽出(生成はしない)
6.5-B-1. 抽出元データ
Step 1-D / Step 2 / Step 3 / Step 4.5-8 / Step 5.5-6 で既に取得済みのデータから、ブログ/SNS素材になりうる「具体性の高い情報」を抽出:
- 今日の Calendar / nichijo の活動記録(KEEPのみ)
- 完了したタスク(具体的な成果が見えるもの)
- 受け付けた市民意見(公表可なもの)
- 自動抽出された質問ネタ候補(5.5-6 由来)
6.5-B-2. 素材分類
各情報を以下に分類:
- ブログ深掘り素材:政策論考になりうる具体事例+背景データ(blog-writer 向け)
- ブログノーマル素材:今日の活動報告として書ける素朴な現場ストーリー(blog-writer-normal 向け)
- SNS即時素材:1〜2文で言い切れる具体的な気付き・場面(sns-content-creator 向け)
6.5-B-3. 出力先
📔 デイリーサマリページ(Step 6 で作成済み)に対して notion-update-page で 末尾に新セクション追加:
---
## 📝 仕上げモード抽出:当日コンテンツ素材(2026-05-08新設・本文未生成)
### ブログ深掘り素材(最大3件)
1. **[テーマ名]** — フック: [1行・具体場面] / 軸: [伝える/繋ぐ/希望]
2. ...
### ブログノーマル素材(最大3件)
1. **[テーマ名]** — フック: [1行・現場ストーリー]
2. ...
### SNS即時素材(最大5件)
1. **[テーマ名]** — フック: [1行]
2. ...
→ 朝のohayoでこの素材一覧をチャット表示。草川が「ブログ書いて:[テーマ]」「SNS作って:[テーマ]」で本文生成を起動(content-pipeline 経由で安全ゲート通過)
本文生成はしない(生成は朝下流の blog-writer / sns-content-creator に委ねる)。
6.5-B-4. 集計
extracted_blog_deep: ブログ深掘り素材数extracted_blog_normal: ブログノーマル素材数extracted_sns: SNS素材数
6.5-C: 全DB横断振り分け(確度0.8以上のみ自動)
6.5-C-1. 対象抽出
本日新規作成された Notion ページのうち、適切なDBに振り分けされていないものを notion-search で検出:
- 旧情報DB(
325dd77f-)配下の今日新規ページ - 親ページ未設定の今日新規ページ
- 一時メモ系ページ(タイトルが日付・短い・テーマ不明確)
6.5-C-2. 自動分類ロジック
各ページのタイトル+本文先頭500字を機械分類:
| 検出キー | 振分先 |
|---|---|
| 会議体名・参加者・議題キーワード | 📅ミーティングノートDB |
| 市民氏名(敬称付き)・相談・お困り | 📋市民意見受付BOX |
| ToDo・期限・次アクション | ✅タスクDB |
| 政策・条例・制度キーワード | 🎯政策候補DB |
| 議会・本会議・委員会キーワード | 📝一般質問ネタDB |
確度0.8以上のみ自動振り分け:
- 完全マッチ or 包含マッチ → 確度1.0、自動振分
- 部分マッチ(複数キー検出 or キーが弱い) → 確度0.5以下、未紐付けで保持
Step 4.5(AIミーティング限定)で既処理のものはスキップ(重複防止)。
6.5-C-3. 自動振分実行
該当DBに notion-create-pages でレコード作成、元ページにはタイトル末尾に 【自動振分済2026-MM-DD】 を追加(重複処理防止)。
6.5-C-4. 未紐付け(確度<0.8)の扱い
何もしない。朝ohayo「🗂未紐付けページ」セクションで一覧表示。草川が朝に手動で振分する。
6.5-C-5. 集計
auto_classified_total: 自動振分済件数(DB別内訳)auto_classified_unmatched: 未紐付け件数
6.5 全体のエラー処理
- 各サブステップ(A/B/C)は独立して実行。1つが失敗しても他は続行
- voice-dna.md / その他ローカル md 読込失敗時は、6.5-A をスキップして 6.5-B/C を継続
- create-pages 失敗(個別)はスキップ、サマリにエラー件数を記録
- Step 6 のデイリーサマリページは既に作成済みなので、本Stepの追記が失敗しても致命傷にならない
6.5 完了後のサマリ反映
Step 9 のチャット出力に「📝 仕上げモード自動実行」サマリを追加:
- 清書済み N件 / 保留 K件
- 素材抽出(深掘り L件 / ノーマル M件 / SNS P件)
- 自動振分 Q件 / 未紐付け R件
Step 7: 週次レポート生成(金曜日の夜のみ)
Step 0 で曜日が 金曜日 と判定された場合のみ実行。それ以外の曜日では完全スキップ。
7-A. 月〜金の追加データ取得
Step 1-D の今日分取得とは別に、今週の月曜0:00〜金曜23:59 で再取得:
- ✅タスクDB →
ステータス=Doneかつ 更新日が今週月〜金 - SNS投稿管理DB →
ステータス=投稿済かつ 投稿日が今週月〜金 - ブログ記事管理DB →
ステータス=公開済かつ 公開日が今週月〜金 - 市民意見リストDB → 作成日が今週月〜金 + 同期間内に
完了に変わった件数 - 一般質問ネタDB → 作成日が今週月〜金
- 🎯政策候補DB → 作成日が今週月〜金
- 🎯政策候補DB →
承認状態=草川承認待ちかつトリガー=週次自動 or 月次自動(policy-radar Routine 由来の累積未承認件数・2026-05-21追加) - 📝一般質問ネタDB → ネタ名が 🆕 or 🔄 で始まる かつ
状況=調査中(policy-radar Routine 由来の累積未承認件数・2026-05-21追加)
7-B. 週次レポートページ作成
mcp__claude_ai_Notion__notion-create-pages で:
- parent:
page_id: 34ecf503-a68f-81b0-9275-d34249f59cf6(📅 週次レポート) - タイトル:
📅 YYYY-MM-DD週 週次レポート(M/D(月)〜M/D(金)) - icon:
📅
content フォーマット
# YYYY-MM-DD週 週次レポート
> M月D日(月)〜 M月D日(金)の活動集約 / oyasumi スキル金曜自動生成
---
## 📊 週次サマリ
| 指標 | 今週 | 内訳 |
|------|------|------|
| ✅ 完了タスク | N件 | 月X / 火X / 水X / 木X / 金X |
| 📱 SNS投稿 | X件 | Threads X / X X / IG X / FB X / LINE X |
| 📝 ブログ公開 | Y件 | - |
| 🎙️ 受付市民相談 | Z件 | 解決 K件(解決率 K/Z = N%)|
| 📚 一般質問ネタ追加 | Q件 | - |
| 🎯 政策候補追加 | R件 | (内訳:下書きL / 検討中M)|
| 📡 policy-radar 承認待ち累積 | S件 | 🎯草川承認待ち(週次/月次Routine由来)X件 / 📝🆕🔄状況=調査中 Y件 — 2026-05-21追加 |
---
## 🌟 今週のハイライト10件(自動抽出)
[以下のロジックで10件選出]
- 完了タスクで `優先度=高` だったもの → 上位
- 公開ブログ記事 → 上位
- 解決した市民相談 → 上位
- これらが10件未満なら、SNS投稿数最多の媒体・テーマで補う
1. **[ハイライト見出し]** — 説明
2. **[ハイライト見出し]** — 説明
3. **[ハイライト見出し]** — 説明
---
## 🚚 来週への引継ぎ
### 未完了タスク(繰越し済)
- ⚠️タスク名(期限:YYYY-MM-DD、超過X日)
- タスク名(期限:YYYY-MM-DD)
### 未対応市民相談
総数 N件 — 受付から7日以上経過 K件
### 月初/週初に動かす予定
(来週月曜以降のCalendarから抽出した重要予定 上位10件)
- M月D日(月)HH:MM ◯◯
- ...
---
## 📈 トレンド観察
- SNS投稿の媒体別バランス: [傾向コメント1行]
- ブログ公開ペース: 今週Y件(先週比 ±N件)※先週データが取れない場合は本項省略
- 市民相談の集中テーマ: [上位タグ]
---
## 🔗 今週のデイリーサマリ
- 📔 月曜サマリ: [URL or 未生成]
- 📔 火曜サマリ: [URL or 未生成]
- 📔 水曜サマリ: [URL or 未生成]
- 📔 木曜サマリ: [URL or 未生成]
- 📔 金曜サマリ: [今夜分URL]
---
## 💡 来週への提案(自動)
[以下から最大3点]
- 期限超過タスクが多い → 月曜朝に棚卸し時間を確保
- 未対応相談が滞留 → citizen-inquiry-responder の活用
- ブログが0件だった → content-pipeline で1本生成検討
Step 8: 朝のダッシュボードへの「📔 昨夜のまとめ」セクション反映
mcp__claude_ai_Notion__notion-update-page で朝のダッシュボードを更新:
- page_id:
722beb9e9827421aa5dbbef67c1c4688 - command:
update_content
old_str の取り方
朝のダッシュボードを notion-fetch で取得し、## 📔 昨夜のまとめ セクションが既に存在するかチェック:
- 存在する場合: そのセクション全体(次の
##直前まで)をold_strに - 存在しない場合:
## 📅 今日のスケジュールセクションの直前に挿入する形でold_strを組む
new_str
## 📔 昨夜のまとめ(M/D(曜日)oyasumi 自動生成)
- ✅ 完了 N件 / 🚚 繰越 M件(⚠️超過 K件)
- 📱 SNS X件 / 📝 ブログ Y件 / 🎙️ 相談 Z件
- 🎯 朝イチ確認: [Step 6 で抽出した最重要1項目]
→ 詳細: [📔 昨日のデイリーサマリ](Step 6 で作成したページのURL)
(金曜のみ追加)→ [📅 今週の週次レポート](Step 7 で作成したページのURL)
Step 9: チャット出力(簡潔・対話なし)
すべての処理が完了したら(成功・失敗問わず)、以下のフォーマットで端的に出力:
おやすみなさい。今日もお疲れさまでした。
(YYYY年M月D日(曜日)就寝時刻 HH:MM)
📊 今日の実績
✅ タスク完了 N件 / 🚚 明日へ繰越 M件(⚠️期限超過 K件)
📱 SNS X件 / 📝 ブログ Y件 / 🎙️ 相談 Z件 / 🗞️ ニュース P件
📚 一般質問ネタ +Q件 / 🎯 政策候補ドラフト +R件
📂 Drive新規資料 +N件(要約済)
🤖 自動抽出(未確認・朝のohayoでレビュー)
📝 質問ネタ候補 +[drive_extracted_questions]件 / ✅ タスク候補 +[mtg_extracted_tasks_total]件
🎯 政策候補(Drive由来) +[drive_extracted_policies]件
📝 仕上げモード自動実行(基準a 完全保守)
📱 清書済み [polished_total]件 / 保留 [polished_held]件(朝レビュー)
📦 素材抽出: ブログ深掘り [extracted_blog_deep] / ノーマル [extracted_blog_normal] / SNS [extracted_sns]
🗂 自動振分 [auto_classified_total]件 / 未紐付け [auto_classified_unmatched]件(朝レビュー)
📅 明日(M月D+1日 曜日)の準備完了
最初の予定: HH:MM ◯◯(場所)/ 全 N件
🎯 朝イチ確認推奨
[Step 6 で抽出した最重要1〜2項目]
📔 デイリーサマリ: [URL]
(金曜のみ) 📅 週次レポート: [URL]
(nichijo自動補完を実行した場合) ⚠️ nichijo を自動補完しました。朝に修正可能。
良い夜を。明日もまた `おはよう` でお会いしましょう。
エラーハンドリング方針(必須)
- 各MCP呼び出しで失敗した場合、その項目を「取得失敗」として記録し他Stepは続行
- 致命的なエラー(Notion全体が落ちている等)でも、Step 6のデイリーサマリは最低限のスケルトンで保存する
- 失敗ログはチャット出力末尾に
⚠️ 一部取得失敗: [項目名]として簡潔に表示 - 絶対にユーザーに「もう一度試しますか?」「どうしますか?」と聞かない
DB / ページ ID 一覧(変更厳禁)
| 役割 | ID |
|---|---|
| 朝のダッシュボード | 722beb9e9827421aa5dbbef67c1c4688 |
| 📔 夜のまとめ親ページ | 34ecf503-a68f-8182-99d3-fabb7e7c4c5e |
| 📅 週次レポート親ページ | 34ecf503-a68f-81b0-9275-d34249f59cf6 |
| ✅タスクDB | 292cf503-a68f-81c6-b9dd-000b3ffdd2ce |
| 🗂️プロジェクトDB | 292cf503-a68f-81fe-bd40-000b64314f2e |
| 日次ルーティンログDB | f6d15ac0-73fa-414f-8242-03e8f06aa4e3 |
| 一般質問ネタDB | 42716725-fece-497f-9782-705076539de4 |
| SNS投稿管理DB | 1bd98deb-624f-402c-aeb3-bdaa4782b389 |
| ブログ記事管理DB | dcdf44af-f285-499e-a6c3-08cc343fc3fa |
| 市民意見リストDB | c2c34bd8-1e16-492e-aab0-d3f497d18d4d |
| 📰ニュースDB | 29e5c1a2-d64d-4822-81fd-0d642c3f07bc |
| 🎯政策候補DB | 6f1895ac-(fetchで確定) |
| 📂Drive資料サマリDB | data_source 317c4d02-ac0a-48c3-9fc5-56029000e64e / DB top 8815412449ad4de5b3b57145513309df |
| 📚公開済アーカイブDB | data_source 0ae2d907-d804-49ab-9860-b4b981d34c56 / DB top a9d670b3acec4f18bb8dabdd651f5fa9 |
カレンダーID(注意)
- プライマリ:
t.higuchi125@gmail.com - 個人:
kusakawa.taku@gmail.com(kusagawa は誤り。2026-04-26に取りこぼし事故あり)
注意事項(再掲・最重要)
- 完全自動化:途中で選択肢・確認・質問を一切しない
- 失敗時もスキップ続行:1Stepの失敗で全体を止めない
- 判断保留はドラフト保存:朝のダッシュボードで人間が確認する流れに統一
- Step 6のデイリーサマリは必ず作成:データ0件でも空サマリで保存
- 金曜判定は厳密に:他曜日で週次レポートを作らない
- 数字は実数そのまま:恣意的な丸めや件数絞り込みは禁止
update_content の罠と必須fetch verify(2026-04-27事故踏まえ追加)
Step 8(朝ダッシュボードへの「📔 昨夜のまとめ」差込)で notion-update-page を使う際、以下を厳守する:
マッチ失敗の典型パターン(サイレント失敗するので要警戒)
update_content は old_str がマッチしない場合エラーを返さず黙ってスキップする。
- 特殊文字の取り違え:「・」(U+30FB) と「、」(U+3001) を unicode escape で書くと取り違えやすい。unicode escape 禁止、平文で書く
- 長文 old_str はマッチ失敗確率が高い:1セクション全体を一発で置換せず、見出し+小区切りで複数passに分ける
必須:fetch verify
Step 8 完了後、必ず notion-fetch でダッシュボードを再取得し、「📔 昨夜のまとめ」セクションが正しく差し込まれていることを目視verify。失敗していれば即追加置換 + 再fetch。
同様にStep 6(デイリーサマリ作成)でも
create_pages の戻り値(id・url)を保持し、その後の参照に使う。サマリ作成失敗時は警告ログをチャット出力末尾に表示。
Step 9: 過去ページ漸進棚卸し(2026-05-05追加・自動化)
目的
2026-05-05のNotion完全棚卸しで発見した旧情報DB(325dd77f-)配下100件超の未整理ページを毎晩10件ずつ漸進整理する。一気に処理せず1日10件ペースで約34日かけて完了。
対象データソース
- 旧情報・質問DB (
collection://325dd77f-2689-4d0e-ba79-f2a7d559014f) — 100件超未処理 - その他📦旧_リネーム済DB配下の個別ページで未移行のもの
実行ロジック(毎晩自動)
1. 旧情報DBから未処理ページ10件取得(古い順)
- notion-query-database-view で全件取得
- タイトルに「📦」「【整理済」が付いていない10件を選定
2. 各ページの内容をfetchして自動分類:
- 政策候補化 → 🎯政策候補DB(b9f8d42a-)登録(承認状態=「草川承認待ち」)
- 市民相談 → 📋市民意見受付BOX(c2c34bd8-)登録
- 会議記録 → 📅ミーティングノートDB(26d7848d-)登録
- 個人活動(JC/三重大応援団/家族)→ KEEP(個人領域保護)
- 重複・古い・不要 → 元ページを📦旧_リネーム
3. 元ページのタイトル末尾に「【整理済2026-MM-DD】」を追加して二重処理防止
4. デイリーサマリ「📦 過去棚卸し」セクションに当日処理10件を記録
個人領域保護ルール(触らない)
以下キーワード含むページはKEEP:
- JC/青年会議所/卒業生事業/会員会議所
- 三重大学応援団
- 家族/嫁/息子/娘/誕生日
- 個人/プライベート/読書/趣味
- 卒園式/披露宴/年末挨拶
KPI
- 1日10件ペース → 100件で約10日完了(2026-05-15頃)
- 進捗が思わしくなければ1日15件に加速可(草川判断)
サマリ報告フォーマット
📦 過去棚卸し(2026-MM-DD)
- 政策候補化: X件(POL-XX)
- 市民相談化: X件
- 会議DB登録: X件
- リネーム: X件
- 旧情報DB残: あと XX件(推定完了 YYYY-MM-DD)
停止条件
- 旧情報DB残ページが0件 → Step 9を自動スキップ
- 連続3日エラー → 翌朝ohayoで草川に通知
禁止用語と誤字疑いリスト(草川向け原則・2026-04-27ユーザー指摘)
禁止用語(絶対使用しない)
| 禁止 | 代替 |
|---|---|
| 悉皆(しっかい) | 全戸 / もれなく / 全件 |
草川は市民向け平易な日本語を重視。難読・専門用語は徹底排除。サマリ・nichijo自動補完・サマリページ等すべての出力で適用。
誤字疑いリスト(new_str作成時に確認)
固有名詞・地名・人名はNotion検索結果からコピペで書き起こす。記憶ベース生成は誤字を量産する。
- 「みずきが丘」(×ミズキが丘)
- 「夜間休日」(×夕間休日)
- 「亀田伊藤煙火」(×亀町伊藤煌火)
- 動詞「ぶつける/投げかける」(×訪れる)
- 動詞「裁く/凌ぐ」(×議請ぐ)
- 名詞「校区/馴染み」(×染み単独)