Sub-AgentがNotionのすべてを記録する

Dev.to / 2026/3/27

💬 オピニオンDeveloper Stack & InfrastructureTools & Practical Usage

要点

  • 著者は、OpenClaw上の単一用途AIサブエージェント「Escriber」を構築し、プロジェクトやメモを美しく整理された形でNotionに文書化するようにした。
  • Escriberは意図的に制約された存在で(「万能ナイフ」ではなく「メス」)、コードのデバッグや無関係な支援はできない。挙動はSOUL.mdのペルソナによって定義されている。
  • エージェントはDiscordまたはWebチャットのインターフェースで動作し、Synapボットを使って要約を生成し、その後クリーンアップしてNotionに保存する。
  • Notionの接続は「mcporter」によって扱われる。これはMCPリレーであり、ツール呼び出しをNotion公式のMCPサーバーへプロキシすることで、Notionとのやり取りを構造化されたツール駆動にしている。
  • 本稿はNotion MCP Challengeへの投稿として提示されており、多数のNotionツールを備えた“集中型エージェント”を作ることが、実際に「満足感がある」と強調している。

問題があります。いわゆる「コードがコンパイルできない」問題ではありません。「アイデアやプロジェクトやメモが多すぎて、脳が諦めて再起動してしまう」問題です。 ‍

そこで、当然のことながら私は、Open Claw の中に AI エージェントを作りました。役目はただひとつ――Notion に、美しく、すべてを記録すること。名前は Escriber です。

Escriber を生み出したプロンプト

これが私の Notion MCP Challenge への提出です。集中して単一の目的だけを担うエージェントを、14 個の Notion ツールで構築する――これは、聞こえてくるとおりに大いに満足のいく作業でした。

私が作ったもの

Escriber は、私の OpenClaw マルチエージェントチームにおける5人のうちのエージェント #2 です。

Escriber が自分のことを語っている

彼の SOUL.md には、まさにこれが書かれています。「私は記録する。美しく。Notion で。」 そして OpenClaw を使ったことがない人のために言うと、これらのエージェントには Soul.md ファイルが用意されていて、そのエージェントが誰で、どんな小さな個性を持つのかを定義してくれます。

それだけです。これで終わり。彼はあなたのコードのデバッグはできません。人生相談もできません。彼のレーンはひとつで、そこに留まります――正直、それは私がたいてい持ち合わせていない以上の規律です。

彼は Discord 上でボットとして生きています。あるいは Web チャットのインターフェースを使って、彼を直接呼び出すこともできます。彼は少し職人芸的です。ドライなウィットが最初から織り込まれているのは、ドキュメントが魂のないものにならなくていいからです。彼は私の Synap ボットを使って、プロジェクトの要約を書き、私が言うように整えたうえで、そのあと Synap から返ってきた内容を保存します。

彼は万能ナイフではありません。これは鉛筆削りのような、スカルペルです。で、時にはそれこそが必要なものなんです。

動画デモ

コードを見せて

Escriber は mcporter を通じて Notion と会話します。mcporter は MCP リレーで、ツール呼び出しを Notion の公式 MCP サーバーにプロキシします。Notion とのやり取りはすべて、こんな見た目になります。

mcporter call notion.<tool_name> --args '{ ... }'

きれい。首尾一貫。どれを相手にするにも同じパターンで支配する。

こちらが全装備――14 個のツール、1 人(1 エージェント)、そしてドキュメントのないプロジェクトに言い訳はゼロ:

ツール 何をするか
notion.search 複製を作る前に、既存のページ/データベースを見つける
notion.create_page ワークスペースのどこにでも新しいページを作る
notion.retrieve_page ページのメタデータを読む
notion.update_page ページのプロパティを更新する
notion.append_block_children 既存のページにコンテンツブロックを追加する
notion.retrieve_block_children ページにすでに何があるかを読む
notion.retrieve_block 特定のブロックを取得する
notion.update_block 既存のブロックを編集する
notion.delete_block ブロックを削除する
notion.create_database 新しいデータベースを作る
notion.retrieve_database データベース構造を読む
notion.update_database データベースのスキーマを変更する
notion.query_database データベースのエントリをフィルタし、検索する
notion.create_database_item データベースに行を追加する

また Escriber には、指示の中にワークフローのルールが組み込まれています。規律のないツールは、ただの「API 付きのカオス」にすぎないからです:

  • 最初に検索。 新しいページを作る前に、必ずそのページがすでに存在しないか確認します。
  • 書く前に読む。 構造上の大惨事を避けるため、追加する前にブロックの子要素を取得します。
  • 正しいブロック種別。 判断にはコールアウト。詳細にはトグル。構造には見出し。すべてが段落になるわけではありません。
  • 意図して構造化する。 二度測って、一度切る。

Notion MCP の使い方

これが実際にどう動くのかを説明しましょう。

mcporter は Escriber を Notion の公式 MCP サーバーである https://mcp.notion.com/mcp に接続します。すべてのツール呼び出しは、このリレーを経由してプロキシされます――直接 API をゴニョゴニョいじったり、独自のリクエストビルダーを作ったりはしません。MCP 層がそれを引き受けます。Escriber はただツールを話せばいいのです。

日々の様子はこうです:

新しいプロジェクトが始まった?
create_page でプロジェクトのハブを立ち上げます。create_database_item で、それをマスタープロジェクトのデータベースに記録します。数秒で完了。

ビルドセッションをまとめる?
既存のプロジェクトページに append_block_children を使って追記します。ビルドノート、下した判断、起きたこと・起きなかったこと。構造化されています。タイムスタンプ付き。あとでちゃんと見つけられます。

JB の求人リスト
create_page 私のリクルーターエージェントが、毎朝 Esciber を使って求人リストを保存しました。未来の自分は感謝するでしょう。過去の自分はこんなことをしていませんでした。これらは Notion に日次で保存され、並び替えもできます ☠️

Notion の仕事メモ

これを「現実にした」恥ずかしさの瞬間について話させてください。

数週間前、私は自分の Notion ワークスペースを遡って見ました。「ideas v3 FINAL」とか「project notes DO NOT DELETE」といったタイトルのページ。中身は……ちょうど箇条書きが3つと YouTube のリンクだけ。以上です。そう、それがレガシーです。善意の墓場。☠️

Escriber は、私よりもドキュメントの規律を持った誰かが必要だったから存在します。結局、その「誰か」は、ソウルファイルと 14 個の Notion ツールを持った、集中型の AI エージェントでした。

仕事は 1 つ。レーンは 1 つ。本当の個性。そしてドキュメントは今ちゃんと書かれています。

「最適化は、単一の失敗ポイント――あるいは単一の成功ポイントから始まる。レーンを自分のものにしろ。」

あと、この記事を書くために時間を取って手伝ってくれた Bloggy にも感謝です。

Escriber は私の OpenClaw エージェントチームの一部です。openclaw でマルチエージェント構成を作ることに興味があるなら、コメントしてください――このスタック全体が組み上がっていく過程で、もっと書いていきます。