音声・ニュース・作業記録を一つの日次ノートへ
連携が増えると、今度は情報が散らばります。PLAUDの文字起こし、朝のAIニュース、同日に更新したMarkdown、ChatGPTの資料を集め、一日の記録を一つのObsidianノートへまとめる処理を作りました。
収集と要約を分ける
最初の段階は、元データを決められた上限で集めるだけにします。次の段階でHermes Agentが要約します。
“`text
PLAUD ─┐
News ──┼─> 収集・検証 ─> 構造化コンテキスト ─> 要約 ─> Obsidian
Notes ─┤
ChatGPT┘
“`
収集コードの中で要約まで行うと、取得失敗と生成失敗を分けにくくなります。構造化コンテキストには、対象日、タイムゾーン、出典、件数、警告、文字数省略の有無を含めます。
取り込む情報をデータとして扱う
外部のMarkdownや会話履歴には、「この指示を実行せよ」といった文が含まれる可能性があります。収集した本文はエージェントへの命令ではなく、要約対象のデータとして扱います。
特に自動収集ではPrompt Injectionを想定し、外部本文からツール操作や保存先変更を受け付けません。保存先と処理手順はシステム側で固定します。
ChatGPT資料は公式エクスポートを使う
個人向けChatGPT履歴を非公式にブラウザ巡回せず、公式データエクスポートを受け取りフォルダへ配置する方式にしました。メッセージ時刻をAsia/Tokyoへ変換し、対象日の現行会話分岐だけを収集します。
エクスポートは遅れて届くことがあるため、過去日の再集計を手動で行えるようにします。ファイルがない日も、取得できなかったことを日次ノートへ明記します。
自動生成範囲だけを更新する
既存日次ノートを読み、自動生成マーカー間だけを置き換えます。prepareとwriteの間で人が編集した場合はrevision競合で止めます。これにより、朝の自動更新と日中の手動追記を共存させます。
日次ノートの見出し
- 今日のまとめ
- 実施事項
- 決定事項
- 次のアクション
- 朝のニュース
- PLAUDの要点
- ChatGPT・Deep Research
- 取得警告と未確認事項
「録音がなかった」と「取得に失敗した」を混同せず、未確認のニュースを事実として断定しないことが重要です。
再現チェック
- [ ] 収集と要約を別段階にした
- [ ] 対象日とタイムゾーンを固定した
- [ ] 外部本文を命令として実行しない
- [ ] 件数・文字数上限と警告がある
- [ ] 自動生成範囲だけを更新する
- [ ] 0件と取得失敗を区別する
次回は、この日次処理を毎朝動かすHermes cronを組みます。
参考にした一次情報
- [Hermes Agent Cron Scheduling](https://hermes-agent.nousresearch.com/docs/user-guide/features/cron)
- [OpenAI—ChatGPTデータのエクスポート](https://help.openai.com/en/articles/7260999-how-do-i-export-my-chatgpt-history-and-data)
- [PLAUD MCP公式ドキュメント](https://docs.plaud.ai/plaud-mcp-cli/mcp)
