生成AIによる小説作成補助ツール「LiteraSynth」

## 新機能の告知

あらすじや登場人物など設定にかかわる情報をベクトル化し、生成AI執筆時にRAGとして用いる機能を実装しました。Cドライブ配下にダウンロードしたフォルダーを配置し利用してみてください。(faissの制約によりOneDrive配下では使えないようです。)

また、RAGに関連するモジュールを多数組み込んだことによりファイルサイズが大幅に増加したため、Githubによる管理をやめ、Dropboxによる配布とすることにしました。

## はじめに
小説を書くことに興味はあるけれど、いざ書き始めると難しい……そう感じたことはありませんか？
アイデアとしてはあるけれども、何から書き始めればいいか分からない。情景描写が書けない。執筆の速度が遅く、自分の書きたいものが形になる前に飽きてしまうなど、小説の執筆には多くのハードルがあります。

（私は上記のすべてに引っかかり、書くことを諦めました！）

そこで、誰もが簡単に小説を執筆できるようにするために、生成AIを活用した小説執筆補助ツールを開発しました。このツールでは、利用者が書きたい場面の状況を入力することで、生成AIによって文章を自動生成します。

このツールのコンセプトは、80点の作品を100点にするのではなく、ゼロから50点のレベルまで引き上げることです。
つまり、「何も書けなかった状態（0点）」から「とりあえず形になっている状態（50点）」を目指すツールです。

## 既存の小説生成サービスの課題
現在、あらすじを入力すると小説を生成してくれるAIツールはすでにいくつか存在しています。しかし、こうしたツールには以下のような問題があります。

- **長編小説の作成が難しい**

AIが一度にすべての内容を決定してしまうため、長編の構成を管理することが難しい。

- **途中から修正しにくい**

生成結果が一括で出力されるため、特定のシーンのみを変更することが難しい。

- **作者のオリジナリティを出しにくい**

あらすじを元にAIが全てを書いてしまうため、作家自身が細かい部分をコントロールしづらい。

## 作成したツールの特徴

上記の課題を解決するために、以下のような特徴を持つツールを開発しました。

- **シーン単位で執筆を進める**

物語全体を一度に生成するのではなく、「シーン単位」でAIに文章を生成させます。

（※利用者による詳細な場面設計が前提となります。）

これにより、物語の進行をコントロールしやすくなり、必要に応じて特定のシーンのみを再生成できるなどの問題が解決されます。

- **手作業での編集が可能**

AIが生成した文章をそのまま使うだけでなく、手作業で修正できます。

生成された文章は編集可能なテキストエリアに挿入されるため、気に入らない部分は自由に修正できます。

これにより、作家自身のオリジナリティを保ちつつ、執筆の負担を軽減できます。

- **ローカル環境で動作する**

APIキーを登録すれば、ローカルPC上で動作可能です。

クラウドに依存せず、手元で安全に小説を作成できます。

対応しているAPIはOpenAI APIとGemini API及び、Claude APIとなります。

Gemini APIは無償での利用が可能なため、気軽に試せるかと思います。

（※APIとのやり取りは発生するため、ネット環境自体は必要です。）

# 使い方

これまでにいろいろと説明しましたが、実際にツールの中身を見ないと分からないかと思います。そこで、実際に使用している画面を紹介します！

**１．小説タイトルの作成！**

まずは初期画面から、画面右上の "Add Novel" ボタンを押して新規作品を登録します。ここでは、タイトルと画像のURLを指定できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/7be48be0-9abf-4445-a1a5-dff305784753.png)

**２．作品の情報管理**

この画面では小説を書くために必要な情報を設定します。
AIによる執筆を意図通りに進めるため、あらすじや登場人物を整理します。

基本的な流れとしては、**"シナリオ管理"画面>"エピソード詳細設定"画面>”小説の作成"画面**と小説のあらすじなど粒度が大きいものから、実際の執筆画面のような粒度の小さいものへ進んでいくイメージです！  

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/a1e04ea6-4a27-4ecb-b0fe-9a1f925fe1c9.png)


まずは"シナリオ管理"画面から！


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/e314f006-1416-47e5-a083-bf0ab2b97e58.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/702dac4d-aa49-477a-ad99-604b0c752c1c.png)  

この画面では、あらすじ、世界観/用語、チャプター、時系列など物語の大枠を設計します。
特に重要なのが チャプター（章） の設定です。


次にエピソードを設計しましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/efcb6fc1-7603-4719-8976-a1d7f12adab9.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/47ae9b45-41a7-42d9-a0c4-9e15a0231c09.png)

