統合小説執筆環境(VSCode拡張機能)
書くこと以外、引き受けます。 プロットづくり・設定資料づくり・見直し・投稿の準備・電子書籍とPDFでの出版までを、原稿に手を触れないAIと一緒に片づけるVS Code拡張機能です。
すでに投稿サイトで書いている方は、バックアップを渡すところから始められます(カクヨム・小説家になろう・アルファポリス)。話ごとに切り分けて登録するまで、打鍵はゼロです。
※現在テスト中です。 動作の確認(実機テスト)が済んでいない機能が含まれます。大切な原稿は、必ずバックアップ(GitHub同期など)を取ったうえでお使いください。
このリポジトリの版:0.95.0(Marketplace に出ている版は 0.94.0)。Marketplace に出ている版はこれより遅れることがあります。
- 原稿を書き換えるAIはいません。提案を適用するのは、いつもあなたです。
- 手元AI(Ollama / LM Studio)なら無料で使えます。クラウドAIも、鍵を入れれば機能ごとに選べます。
- 原稿がどこへ出るかは、作品ごとにあなたが決めます。外部AI(MCP)は既定で拒否、GitHubへ出るのは同期を設定した作品だけ、外部AIに読まれた記録は編集履歴に残ります。
- 原稿はただのテキスト/Markdownファイルです。他のエディタとも共存できます。
できること
| 場面 |
できること |
| 始める |
プロットから/本文から新規作品を作る。投稿サイトのバックアップから取り込む(カクヨム・小説家になろう・アルファポリス)。既存のフォルダーやGitHubの作品を登録する |
| 書く |
文字数の自動集計、原稿用紙換算、執筆量の記録とグラフ、縦書き/横書きの原稿エディタ、ルビ・傍点、用語の色分け、シーンメモ、読み上げ |
| 段取りを組む |
公募の締切・自費出版や出版社の発売日・WEB連載の開始日から作業を逆算し、全作品を縦が時間・横が作品の1枚に並べる。機器間で同期する |
| 資料をためる |
本文から登場人物・能力・組織・場所・世界観を抽出する。名前の点検と付け替え、人物相関図、年表 |
| 整える |
本文からプロットを起こす。各話あらすじ・作品紹介文・キャッチコピー・更新告知文。感情曲線 |
| 直す |
誤字脱字・表記ゆれ・推敲・矛盾・プロット逸脱・伏線の検知。指摘は1件ずつ確認して適用する |
| 相談する |
開いている画面についてAIに日本語で質問する。この拡張機能の使い方も聞ける。あなた自身が「読者として」何を求めるかを覚え、作品の読者との違いを知らせる |
| 持ち運ぶ |
GitHubで複数の環境を行き来する。1つのリポジトリ(書庫)に複数の作品を置ける |
| 投稿する |
投稿サイトごとのルビ・傍点記法へ変換してコピーする。投稿状況・ランキングの記録。読者の反応を、そのサイトの言葉で記録する(PV・お気に入り・評価・話ごとの反応) |
| 出版する |
EPUBエディター(表紙・目次・挿絵・奥付)、印刷用のPDF出力 |
| 書き出す |
設定資料集のMarkdown(提供先別にも)、IME辞書(Google日本語入力・MS-IME・ATOK) |
インストール
VS Codeの拡張機能ビュー(Ctrl + Shift + X)で「統合小説執筆環境」を検索してインストールしてください。更新はVS Codeが自動で行います。対応バージョンはVS Code 1.90.0以降です。
code --install-extension nonahisa.novel-ai-assistant
再読み込みすると、左端のアクティビティバーにキーボードと万年筆のアイコンが追加されます。
VSIXファイルから入れる(配布前の版を試す場合)
GitHubのReleaseに置いたVSIXからも入れられます(新規・上書き更新の両方)。
$v = (gh release list --repo nonahisa/novel-ai-assistant --limit 1 --json tagName | ConvertFrom-Json).tagName
gh release download $v --repo nonahisa/novel-ai-assistant --pattern "*.vsix" --clobber
code --install-extension ".\novel-ai-assistant-$($v.TrimStart('v')).vsix" --force
画面から入れる場合は、「拡張機能」ビュー右上の ... →「VSIXからのインストール」で同じファイルを指定します。
必要なもの
作品の管理・文字数・執筆量のグラフは、入れただけで使えます。AIを使う機能には準備が要ります。 コマンドパレット(Ctrl+Shift+P)で「小説執筆: セットアップ(必要なものを入れる)」を選ぶと、足りないものを一覧から選んで入れられます(取得量を先に表示し、途中で中止できます)。
| 何 |
何のために |
要否 |
大きさ |
| Ollama本体 |
手元のパソコンでAIを動かす(無料・原稿を外へ送らない) |
必須 |
約1GB |
会話モデル(gemma4:e4b) |
抽出・生成・校正・相談 |
必須 |
約9.6GB |
埋め込みモデル(bge-m3) |
相談の意味検索 |
任意 |
約1.2GB |
| Git |
複数のパソコンで書く。過去の版へ戻す |
任意 |
約60MB |
| GitHub CLI |
非公開リポジトリの作成・取り寄せ |
任意 |
約12MB |
クラウドAIだけを使うならOllamaとモデルは要らず、1台だけで書くならGitとGitHub CLIも要りません。
使い方
道案内:VS Code の「ヘルプ → はじめに」にある「統合小説執筆環境をはじめる」から、書き方の診断・AIの選択・作品の用意・原稿エディター・困ったときの入口を順に押せます。
はじめの案内(作家タイプ診断)
はじめて開いたときに声をかけます。詳細メニューの「作品執筆 › 相談・助言 › 作家タイプ診断」からいつでも呼べます。
5問(いま書いているもの/どこまで決めてから書くか/いつ直すか/設定はどこにあるか/どこへ出すか)にお答えいただくと、
次にすることを、なぜそれを勧めるのかを添えて案内します。 案内は横に紙として開くので、あとから読み返せます。AIは使いません。
すでに原稿をお持ちなら既存フォルダーの登録から、これから書き始めるなら始め方から案内します。
答えはいつでも変えられます。 同じ入口から「答え直す」を選んでください(前回の答えに印が付きます)。「答えを消す」を選ぶと、はじめて使うときの状態に戻り、開き直したときにまた声をかけます。
手が止まっているときの行き先も、いつでも選べます(前の話の終わり・読み上げ・相談・次の1話のプロット)。
案内の最後にはほかのタイプの一覧が載ります。当たっていないと感じたら答え直してください。
続けて9問(相談の助言方針)にもお答えいただくと、AIの言い方も合わせます——同じ助言でも、書き手によって正反対の意味で届くためです。9問は断れます。
画面
左端のアイコンを押すと4つのビューが並びます。
- 作品一覧:登録した作品と話数ファイル。右クリックで作品ごとの操作ができます
- 簡単ステップメニュー:執筆の流れに沿った8つのステップ。迷ったらこちらから
- 詳細メニュー:全操作の一覧。分類 → 小分類 → 操作の3階層です。新作構想〜電子出版等の5つの分類は、簡単ステップメニューの段と同じ名前です
- AIに相談:開いている画面についてAIと話す窓
執筆データ 全作品執筆統計/執筆統計/作品目標設定/スケジュール/編集履歴
作品管理 作品名変更/シリーズ連結/メモ追加/新規執筆開始/既存原稿登録/クラウド取得/GitHub作品管理/編集部連携/作品別設定
新作構想 支援機能全工程実行/プロット自力作成/プロットモード/対話式プロット作成/プロット逆算/単話プロット作成/名前点検
作品執筆 相談・助言/原稿整備
自己校正 校正・校閲/読者診断
投稿脱稿 広報支援/投稿・出力
電子出版等 PDF出力/EPUBエディター
資料管理 資料抽出/資料閲覧(年表・作中時期・別筋登録を含む)
統合小説執筆環境設定 設定管理/AI/初回設定
ヘルプ 使い方/場面別案内/ログ表示/相談ログ/バージョン確認
項目末尾の「AI」はAIを呼ぶ操作(クラウドAIは実行のたびに課金)、数字は承認待ちの件数です。作品を登録していない間、作品が要る操作は灰色になり理由が出ます。
作品を登録する
- フォルダー登録(作品管理 → 既存原稿登録):すでに原稿があるフォルダーを指定します。カクヨム・小説家になろうからダウンロードしたファイルでも構いません
- GitHubから追加(作品管理 → クラウド取得):別の環境で書いている作品を取り寄せます。非公開リポジトリは GitHub CLI(
gh)経由です
- 新規執筆開始(作品管理):プロット起点(
設定/plot.md を用意)か、本文起点(本文/001.txt を作る)かを選びます。あとからどちらへも移れます
作品名/
├─ 本文/ ← 原稿
├─ 設定/ ← plot.md・設定資料・icons/
├─ .aiwriter/ ← 拡張機能の管理領域
└─ .gitignore
書庫:既定では1つのGitHubリポジトリに複数の作品を置きます。「作品管理 → GitHub作品管理 → GitHub初期設定」で、隣に作品があればまとめるか聞きます。別々に作った作品は「統合小説執筆環境設定 → 初回設定 → 書庫集約」で寄せられます(写すだけで、元のフォルダーは消しません)。
話数の自動認識
| ファイル名 |
認識 |
001.txt |
第1話 |
007_湖畔の誓い.txt |
第7話「湖畔の誓い」 |
003-005_合本.txt |
第3〜5話 |
第12話 再会.md |
第12話「再会」 |
プロローグ.txt / 幕間1.txt |
プロローグ/幕間 |
全角数字と 〜 の範囲指定にも対応します。全話が1ファイルにまとまった形式(小説家になろうのダウンロード)は、中を読んで話ごとに分けて扱います(後書き・リアクションは本文に含めず、文字数にも数えません)。
作品を右クリック →「新規話数ファイルを追加」で、最大話数 + 1 のファイルを作れます。
文字数と執筆量
ツリーにファイルごと・作品ごとの文字数、ステータスバーに開いているファイル(と選択範囲)の文字数が出ます。ツールチップには総文字数・段落数・原稿用紙換算が出ます。原稿用紙の枚数は、20字×20行に組んだときの行数から数えます。
本文を保存するたびに、前回からの増減をその日の執筆量として記録します。「執筆データ → 執筆統計を表示」でパネルが開きます。
- 執筆量タブ:日次30日・週次12週・月次12か月・年次のグラフ。目標線・達成率・連続日数
- 話ごとタブ:話数・タイトル・文字数・枚数・平均比の一覧(押すとその話が開きます)
目標(1日・1か月の字数、作品の文字量、締切前の書き上げ)に届くと、執筆統計に風船が上がります(作品の文字量と締切は花火も)。原稿エディタでは下の欄に一言出るだけです。同じ目標で祝うのは一度だけです。
初回の測定、ファイルの増減、競合件数の変化、pull による増減は執筆量に数えません。記録は .aiwriter/stats/<環境名>.json に環境ごとに置き、読むときは合算します。「執筆データ → 全作品の執筆統計を表示」で全作品の合計を見られます。
「執筆データ → スケジュール」で、締切・発売日・連載開始から段取り(執筆・推敲・入稿など)を逆算し、縦が時間・横が作品の1枚に並べます(公募・自費出版・出版社・WEB連載。1つの作品にいくつでも。作品の 設定/スケジュール.json に置くので同期で機器間を行き来します)。
原稿エディタ(縦書き・横書き)
作品一覧から本文を開くと、この画面(横書き)で開きます。上のバーの「縦書き」か、右クリックの「縦書き表示」で縦書きになります。
- ルビは振り仮名、傍点は圏点として組んだまま打ち込めます(
.md の {漢字\|かんじ} も、.txt の |漢字《かんじ》・《《強調》》 も表示します)
- 登場人物(青)・場所(緑)・能力(紫)・組織(橙)を色分けします。カーソルを合わせると設定の要点が出て、右クリックで設定資料を開けます。設定の食い違いは「変化かもしれない(外見): 黒髪(第1〜3話)→ 銀髪(第7話)」のように話数と並べて出ます
- 上のバー:縦書き/横書き・ルビ/傍点(
.md のみ)・投稿用にコピー・書体・文字の大きさ。下:前の話/次の話、作品の総字数・このファイルの字数・今日書いた字数、「最新話を書く」
- 保存・元に戻す・外部ツールで書き換えられたときの読み直しは、ふつうのエディタと同じです(文字コードと改行も変わりません)。ファイルの関連付けも変えないので、エクスプローラーから開けば従来どおりです
読み上げ(音読推敲):ツールバーの「読み上げ」→「▶ 読む」でOSの声が読み上げ、読んでいる文が光ります(AIも通信も使いません)。「⚑ 引っかかった」でその文の前にシーンメモを残して一時停止します。
シーンメモ:行頭に //(全角 // も可)で書くと付箋になります。最初の語がタグです(TODO・要確認・伏線・アイデア・自由)。
// TODO ここに潮の匂いの描写を足す
蛍光黄色で示され、**字数・投稿用コピー・PDF・プレビュー・AIへ渡す本文には入りません。**原稿エディターの右クリック「シーンメモを横に開く」で一覧が開き、「次へ」「戻る」で話をまたいで飛べます。
ルビと傍点
本文を範囲選択して右クリック →「ルビを振る」「傍点を付ける」。漢字の直後にカーソルがあれば、選ばなくても拾います。
ルビは .md でも .txt でも振れます。 書き方はファイルに合わせて入ります(.md は {漢字|かんじ}、.txt は |漢字《かんじ》)。すでにルビのあるところを選ぶと、いまの読みが入った入力欄が出て直せます(空にして確定すると外れます)。傍点は .md だけです(.txt は投稿サイトごとに書き方が違うため)。
|
書き方 |
表示 |
| ルビ |
{漢字\|かんじ} |
漢字の上に「かんじ」 |
| 傍点 |
{{強調}} |
各文字の右上に点 |
投稿サイト用に変換:原稿エディターの右クリック →「投稿サイト用にコピー」。クリップボードへ入れるだけで、原稿は書き換えません。
| サイト |
ルビ |
傍点 |
| カクヨム/ネオページ |
|漢字《かんじ》 |
《《強調》》 |
| 小説家になろう/アルファポリス |
|漢字《かんじ》 |
|強調《・・》 |
取り込む:「投稿脱稿 → 投稿・出力 → 投稿サイトルビ取込」で、サイトの記法を拡張機能の書き方へ読み替えます(件数を先に表示)。
読み仮名からまとめて振る:設定資料パネルの「ルビを追加」。範囲(すべての話/開いている話/話数を選ぶ)と、最初の1回だけか全部かを選べます。
テキストをMarkdownにする
「作品執筆 → 原稿整備 → 本文 .md 化」、または話数を右クリック。名前を変え、投稿サイト記法のルビ・傍点だけをこの拡張機能の書き方へ直します(字そのもの・文字コード・改行はそのまま)。直す前の本文は控えが残ります。
AI機能
AIを設定する
サイドバー右上の歯車、コマンドパレット(Ctrl+Shift+P)の「小説執筆: AI設定」、または「統合小説執筆環境設定 → AI → AI設定」。使うAIを選ぶと接続テストが走り、モデルの一覧から選べます。
| AI |
費用 |
APIキーの発行元 |
| Ollama |
無料・オフライン可 |
不要 |
| LM Studio |
無料・オフライン可 |
不要 |
| Gemini |
無料枠あり。超えると課金 |
aistudio.google.com |
| さくらのAI Engine |
無料枠あり。超えると課金 |
さくらのクラウド コントロールパネル |
| ChatGPT |
実行するたびに課金 |
platform.openai.com |
| Claude |
実行するたびに課金 |
console.anthropic.com |
| VS Code 経由 |
VS Code 側の契約による |
不要(VS Code が持っています) |
APIキーはOSの資格情報ストアへ保存し、settings.json や作品フォルダーには書き込みません。 ログでは伏せ字にします。クラウドAIでは、呼び出しの多い処理の前にトークン量の目安を表示します。
- Ollama:事前に起動してモデルを取得します(
ollama pull gemma4:e4b)。コマンドパレットの「小説執筆: Ollama導入」で足りないところだけ案内します
- LM Studio:モデルを読み込み、左の「Developer」からローカルサーバーを開始してから使います(APIキー不要)
- VS Code 経由:VS Code に繋いであるAIを借ります(APIキー不要)。GitHub Copilot にサインインするか、VS Code の設定に各社の鍵を入れてあれば選べます。モデルの名前に提供元が付きます。初回は許可を確認します。 本文を分けて何度も送る機能(抽出・誤字脱字・推敲の通し)には向きません——Copilot の無料枠(チャット50回/月)では足りないためです
- コンテキスト長:ChatGPT・さくらのAI Engine・LM Studio はAPIから取得できないため、下記の
contextWindow に実際の値を入れてください。実際より大きいと、入力が黙って切り捨てられます
- 機能別AI割当(統合小説執筆環境設定 → 設定管理):8つの単位(抽出/誤字脱字/推敲/矛盾/逸脱/伏線/生成/相談)で使い分けられます
- AIチューニング(統合小説執筆環境設定 → 初回設定・AIを使います):合言葉を入れた詰め物を送り、実際に読める上限を割り出します。結果は「設定に書く」を押したときだけ設定へ入ります
設定資料をためる
- 一括抽出(資料管理 → 資料抽出):全話から登場人物・能力・組織・場所・世界観を1回の応答でまとめて取り出し、
設定/characters/ などのJSONと、読み用の characters.md・abilities.md・organizations.md・locations.md・world.md を作ります
- 設定資料集出力(投稿脱稿 → 投稿・出力):JSONから上の5つのMarkdownを作り直します(AIを呼びません)
- 設定資料集閲覧(資料管理 → 資料閲覧):左が一覧、右が詳細。名前・読み・別名・性別・役割・性格・外見・説明・作者メモをその場で直せます。保存した項目は、以後の抽出で上書きされません
- 名前点検(新作構想):響きの近い名前を強さと理由つきで並べます(AI不要)。「候補を出す」で新しい名前を10件(AIを使います)、「付け替える」で本文の登場箇所を提案パネルに並べ、1件ずつ/まとめて適用できます
- 人物相関図:「関係」と「呼称」から図を作ります(AI不要)。人物ごとの中心図とSVGの書き出しもできます
- 年表(資料管理 → 資料閲覧):1行が1話で、登場人物・作中の変化・能力の習得・呼称・伏線・あらすじが並びます。「作中時期・別筋登録」で時期を割り当てると時系列順に並べ替えられます
- 設定資料項目追加(作品管理 → 作品別設定):誕生日・身長などを人物設定に足せます(定義は
設定/custom_fields.json)
- AIで再読込:各項目に入れる内容をAIが提案します。空欄を埋める提案だけが最初からチェックされ、既存の内容を置き換える提案には警告が付きます
- AIに相談する(設定資料パネル):人物についての質問や掘り下げ。承認したものだけが
aiNotes へ追記されます
- 人物重複統合:「リン」と「リンセップ・アウクト」のような重複を1件にします(自動では統合しません)
- 設定資料更新分反映:再抽出で見つかった既存人物への変更は承認待ちになり、何が変わるかを見てから取り込めます
抽出するもの:名前、別名、役割、性格、外見、一人称、呼称(誰が誰をどう呼ぶか。相手ごと・呼び方ごと)、関係、登場話数。同じ相手への複数の呼び方は、話数付きで全部残します。 保存は1人1ファイル(char_001_月島灯.json)で、変更のないファイルは再処理しません。
他のAIに頼む:設定/_schema/ にAI向けの定義(日本語の README.md と JSON Schema)を書き出しています。Copilot・Claude Code などに「設定/_schema/README.md を読んでから 設定/characters/ を更新して」と頼めます。外部から設定JSONが書き換えられると通知するので、内容を確認してから取り込めます。
整える・直す・相談する
- プロット逆算:各話あらすじを材料に、ログライン・テーマ・世界観・舞台・人称・行動原理・あらすじ・主要人物を
設定/plot.md へ書きます。作者が書いた項目は、確認せずに書き換えません
- 各話あらすじ:あらすじと一緒に感情曲線(盛り上がり0〜10・明暗−5〜+5)を測り、
設定/synopsis.md にグラフで入ります
- 作品紹介文・キャッチコピー・章立て:本文から下書きを作ります
- 更新SNS告知文作成(投稿脱稿 → 広報支援):ネタバレしない告知文を3種(X用・活動報告/近況ノート用・後書き用)。貼るのは作者です(サイトへ自動で書き込みません)
- 誤字脱字・推敲・矛盾・プロット逸脱・伏線の検知(自己校正 → 校正・校閲):候補を「提案」パネルに並べ、1件ずつ確認して適用します。方言や口癖は「直さない語」に登録して守れます
- 表記ゆれ検知:「良い/よい」のような揺れを作品全体から探します(AIを使いません)。どちらに揃えるかを選ぶと、少数派の箇所が提案パネルに並びます
- AIに相談する:左サイドバーの「AIに相談」、本文の右クリック、または詳細メニューの「作品執筆 → 相談・助言 → 相談パネルを開く」。いま開いているファイルについて日本語で質問できます(範囲を選ぶとそこについての相談になります)。プロット・紹介文・キャッチコピー・各話あらすじは、確かめてボタンを押すと書き込めます(本文は対象外)
AIに渡す本文:長い作品はそのまま渡せないため、その名前が出てくる場面だけを集めて渡します(既定で30箇所・12,000字まで、作品全体から均等に)。相談では、質問に近い場面を本文・設定資料・各話あらすじから探し、出どころ(《本文/第105話》)を添えて渡します。コマンドパレットの「小説執筆: ベクトル検索準備」を入れると言い換えでも見つかりやすくなります(埋め込みモデル約1.2GB、手元のOllamaで作るので無料。既定は「切」)。
ログ
「ヘルプ → ログ表示」。.aiwriter/logs/actions.log にも保存されます(Gitの同期対象外)。本文そのものは書かず、APIキーらしき文字列は伏せ字にします。
Claude Code から使う(MCPサーバー)
このリポジトリを Claude Code で開くと、.mcp.json の登録により novel-ai-assistant のツールが一覧に出ます(npm run build で dist/mcp-server.mjs が作られます)。VS Code が起動していなくても動きます。
使う前に、作品ごとに許可が要ります。 既定は拒否で、許可するまで外からは1文字も読めません。VS Code でその作品を開き、「詳細メニュー → 作品管理 → 作品別設定 → 外部AI許可/取消」から許可してください。許可はこの機械だけに効き、いつでも取り消せます。
できることは、作品フォルダーの走査(合本は話ごとに分けます)と、誤字脱字・推敲・矛盾検知・伏線・相談・設定資料の抽出・各話あらすじ・プロット逸脱・単話プロット・表記ゆれのプロンプト作り・検算・実行です。原稿も設定資料も書き換えません。
- 本文をどこへ送るかは毎回指定します(
runner)。ollama は手元のOllamaで検算まで通し、結果だけを返します。claude はプロンプトを返し、Claudeが読んだ応答を検算へ戻します(このとき本文がAnthropicへ渡ります)
- 手元以外のOllamaへ送るときは
allowRemote を付けます
- 読むのは、指定した作品フォルダーの中だけです
- 読まれた記録は残ります。「執筆データ → 編集履歴」の下に、いつ・どの道具が・本文をどこまで外へ出したかが並びます。許可していない作品へのノックも残ります
編集部の方と一緒に使う
設定 novelai.mode を editor にすると、本文の校正・校閲だけが使える状態になります(誤字脱字・表記ゆれ・推敲・直さない語・同期と競合解決・文字数・設定資料の閲覧)。設定資料の抽出や更新、プロット、あらすじ、執筆統計、新規作品の作成は押せなくなり、理由が出ます。
- 編集部は本文を書き換えません。「適用」を押しても提案として置かれます。作者側で「作品管理 → 編集部連携 → 編集部提案確認」を開き、1件ずつ採るか見送るかを決めます(採る直前に本文と照らし合わせます)
- 校閲ロック:「作品管理 → 編集部連携 → 校閲開始/終了」で、いま開いているファイルが「校閲中」になります。ファイル単位なので同時に別の話を書け、作者はいつでも外せます
- 編集履歴:「執筆データ → 編集履歴」で、作者(●)・編集者(▲)・AI(■)を色分けして並べます(
.aiwriter/history/edits.jsonl。GitHubで同期されます)
- 競合:それぞれの版を最後に触った人の名前(gitの
user.name)が出ます
- 編集部がGitHub経由で設定資料を直したときは、通知の「この変更を守る」で以後AIに上書きさせません
GitHubで持ち運ぶ
「作品管理 → GitHubで作品管理」から、同期・競合解決・復元を行います。Gitの言葉は要りません。
復元:日時と件名の一覧から版を選ぶと、戻すと何が起きるか(内容が戻る/消える/復活するファイル)を先に見せます。いまの原稿は戻す前に履歴へ自動で残すので、やり直せます。
投稿・出版・書き出し
- 投稿用変換・コピー(上記「ルビと傍点」)
- 投稿状況の記録:投稿サイトごとの投稿状況・作品情報・ランキングを手元に記録します(手入力のみ。サイトへの自動アクセスはしません)
- EPUBエディター:表紙・目次・挿絵・奥付・人物紹介を、プレビューで確かめながら組みます。飾り(SVG)は
設定/書籍/飾り/ か novelai.epub.ornamentFolder から足せます
- PDF出力:印刷用の組版
- 設定資料集のMarkdown:編集部向け・イラスト発注向けなど、提供先別にも出せます
- IME辞書:Google日本語入力・MS-IME・ATOK 用
文字コード:UTF-8(BOMの有無どちらも)と Shift_JIS を自動判別して読み込み、同じ文字コード・改行コードのまま書き戻します。
設定
Ctrl + , で設定を開き、「novelai」で検索してください。
執筆・表示
| 設定 |
既定値 |
説明 |
novelai.countMode |
net |
ステータスバーに表示する文字数の種類 |
novelai.excludeRubyFromCount |
true |
ルビ部分を文字数から除外する |
novelai.manuscriptEditor.vertical |
true |
「縦書き表示」で開いた原稿を、はじめから縦書きにする |
novelai.manuscriptEditor.fontFamily |
(空) |
原稿の画面で使う書体。空なら明朝体 |
novelai.manuscriptEditor.readAloudRate |
1 |
読み上げの速さ(0.5〜2) |
novelai.episodeFileExtension |
.txt |
新規ファイルの既定の拡張子 |
novelai.episodeNumberDigits |
3 |
話数のゼロ埋め桁数(3なら 001.txt) |
novelai.chatter.enabled |
true |
書いている最中に、AIが相談パネルへひとこと差し込む(Ollamaのみ) |
novelai.stats.enabled |
true |
保存のたびに執筆量を記録する |
novelai.stats.showInStatusBar |
true |
ステータスバーに今日の執筆量を出す |
novelai.stats.dailyGoal |
0(目標なし) |
1日の目標字数 |
novelai.stats.monthlyGoal |
0(目標なし) |
1か月の目標字数 |
novelai.stats.dayBoundaryHour |
4 |
1日の区切りとする時刻 |
novelai.stats.weekStart |
monday |
週次グラフで週の始まりとする曜日 |
novelai.schedule.notify |
true |
スケジュールの段の開始・期日、締切・発売日・連載開始が近づいたら1日1回知らせる |
novelai.schedule.weekdayWeight |
1 |
スケジュールの逆算で、平日にどれだけ進むか(0 は休み)。お勤めがあって平日は少し、休日に多く書く人は、平日を小さく・土日祝を大きく |
novelai.schedule.weekendWeight |
1 |
土日にどれだけ進むか(0 は休み) |
novelai.schedule.holidayWeight |
1 |
祝日にどれだけ進むか(0 は休み。土日と重なる祝日もこの割合) |
novelai.schedule.overlapPenalty |
0.1 |
自分で進める作業が同じ日に重なったときの、重なり1つごとに落ちる速さの割合 |
novelai.celebrations.enabled |
true |
目標に届いたら、執筆統計に風船(大きな目標は花火も)、原稿エディターの下の欄に一言 |
novelai.readerStats.importOnFocus |
true |
VS Code に戻ったとき、統合小説執筆環境ヘルパーがコピーした読者の反応を取り込むか訊く |
novelai.epub.ornamentFolder |
""(指していない) |
EPUBの飾り(*.svg)を追加で読み込むフォルダーの絶対パス |
novelai.mode |
author |
この環境を作者(author)と編集者(editor)のどちらとして使うか |
曜日ごとに割合を変えたいときは novelai.schedule.weekdayOverrides に書きます(例:水曜は書かない → { "wed": 0 }。書いていない曜日は平日・土日の割合のまま)。
AI
| 設定 |
既定値 |
説明 |
novelai.ollama.endpoint |
http://localhost:11434 |
OllamaのURL |
novelai.ollama.executablePath |
""(自動検出) |
ollama 実行ファイルの場所 |
novelai.ollama.numCtx |
0(自動) |
AIへ渡すコンテキスト長。指定しないと入力が切り捨てられます |
novelai.ollama.streaming |
true |
Ollama の応答を流しながら受け取り、相談パネルに考えている中身を流す |
novelai.ollama.timeoutSeconds |
300 |
Ollamaの1回の呼び出しのタイムアウト |
novelai.lmstudio.endpoint |
http://localhost:1234/v1 |
LM StudioのローカルサーバーのURL |
novelai.lmstudio.contextWindow |
8192 |
LM Studioのコンテキスト長。読み込んだモデルに合わせてください |
novelai.lmstudio.timeoutSeconds |
300 |
LM Studioの1回の呼び出しのタイムアウト |
novelai.lmstudio.cliPath |
""(自動検出) |
LM Studioのコマンド(lms)の場所 |
novelai.lmstudio.loadContextLength |
0(モデルの最大) |
モデルを読み込むときの文脈の長さ |
novelai.gemini.endpoint |
https://generativelanguage.googleapis.com/v1beta |
GeminiのURL |
novelai.gemini.timeoutSeconds |
180 |
Geminiの1回の呼び出しのタイムアウト |
novelai.openai.endpoint |
https://api.openai.com/v1 |
ChatGPTのURL |
novelai.openai.timeoutSeconds |
180 |
ChatGPTの1回の呼び出しのタイムアウト |
novelai.openai.contextWindow |
128000 |
ChatGPTのコンテキスト長。実際より大きいと入力が切り捨てられます |
novelai.sakura.endpoint |
https://api.ai.sakura.ad.jp/v1 |
さくらのAI EngineのURL |
novelai.sakura.timeoutSeconds |
180 |
さくらのAI Engineの1回の呼び出しのタイムアウト |
novelai.sakura.contextWindow |
32000 |
さくらのAI Engineのコンテキスト長。実際に合わせてください |
novelai.claude.timeoutSeconds |
300 |
Claudeの1回の呼び出しのタイムアウト |
novelai.maxOutputTokens |
16384 |
1回の応答で受け取る最大トークン数(出力は入力より単価が高い) |
novelai.chunkSizeMode |
モデルによって可変 |
AIへ1回に送る本文の量の決め方。既定はコンテキスト長から自動 |
novelai.chunkChars |
0(指定なし) |
1チャンクの文字数。「文字数を指定する」のときだけ使います |
novelai.mergeChunkChars |
6000 |
短い話をまとめて送るときの目安。「文字数を指定する」のときだけ(0 でまとめない) |
Git・検索・ログ
| 設定 |
既定値 |
説明 |
novelai.git.autoFetch |
true |
別の環境の変更を自動で取得する。取得だけで、原稿は書き換わりません |
novelai.git.autoFetchIntervalMinutes |
10 |
自動取得の最小間隔 |
novelai.git.autoResend |
true |
記録済みで送れていない分を、回線が戻ったら自動で送り直す。送るだけで、取り込みや合流はしません |
novelai.git.autoResendIntervalMinutes |
5 |
自動の送り直しを試す間隔(分) |
novelai.git.syncCache |
false |
抽出キャッシュをGitの同期対象にするか |
novelai.vectorSearch.enabled |
false |
相談で使う意味検索(ベクトルDB)を使うか |
novelai.vectorSearch.model |
bge-m3 |
意味検索に使う埋め込みモデル(変更すると索引は作り直し) |
novelai.vectorSearch.autoUpdate |
true |
相談を始めるときに、変更ぶんだけ索引を追加する |
novelai.vectorSearch.useInChecks |
false |
矛盾検知で意味の近い前の場面も渡し、伏線回収確認で意味の近い箇所だけを照らす |
novelai.chatLog.enabled |
true |
相談のやり取りを .aiwriter/logs/chat.md に残す(原稿の一部を含みます) |
novelai.usageLog.enabled |
true |
送った量を .aiwriter/logs/usage.md に1行残す(字数だけ) |
novelai.logs.retentionDays |
7 |
ログに残す日数(0で消さない) |
novelai.findings.retentionDays |
3 |
AIの指摘を並べ続ける日数(0でずっと並べる) |
novelai.proposals.showInBottomPanel |
false |
提案パネルを画面下のパネル領域にも出す(既定はエディターの右の列だけ) |
novelai.modelTuning は「AIが実際に読める長さを測る」が書き込む記録です(手で書く項目ではありません)。novelai.claude.maxOutputTokens は旧設定で、novelai.maxOutputTokens に置き換わりました。
novelai.confirm.remembered は、確認の画面で「以降は訊かない」を押したときに書き込まれる控えです。戻すときは、この設定の説明にある「訊かないことにした確認を見直す」から選ぶか、ここを空({})にしてください。
注意
- AIの結果は作者が確認してください。 抽出結果は本文との逐語照合で根拠のないものを除きますが、精度を保証するものではありません
- 本文(原稿)をAIが勝手に書き換えることはありません。 適用は作者が1件ずつ押したときだけです。書き戻す前に本文が変わっていないかを照合し、変わっていれば中止します
- 安全対策:Gitの未解決競合(
<<<<<<<)を含むファイルは処理しません。未保存の変更が残る場合は開始せず、壊れたJSONがあれば上書きせず中止します
- 対応する投稿サイトの記法:カクヨム・ネオページ・小説家になろう・アルファポリス
- 実データで確かめたAIは Ollama・Gemini・さくらのAI Engine・LM Studio の4つです。 ChatGPT・Claude は実サービスへ繋いだ確認をしていません
- ブラウザ版(vscode.dev / github.dev) は作品の登録と一覧表示までを確認済みです。AI接続・書き込み・GitHub同期は未確認で、外部プロセスを使う操作は押せなくなり理由が出ます
- 未実装:相談パネルから設定資料の項目を直接書き換えること(人物メモへの追記は対応済み)
アンインストール
拡張機能ビューから、または次を実行します。原稿、.aiwriter/、設定/characters/ は削除されません。
code --uninstall-extension nonahisa.novel-ai-assistant
開発者向け
npm install # 依存の取得
npm run build # ビルド
npm run watch # 監視ビルド
npm run check # 型検査+単体テスト+本番ビルド
VS Codeで F5 を押すと拡張機能開発ホストが起動します。
npm run package:vsix # release/ にVSIXを作る(リリースゲートを通ります)
npm run verify:vsix # 中身・隔離インストール・版を検証する
npm run release:github # タグを押して Release を作り、VSIXを添付する
release:github は、作業ツリーがきれいで main が origin/main と同じで gh にログイン済みでなければ止まります。ノートは docs/releases/vX.Y.Z.md、無ければ CHANGELOG.md の先頭の節を使います。Marketplaceへの公開(npm run publish:marketplace)は別の操作です。
さくらのAI Engine のスモークテストは GitHub Actions の Sakura AI Engine Smoke Test で走ります(シークレット SAKURA_AI_ACCOUNT_TOKEN が要ります)。設計・仕様の文書は docs/ にあります。
ライセンス
MIT ライセンスです(全文は配布物に同梱の LICENSE.txt)。自由に使い、改変し、再配布できます。作者は何の保証も負いません。
あなたが書いた小説・プロット・設定資料は、このライセンスの対象外です。 作品の権利はあなたのものです(この拡張機能が作ったファイルも同じです)。
組み込んで配布しているライブラリ(全文は配布物に同梱の THIRD-PARTY-NOTICES.md):
| ライブラリ |
ライセンス |
用途 |
@anthropic-ai/sdk |
MIT |
Claudeへの接続 |
iconv-lite |
MIT |
Shift_JIS の読み書き |
diff |
BSD-3-Clause |
本文の差分 |
リポジトリ:https://github.com/nonahisa/novel-ai-assistant