0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

自作小説100万文字をMCPサーバー化して、ClaudeAIに自律検索させた話

0
Last updated at Posted at 2026-05-09

はじめに

長編小説『神愛 ─永遠と刹那─』を書いている。現在100万文字超の超大作。
神愛 ― 永遠の刹那 ―

前回の記事(AIと100万文字書いた話)では、Claude×GeminiのハイブリッドでAI創作フローを構築した話を書いた。

今回はその核心部分。ClaudeがMCP経由で過去エピソードを能動的に検索し、新話制作の資源として使えるようにした話。
所謂 RAG というやつだ。


問題:AIはすぐ忘れる

長編小説を書き続けていると、こういう問題が起きる。

  • 「3章のあのシーンと矛盾してないか?」
  • 「呪いが初めて逆流した描写、どんな書き方だったっけ」
  • 「その解釈は違う。過去にこんなことがあったんだ」

100万文字のうち、1チャットに読み込めるのはほんの一部。AIは過去の描写を参照できないまま新話を書くことになる。

新話を書くたびに「あの設定はこうだ」「これは違う」「この話はこうだった」と指示を出して書き直してもらうのが、ものすごくめんどくさい。

というか、大半がこの作業で終わってしまうようになってしまった。
そしてプロジェクトファイルに全話登録しても、指示しないと全然参照してくれない。


解決策:過去エピソードをMCPサーバー化する

Claude.aiには「コネクタを追加」という機能がある。MCPサーバーを登録すると、ClaudeがAIとして能動的にツールを呼び出せるようになる。

作ったのは search_kamiai というMCPツール。

Claude: 「ヒロインが主人公に触れようとして止まったシーン、確認しておこうか」
  → search_kamiai("ヒロインが触れようとして手が止まる場面")
  → 類似チャンクを返す
  → 「第2章EP14がヒット。このシーンを踏まえて書く」

筆者が「こうだ」と過去の文章をひっぱり出してきて貼り付けなくても、Claudeが判断して勝手に検索する。


アーキテクチャ

本文テキスト
  ↓ チャンク分割 → embedding生成(OpenAI)
PostgreSQL + pgvector
  ↑ MCPツール(search_kamiai / get_episode)
Claude.ai ── コネクタ登録
  ↓ 新話制作時に自律的に検索・参照
新しいエピソード

使っているもの

役割 技術
ベクトルDB PostgreSQL + pgvector
Embedding OpenAI text-embedding-3-small
MCPサーバー Node.js(独自実装)
AI Claude Sonnet(コネクタ経由)

MCPサーバーの実装

MCPツールは2本用意した。

① search_kamiai
自然言語クエリをembeddingに変換し、pgvectorでコサイン類似度検索する。「感情・状況」での検索が可能。

クエリ例:
「呪いが逆流した場面」
「主人公とヒロインが二人になったシーン」
「主人公が覚悟を示す場面」

② get_episode
chapter_no と episode_no を指定して全文を取得する。search_kamiai でヒットした話を詳しく読む用途。


実際の使われ方

新話を書くとき、Claudeはこう動く。

  1. プロットを受け取る
  2. 関連する過去シーンを自分で検索する(search_kamiai)
  3. 必要なら全文を取得する(get_episode)
  4. 過去の描写・口調・伏線を踏まえた上で台本を生成する

「前の話で主人公がこう言っていたから、この台詞は変えよう」という判断を、Claudeが自律的にやってくれる。


検索クエリのコツ

MCPツールを使う上で気づいたことがある。ベクトル検索はキーワード検索ではない。

❌ 固有名詞単体: 「御珠」「咲良」「雪杜」
   → ほぼヒットしない

✅ 状況・感情で検索: 「御珠が泣いた夜」「触れられない距離で隣にいる場面」
   → 意味的に近いチャンクがヒットする

おまけ:読者向けに公開もした

同じ検索エンジンをPHPで実装して、読者が使える形で公開した。

神愛サーチ(ネタバレ注意)

叩かれ過ぎると、筆者の財布にダメージが入るが、embedding API は単価が安いので公開してみた。
クレジットが尽きたら、公開停止するかもしれない。
あまり需要はないかもしれないが、100万文字の記憶の海を、感情と状況で検索してみて欲しい。


おわりに

MCPサーバーを作って一番変わったのは、Claudeとの分業の質だ。

「この話はこうだった」といちいち過去の文章をひっぱり出してこなくていい。Claudeが必要と判断したら自分で調べる。人間の作家が資料を引っ張り出しながら書くのと、同じことをAIがやってくれる。

100万文字という資産が、初めてちゃんと活きるようになった。


宣伝

同じベクトル検索+MCPの仕組みを使って、ボカロ曲をAIアシスタントと一緒に探せるチャットボットも作った。

「切ない曲が聴きたい」「疾走感のあるボカロ教えて」みたいな自然言語で検索できる。

ボカロ検索チャットボット

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?