MCPcopy
hub / github.com/freeok/so-novel

github.com/freeok/so-novel @v1.11.0 sqlite

repository ↗ · DeepWiki ↗ · release v1.11.0 ↗
315 symbols 1,119 edges 82 files 124 documented · 39%
README


So Novel

zread GitHub License Latest Release GitHub Downloads

概述

So Novel 是一款通用的网页内容处理与导出工具,它致力于帮助用户高效地从网页中提取结构化信息,并将其灵活导出为 EPUB、TXT、PDF 等多种标准电子文档格式。适用于学习采集、格式转换、电子书制作等场景。

预览

点击查看图片

TUI 预览 (Text-based User Interface)

preview-tui.png

WebUI 预览 (网页版)

preview-webui.jpg

CLI 预览 (Command Line Interface)

preview-cli.png

安装

📦 手动下载压缩包

https://github.com/freeok/so-novel/releases

🪟 Windows

1. PowerShell

# powershell
irm https://raw.githubusercontent.com/freeok/so-novel/main/bin/windows-install.ps1 | iex

2. CMD (命令提示符)

powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/freeok/so-novel/main/bin/windows-install.ps1 | iex"

🐧 Linux

bash <(curl -sSL https://raw.githubusercontent.com/freeok/so-novel/main/bin/linux-install.sh)

🍺 Homebrew

brew tap ownia/homebrew-ownia
brew install so-novel

🍨 Scoop

scoop bucket add freeok https://github.com/freeok/scoop-bucket
scoop install freeok/so-novel

🐳 Docker

方式 1: 脚本一键安装

curl -sSL https://raw.githubusercontent.com/freeok/so-novel/main/bin/docker-install.sh | bash

方式 2: Docker Compose (NAS 首选)

services:
  sonovel:
    image: ghcr.io/freeok/sonovel:latest
    container_name: sonovel
    ports:
      - "7765:7765"
    environment:
      JAVA_OPTS: "-Dmode=web"
    volumes:
      - sonovel_data:/sonovel
    restart: unless-stopped

volumes:
  sonovel_data:

方式 3: Docker Run

# 如需挂载,请提前准备好 config.ini 文件、rules 目录
docker run -d \
  --name sonovel \
  -v /sonovel/config.ini:/sonovel/config.ini \
  -v /sonovel/rules:/sonovel/rules \
  -v /sonovel/downloads:/sonovel/downloads \
  -p 7765:7765 \
  -e JAVA_OPTS='-Dmode=web' \
  ghcr.io/freeok/sonovel:latest

从源码构建 Docker 镜像

# 确保已安装 git、jdk 21、maven
sudo apt update
sudo apt install -y git
sudo apt install -y openjdk-21-jdk
sudo apt install -y maven

# 验证安装
git -v
javac -version
mvn -v

# 构建项目
git clone https://github.com/freeok/so-novel.git && cd so-novel
# arch: [x64|arm64]
sh bin/release-linux.sh [arch]

# 构建 Docker 镜像
cp -r target/sonovel-linux_[arch]/{app.jar,config.ini,rules} .
docker build -t sonovel .

[!TIP]

为获得最佳阅读体验,建议使用以下电子书阅读器:

桌面端

移动端

如需转换为其它电子书格式,可使用:

修复 WPS、掌阅等软件无法打开 so-novel 下载的 EPUB:https://github.com/freeok/so-novel/discussions/199

自定义 JVM 系统属性

参数 说明 默认值
-Dmode 启动模式,可选值:tui|cli|web tui
-Dconfig.file 配置文件路径 ./config.ini

用法

[!NOTE]

Windows 修改 sonovel.l4j.ini

Linux 修改 run-linux.sh

macOS 修改 run-macos.sh

使用本地 JDK / JRE 启动

如果你不想使用内置 JRE(runtime 目录),可以通过本地 JDK / JRE 启动程序

Windows 使用脚本 start-custom-jre.cmd:

REM --------------------------------------------------
REM 高级用户使用自定义 JRE 启动程序
REM 将 "your_path\java.exe" 替换为你的 JRE 路径,例如:
REM "C:\Java\jdk-21\bin\java.exe"
REM --------------------------------------------------
@echo off
your_path\java.exe ^
  -XX:+UseZGC ^
  -XX:+ZGenerational ^
  -Dconfig.file=config.ini ^
  -Dmode=tui ^
  -Dfile.encoding=GBK|Big5 ^
  -jar app.jar

Linux / macOS:run-linux.sh / run-macos.sh 修改 java 路径

常见问题

https://github.com/freeok/so-novel/issues?q=label%3A%22usage%20question%22

讨论

https://github.com/freeok/so-novel/discussions?discussions_q=

支持 & 赞助

如果觉得有所帮助,欢迎扫码赞助☕、点击项目主页顶部的⭐Star 按钮支持!

🚀这将是我们持续更新的动力源泉!同时,你也能第一时间获取到最新的更新动态。💡❤️

支付宝赞助 微信赞助
支付宝收款码 微信赞赏码

项目赞助者列表

免责声明

在使用本工具前,请务必仔细阅读我们的法律免责声明。使用本工具即表示您已阅读、理解并同意遵守所有条款。

Star History

Star History Chart

Extension points exported contracts — how you extend this code

PostProcessingHandler (Interface)
@author pcdd Created at 2024/12/4 [4 implementers]
src/main/java/com/pcdd/sonovel/handle/PostProcessingHandler.java

Core symbols most depended-on inside this repo

get
called by 35
src/main/java/com/pcdd/sonovel/util/EnvUtils.java
format
called by 30
src/main/java/com/pcdd/sonovel/core/ChapterFormatter.java
error
called by 26
src/main/java/com/pcdd/sonovel/util/LogUtils.java
add
called by 25
src/main/java/com/pcdd/sonovel/util/TocList.java
selectAndInvokeJs
called by 24
src/main/java/com/pcdd/sonovel/util/JsoupUtils.java
build
called by 21
src/main/java/com/pcdd/sonovel/core/ChapterFilter.java
parse
called by 20
src/main/java/com/pcdd/sonovel/parse/TocParser.java
execute
called by 20
src/main/java/com/pcdd/sonovel/action/DonateAction.java

Shape

Method 221
Class 81
Function 10
Enum 2
Interface 1

Languages

Java97%
TypeScript3%

Modules by API surface

src/test/java/com/pcdd/sonovel/BookSourceCrawlTest.java11 symbols
src/main/java/com/pcdd/sonovel/util/SourceUtils.java11 symbols
src/main/java/com/pcdd/sonovel/util/LogUtils.java11 symbols
src/main/java/com/pcdd/sonovel/parse/SearchParser.java10 symbols
src/main/java/com/pcdd/sonovel/parse/ChapterParser.java10 symbols
src/main/java/com/pcdd/sonovel/core/ChapterFilter.java10 symbols
src/main/java/com/pcdd/sonovel/util/JsoupUtils.java9 symbols
src/main/resources/static/js/api.js8 symbols
src/main/java/com/pcdd/sonovel/parse/TocParser.java8 symbols
src/main/java/com/pcdd/sonovel/action/CheckUpdateAction.java8 symbols
src/test/java/com/pcdd/sonovel/BookSourceQualityTest.java7 symbols
src/main/java/com/pcdd/sonovel/web/servlet/DownloadProgressSseServlet.java7 symbols

Dependencies from manifests, versioned

cn.hutool:hutool-all5.8.46 · 1×
com.caoccao.javet:javet
com.caoccao.javet:javet-v8-linux-arm64
com.caoccao.javet:javet-v8-linux-x86_64
com.caoccao.javet:javet-v8-macos-arm64
com.caoccao.javet:javet-v8-macos-x86_64
com.caoccao.javet:javet-v8-windows-x86_64
com.hankcs:hanlpportable-1.8.6 · 1×
com.squareup.okhttp3:okhttp-jvm5.3.2 · 1×
io.documentnode:epub4j-core4.2.3 · 1×
io.github.openhtmltopdf:openhtmltopdf-pdfbox1.1.37 · 1×

For agents

$ claude mcp add so-novel \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact