narou_rs は、日本の Web 小説を取得・管理・変換する CLI / Web UI ツールです。 外部から観測できる挙動、設定ファイル、YAML、出力形式について narou.rb との互換性を重視しつつ、Rust で保守しやすく安全に実装しています。
README では、導入方法、基本操作、主な注意点をまとめます。詳細なコマンド互換性や未完了項目は COMMANDS.md を参照してください。
このソフトウェアは whiteleaf氏 が作成した narou.rb 及び ponpon.USA氏 の フォーク版 をベースに作成されています。
素晴らしいソフトウェアを開発していただいたお二方に感謝を。
- Web 小説のダウンロード、更新、変換
- なろう・R18 なろう・カクヨムのシリーズ/コレクション URL からの一括登録
.narou/配下の管理データと設定の読み書きwebnovel/*.yamlによるサイト定義ベースの取得- 端末向け出力、メール送信、差分確認、バックアップ
- ブラウザから操作できる Web UI
小説家になろうを含めて、下記のサイトに対応しています。
- 小説家になろう http://syosetu.com/
- ノクターンノベルズ http://noc.syosetu.com/
- ムーンライトノベルズ http://mnlt.syosetu.com/
- ミッドナイトノベルズ http://mid.syosetu.com/
- ハーメルン https://syosetu.org/
- Arcadia http://www.mai-net.net/
- 暁 http://www.akatsuki-novels.com/
- カクヨム https://kakuyomu.jp/
セットアップ方法は 2 つあります。通常利用では Release 版を使ってください。Rust 環境があり、自分でビルドしたい場合はリポジトリから実行できます。
GitHub Releases から利用環境に合う配布 zip をダウンロードし、任意の場所に展開してください。
配布 zip は narou/ ディレクトリをルートに持つ構成です。実行に必要なファイルはその中にまとまっています。
narou/
narou_rs(.exe)
narou_rs_updater(.exe).new
webnovel/
preset/
LICENSE
README.md
Third-Party-License.md
commitversion
narou_rs は、実行ファイルの近くにある webnovel/、preset/、commitversion を参照します。これらを分離しないでください。
Windows では、展開した narou/ を Path に追加してから、小説を管理したいフォルダで narou_rs init を実行します。$narouDir は自分が zip を展開した narou/ フォルダ、$novelDir は小説を管理したいフォルダに置き換えてください。
$narouDir = "C:\Users\your-name\Downloads\narou"
$novelDir = "C:\Users\your-name\Documents\narou-novels"
$narouPath = (Resolve-Path $narouDir).Path
$currentPath = [Environment]::GetEnvironmentVariable("Path", "User")
[Environment]::SetEnvironmentVariable("Path", "$currentPath;$narouPath", "User")Path の変更を反映するため、PowerShell を開き直してください。その後、小説を管理したいフォルダに移動して初期化します。
New-Item -ItemType Directory -Force -Path $novelDir
Set-Location $novelDir
narou_rs initLinux / macOS でも、展開した narou/ を PATH に追加してから、小説を管理したいディレクトリで narou_rs init を実行します。/absolute/path/to/narou は展開した narou/ の絶対パス、~/narou-novels は小説を管理したいディレクトリに置き換えてください。
echo 'export PATH="$PATH:/absolute/path/to/narou"' >> ~/.bashrc
source ~/.bashrc
mkdir -p ~/narou-novels
cd ~/narou-novels
narou_rs initWindows 向けの配布バイナリで VCRUNTIME140.dll が見つからない場合は、Microsoft 公式の 最新の Visual C++ 再配布可能パッケージ から Visual C++ v14 Redistributable (x64) をインストールしてください。
Linux 向けの配布バイナリは GitHub Actions の Ubuntu 24.04 上で *-unknown-linux-gnu ターゲットとしてビルドしています。古い glibc の環境では GLIBC_2.xx not found のようなエラーで起動できない場合があるため、その場合は利用環境上で cargo build --release して実行してください。
Rust のビルド環境を用意し、リポジトリを clone してからビルドします。
$workDir = "C:\Users\your-name\Documents"
Set-Location $workDir
git clone https://github.com/Rumia-Channel/narou.rs.git
Set-Location .\narou.rs
cargo build
cargo run -- initRelease と同じ構成の narou/ フォルダをリポジトリ直下に作る場合は、cargo local-build を使います。
cargo local-buildcargo local-build は GitHub Actions の release と同じ構成の narou/ フォルダを作成します。release ビルドした narou_rs(.exe)、narou_rs_updater(.exe).new、webnovel/、preset/、LICENSE、README.md、Third-Party-License.md、commitversion を narou/ に配置します。
作成された narou/ は Release 版と同じように Path に追加し、小説を管理したいフォルダで narou_rs init を実行してください。narou/ の中を作業ディレクトリにはしません。
初期化時に AozoraEpub3 の場所も指定する場合は、次のように実行します。
$aozoraDir = "C:\Users\your-name\Documents\AozoraEpub3"
cargo run -- init -p $aozoraDir -l 1.8narou init を実行すると、作業ディレクトリに主に以下を作成します。
.narou/ ローカル設定、DB、キュー、タグ色など
小説データ/ ダウンロードした小説データ
webnovel/ ユーザー編集用のサイト定義 YAML
あわせて、ホームディレクトリ側の ~/.narousetting/global_setting.yaml をグローバル設定として使います。
Release 版や cargo local-build で作った narou/ を使う場合は、narou_rs コマンドで操作します。
narou_rs init
narou_rs download "https://ncode.syosetu.com/n9669bk/"
narou_rs update
narou_rs convert 1
narou_rs webリポジトリから直接実行する場合は、narou_rs の代わりに cargo run -- を使います。例: cargo run -- download "https://ncode.syosetu.com/n9669bk/"。
| コマンド | 主な用途 |
|---|---|
init |
作業ディレクトリの初期化、AozoraEpub3 設定 |
download |
新規ダウンロード |
update |
既存小説の更新 |
convert |
テキスト変換、端末向け出力 |
list |
登録小説の一覧表示 |
tag |
タグの追加、削除、色設定 |
freeze |
更新対象からの除外、再開 |
remove |
小説情報または保存ファイルの削除 |
setting |
設定値の参照、変更、削除 |
diff |
raw データや本文差分の確認 |
send |
端末向け送信 |
mail |
メール送信 |
web |
Web UI の起動 |
backup |
バックアップ作成 |
clean |
孤立データや不要データの掃除 |
folder |
保存フォルダを開く |
browser |
掲載ページや感想ページを開く |
alias |
別名の登録、削除、一覧 |
inspect |
変換時の調査ログ確認 |
csv |
CSV export / import |
log |
ログ表示 |
trace |
panic 時のトレース表示 |
help |
ヘルプ表示 |
version |
バージョン情報表示 |
すべてのコマンド仕様、オプション、完了度は COMMANDS.md にまとめています。
narou_rs download "https://ncode.syosetu.com/n9669bk/"
narou_rs download "https://ncode.syosetu.com/s3795b/"
narou_rs download "https://kakuyomu.jp/users/bottyan_1129/collections/16816452219618293895"
narou_rs download n9669bk
narou_rs download tag:未読narou_rs update
narou_rs update 1 2 3
narou_rs update --glnarou_rs convert 1
narou_rs convert 1 --inspect
narou_rs convert .\input.txt --enc shift_jisnarou_rs web
narou_rs web --port 8888 --no-browser
narou_rs web --hide-console通常の web 利用は localhost 前提です。外部公開や reverse proxy 配下で使う場合だけ、CLI から hidden 設定を変更してください。
narou_rs setting server-basic-auth.require-for-external-bind=false
narou_rs setting server-reverse-proxy.enable=trueserver-basic-auth.require-for-external-bindは、server-bind=0.0.0.0など外部公開 bind のときに Basic 認証未設定での起動を拒否する narou_rs 独自ガードです。既定値はtrueです。server-reverse-proxy.enableは nginx などの前段 proxy が付ける外側のHost/Originを受け入れるモードです。既定値はfalseで、reverse proxy 越しに公開するときだけtrueにしてください。- どちらも Web UI の設定画面には表示されません。
narou_rs setting <name>=<value>でのみ変更します。
主なグローバルオプションは以下です。
| オプション | 意味 |
|---|---|
--no-color |
カラー表示を無効化 |
--multiple |
複数引数を区切り文字で展開 |
--time |
実行時間を表示 |
--backtrace |
エラー時に詳細を表示 |
--user-agent <UA> |
User-Agent を明示指定 |
-h, --help |
ヘルプ表示 |
-v, --version |
バージョン表示 |
default_args.<command> や force.* などの設定も narou.rb 互換を意識して扱います。
- 作業ディレクトリ単位で
.narou/を持つ設計です。download、update、convertなどは基本的に初期化済みディレクトリで実行してください。 - サイトごとの取得・抽出ルールは
webnovel/*.yamlを使います。ユーザーがこの YAML を編集すると、挙動もそれに追従します。 - 保存データや設定ファイルは narou.rb 互換の YAML / ディレクトリ構成を重視しています。
- 変換結果は青空文庫向け整形を基準にし、設定や device 指定に応じて追加出力を行います。
updateはgeneral_lastup、差分 cache、strong update、freeze などの挙動を持ちます。webは localhost 利用を基本にしています。非 loopback で公開する場合は認証設定を行ってください。- Windows では
narou_rs web --hide-consoleでコンソールを出さずに起動し、タスクトレイから終了/再起動を選べます。
narou init前に多くのコマンドを実行しても、初期化を促す表示になります。webnovel/*.yamlを Rust 側のハードコードより優先する方針です。サイト追従が必要な場合は、まず YAML の更新を検討してください。- 配布物を移動するときは、実行ファイルだけでなく
webnovel/とpreset/も一緒に配置してください。 send、mail、AozoraEpub3 連携は、端末や SMTP の実環境設定が前提です。mail機能と Kindle / Kobo などの実機送信は、開発者の手元に端末が無いため十分な実地確認ができていません。動作確認や不具合報告、再現情報、修正提案に協力してもらえると助かります。
cargo build
cargo test
cargo checkこの 3 つで、通常のビルド、テスト、型検査を確認できます。