ここの画面では"シーン作成"の前提となる情報について記載していきます！
必要な情報としては、このシーンの"タイトル"および"プロット"と、詳細な条件設定としては、”いつ"、"誰と"、"どこで"、"何をした？"、”重要な会話"の７項目です！

**３.生成AIによる執筆！**

このツールのメイン機能となるAIによる執筆画面について紹介していきます！
これまでに設定してきた作品の情報を基に、AIによる執筆補助を実施します。
  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/6274ba66-2f53-47da-9806-45f0119bff33.png)

"Genarete with AI"ボタンをクリック！
これまでに設定したエピソードの詳細な情報を基に、このシーンのあらすじを再編成し、作品を執筆するために必要な質問を返してくれる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/0e1e36e4-db8a-474f-ba8d-e2c0ba0bb4ba.png)

質問に答えて、"Submit"ボタンを押すことで、生成AIが文章を作成してくれる！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/c3bf7651-7bf1-407d-89d3-4e861ad9f75e.png)

このように編集可能なテキストエリアに生成結果を格納してくれるため、ちょっとダメかもという部分があれば手作業による修正が可能です。

**補足 ～APIキーの設定について**

生成AI機能の使用には、生成AIサービスのAPIキーの登録が必要です。
"１．小説タイトルの作成！"終了後に作品個別の管理画面>APIキー管理画面に遷移して設定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/5b66d057-7a1b-41eb-bfd9-96f2e988ca50.png)

# 注意事項
- OpenAIもしくはGeminiのAPIキーを取得することが使用の前提となります。
- 十分な検証が行われておらず想定外の挙動が含まれている可能性があります。(使えなければ教えてください...)
- 今後、機能を拡張予定 です。
- Windows環境を想定して開発されています。

# 更新履歴
【v1.1.0】
・同エピソード内で執筆内容の候補を３つまで保持できるようにしました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/e847b365-bf80-47de-b294-73ed99f5a66f.png)

・"Regenerate with AI"ボタンを実装。テキストエリア内の文章をインプットにし、指示を与えることで記載内容の修正ができるようにしました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/5ecc6b25-a0dc-4839-bd0c-16dc511f64b6.png)

【v1.2.0】
・あらすじの作成支援機能を追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/9230723c-9b83-4373-890a-ba2e5af7a53f.png)
・あらすじから一部を選択し、章、エピソードのプロットとして登録をする機能を追加。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3875706/485d2a41-5644-46e2-b264-69167aa63762.png)

# 追記
2025/04/20：
~~困ったことになりました。RAG機能を内包しようと開発を進めていたのですが、特定のパッケージを導入した際にWindows Defenderにウイルスとして誤認識されるようになってしまい、それがデータとして送信されたのか、別端末から修正前の旧exeファイル（つまり配布したもの）にアクセスした際にもWindows Defenderに誤検知されるようになってしまいました…~~
~~配布にはかなり致命的な問題であり、どうしようかというところとなっております。Windows Defenderを切れば使えますが、それを利用者が行うのはセキュリティー的にどうなんだという話ですので。~~

~~中身自体に問題はなく、ツールの仕様上、exeファイルを起動時に必要な情報について一時ファイルとして展開していますが、そこが怪しい挙動として誤検知されたようです。~~

~~ただ、利用者側にはその意図が伝わらないためWindows Defenderに弾かれた怪しいツールにしか見えないという…。状況が好転することがなければ畳もうかと思いますので、このような理念のツールがあったことだけ記憶の片隅に残していただければ幸いです。~~

⇒上記解決しました。EXE化の際に、自己署名＋nuitkaのコマンドに--windows-console-mode=disableを指定しました。需要あればこのあたりの話は記事にします。

2025/5/19：
質問やバグについての情報を受け付けられるようにDiscordサーバを立てました。
良ろしければご参加くださいー。
**[LiteraSynth公式サーバー](https://discord.gg/HZUUMuU6pD)**

# まとめ

このツールを使うことで、小説執筆のハードルを下げ、誰もが簡単に物語を創作できるようになることを目指します！

「AIにすべてを任せるのではなく、AIを活用しながら自分の作品を作る」というスタイルを目指して、これからも改良を続けていきます。

興味のある方はぜひ試してみてください！

**[LiteraSynth -AI小説執筆補助ツール](https://www.dropbox.com/scl/fi/psr32istwrc6fnv6ul81i/LiteraSynth.zip?rlkey=kb2zyqs557lfb9bwoeq4y2rh4&st=45yatmm7&dl=0)**