NovelAI ユーザースクリプト機能
ユーザースクリプト機能は、NovelAI に独自の機能を追加できる上級者向け機能です。カスタム UI の追加、生成フックによる挙動の変更、ドキュメント(ストーリー本文)の操作などを、TypeScript(JavaScript のスーパーセット)/ JavaScript で拡張できます。
他のユーザーが作ったスクリプトを使うだけなら、必ずしもプログラミングは必要ありません。ただし、スクリプトの導入や設定は通常の機能より複雑になる場合があります。
注意:スクリプトは(権限が与えられている場合)実行対象のストーリー内容を自由に変更できます。事故や悪意により、ストーリーの削除・改変・破損が起こり得ます。信頼できるソースから入手したスクリプトのみを使用してください。
スクリプトが原因の不具合のデバッグや、スクリプトによるデータ損失の復旧はサポート対象外です。導入前に、ストーリーのバックアップを取っておくことを強くおすすめします(ストーリー設定 からダウンロードできます)。
はじめに
「ユーザースクリプト」画面(User Scripts modal)は、以下の場所から開けます。
- 左サイドバーのガチョウメニュー
- 右サイドバーの「高度な設定」タブ(ストーリー選択時)
- キーボードショートカット:Alt+X
この画面で、スクリプトのインポート・作成・編集・有効/無効の切り替えを行います。スクリプトには 2 つの種類があります。
- アカウントスクリプト:アカウントに保存され、どのストーリーでも読み込まれます
- ストーリースクリプト:ストーリーファイルに保存され、そのストーリーでのみ読み込まれます
スクリプト共有は、公式 Discord の #novelai-scripts チャンネルで行われることがあります。
セクション
- API リファレンス
- フック
- ストレージ
- UI 拡張
- UI パーツ
- モーダル&ウィンドウ
- ドキュメント操作
- テキスト生成
- コンテキスト構築
- ストーリー設定
- ロアブック
- Text-to-Speech(TTS)
- ユーティリティ
- メッセージング
- 権限
- デコレーション
実行アーキテクチャ
スクリプトは Web Worker の分離された JavaScript 実行環境で動作し、NovelAI とのやり取りは定義済み API を通して行います。UI スレッドをブロックしにくい一方、API の多くは非同期(Promise を返す)です。Promise に不慣れな場合は、MDN の解説(英語)も参考になります。
できないこと(制限事項)
セキュリティとプライバシーのため、スクリプトには制限があります。例えば次のことはできません。
- 任意のネットワークリクエスト(外部 URL への自由なアクセス)
- ほとんどのアカウント情報へのアクセス
- DOM への直接アクセス/改変(UI は API を通して作成します)
- スクリプト用に用意されていない箇所の UI 改変
また、現時点で生成関連 API の多くは GLM 4.6 による生成のみをサポートしています。
スクリプトは一時的にアンロードされます
スクリプトは、無効化・ストーリー切り替え・「ユーザースクリプト」画面のクローズなどでアンロードされる場合があります。重要な状態をメモリだけに持たず、必要に応じて ストレージ API を使って保存してください。
スクリプトのせいでサイトが使えないとき
スクリプトが原因で UI が操作不能になり、「ユーザースクリプト」画面から無効化できない場合は、URL 末尾に ?noscript=true を付けて再読み込みすると、スクリプトを読み込まずに起動できます。
例:http://novelai.net/stories?noscript=true
未処理の Promise 例外(Unhandled Promise Rejections)
技術的な理由により、スクリプト内で Promise の例外が未処理のままだと、UI やコンソールにエラーが表示されないことがあります。.catch() や try/catch(await と併用)で、エラー処理を行うことをおすすめします。
例(サンプルスクリプト)
リンク先が新しいタブで開く場合、右クリックから「リンク先を別名で保存…」などを使ってダウンロードできます。
-
スクリプティング・デモ(シナリオ) - さまざまなユーザースクリプトのデモを含むシナリオです。編集可能な例を含み、主要機能を広くカバーしています。
-
Smart Summarizer - エディターの選択テキストを右クリックで要約できるメニューを追加します。
-
Bookmarks - ストーリー履歴の位置を保存して後からジャンプできる「しおり」機能を追加します。
-
Find & Replace - 検索/置換パネルを追加し、ドキュメント内のテキストを検索・置換できます。
-
Retry Harder - 特別なプロンプト処理を行う別バージョンの「リトライ」ボタンを提供します。
ほかの例は GitHub の novelai-script-examples リポジトリ(英語)でも確認できます。
型定義(Type Definitions)
スクリプティング API の型定義ファイル script-types.d.ts は、http://novelai.net/scripting/types/script-types.d.ts で公開されています。対応エディターでは、型情報と補完に利用できます。