{"id":29789789,"url":"https://github.com/freeok/so-novel","last_synced_at":"2026-04-05T04:07:29.964Z","repository":{"id":180429688,"uuid":"495476220","full_name":"freeok/so-novel","owner":"freeok","description":"小说下载｜网文下载 | 网络小说","archived":false,"fork":false,"pushed_at":"2026-03-17T20:37:27.000Z","size":4262,"stargazers_count":6365,"open_issues_count":16,"forks_count":504,"subscribers_count":18,"default_branch":"main","last_synced_at":"2026-03-18T09:01:47.350Z","etag":null,"topics":["cli","content-export","document-parser","ebook","novel","offline-reader","tui"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/freeok.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2022-05-23T15:49:36.000Z","updated_at":"2026-03-18T08:11:01.000Z","dependencies_parsed_at":"2025-04-10T11:23:32.766Z","dependency_job_id":"d490b13c-284e-4e8c-9e2e-44e3fbc2e1c6","html_url":"https://github.com/freeok/so-novel","commit_stats":null,"previous_names":["pcdd-group/so-novel","freeok/so-novel"],"tags_count":54,"template":false,"template_full_name":null,"purl":"pkg:github/freeok/so-novel","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freeok%2Fso-novel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freeok%2Fso-novel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freeok%2Fso-novel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freeok%2Fso-novel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/freeok","download_url":"https://codeload.github.com/freeok/so-novel/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/freeok%2Fso-novel/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31423903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T02:22:46.605Z","status":"ssl_error","status_checked_at":"2026-04-05T02:22:33.263Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cli","content-export","document-parser","ebook","novel","offline-reader","tui"],"created_at":"2025-07-27T23:02:17.556Z","updated_at":"2026-04-05T04:07:29.959Z","avatar_url":"https://github.com/freeok.png","language":"Java","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"assets/logo.png\" style=\"width: 128px;\"/\u003e\n  \u003ch1 align=\"center\"\u003eSo Novel\u003c/h1\u003e\n  \u003ch4 align=\"center\"\u003e\u003c/h4\u003e\n\u003c/div\u003e\n\n\u003cdiv align=\"center\"\u003e\n\n[![zread](https://img.shields.io/badge/Ask_Zread-_.svg?style=flat\u0026color=00b0aa\u0026labelColor=000000\u0026logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxNiAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTTQuOTYxNTYgMS42MDAxSDIuMjQxNTZDMS44ODgxIDEuNjAwMSAxLjYwMTU2IDEuODg2NjQgMS42MDE1NiAyLjI0MDFWNC45NjAxQzEuNjAxNTYgNS4zMTM1NiAxLjg4ODEgNS42MDAxIDIuMjQxNTYgNS42MDAxSDQuOTYxNTZDNS4zMTUwMiA1LjYwMDEgNS42MDE1NiA1LjMxMzU2IDUuNjAxNTYgNC45NjAxVjIuMjQwMUM1LjYwMTU2IDEuODg2NjQgNS4zMTUwMiAxLjYwMDEgNC45NjE1NiAxLjYwMDFaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00Ljk2MTU2IDEwLjM5OTlIMi4yNDE1NkMxLjg4ODEgMTAuMzk5OSAxLjYwMTU2IDEwLjY4NjQgMS42MDE1NiAxMS4wMzk5VjEzLjc1OTlDMS42MDE1NiAxNC4xMTM0IDEuODg4MSAxNC4zOTk5IDIuMjQxNTYgMTQuMzk5OUg0Ljk2MTU2QzUuMzE1MDIgMTQuMzk5OSA1LjYwMTU2IDE0LjExMzQgNS42MDE1NiAxMy43NTk5VjExLjAzOTlDNS42MDE1NiAxMC42ODY0IDUuMzE1MDIgMTAuMzk5OSA0Ljk2MTU2IDEwLjM5OTlaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik0xMy43NTg0IDEuNjAwMUgxMS4wMzg0QzEwLjY4NSAxLjYwMDEgMTAuMzk4NCAxLjg4NjY0IDEwLjM5ODQgMi4yNDAxVjQuOTYwMUMxMC4zOTg0IDUuMzEzNTYgMTAuNjg1IDUuNjAwMSAxMS4wMzg0IDUuNjAwMUgxMy43NTg0QzE0LjExMTkgNS42MDAxIDE0LjM5ODQgNS4zMTM1NiAxNC4zOTg0IDQuOTYwMVYyLjI0MDFDMTQuMzk4NCAxLjg4NjY0IDE0LjExMTkgMS42MDAxIDEzLjc1ODQgMS42MDAxWiIgZmlsbD0iI2ZmZiIvPgo8cGF0aCBkPSJNNCAxMkwxMiA0TDQgMTJaIiBmaWxsPSIjZmZmIi8%2BCjxwYXRoIGQ9Ik00IDEyTDEyIDQiIHN0cm9rZT0iI2ZmZiIgc3Ryb2tlLXdpZHRoPSIxLjUiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIvPgo8L3N2Zz4K\u0026logoColor=ffffff)](https://zread.ai/freeok/so-novel)\n[![GitHub License](https://img.shields.io/github/license/freeok/so-novel?style=flat-square)](https://github.com/freeok/so-novel/blob/main/LICENSE)\n[![Latest Release](https://img.shields.io/github/v/release/freeok/so-novel)](https://github.com/freeok/so-novel/releases/latest)\n[![GitHub Downloads](https://img.shields.io/github/downloads/freeok/so-novel/total.svg?style=flat-square)](https://github.com/freeok/so-novel/releases/latest)\n\n\u003c/div\u003e\n\n## 概述\n\n**So Novel** 是一款通用的网页内容处理与导出工具，它致力于帮助用户高效地从网页中提取结构化信息，并将其灵活导出为\nEPUB、TXT、PDF 等多种标准电子文档格式。适用于学习采集、格式转换、电子书制作等场景。\n\n## 预览\n\n\u003cdetails\u003e\n  \u003csummary\u003e点击查看图片\u003c/summary\u003e\n\n### TUI 预览 (Text-based User Interface)\n\n![preview-tui.png](assets/preview-tui.png)\n\n### WebUI 预览 (网页版)\n\n![preview-webui.png](assets/preview-webui.png)\n\n### CLI 预览 (Command Line Interface)\n\n![preview-cli.png](assets/preview-cli.png)\n\n\u003c/details\u003e\n\n## 使用\n\n### 📦 普通安装\n\n1. 下载最新版 https://github.com/freeok/so-novel/releases\n2. 根据 [readme.txt](bundle%2Freadme.txt) 使用\n\n### 🍨 Scoop\n\n```bash\nscoop bucket add freeok https://github.com/freeok/scoop-bucket\nscoop install freeok/so-novel\n```\n\n### 🍺 Homebrew\n\n```bash\nbrew tap ownia/homebrew-ownia\nbrew install so-novel\n```\n\n### 🐧 Linux\n\n```bash\nbash \u003c(curl -sSL https://raw.githubusercontent.com/freeok/so-novel/main/bin/linux-install.sh)\n```\n\n### 🐳 Docker\n\n**方式 1：脚本一键安装**\n\n```bash\ncurl -sSL https://raw.githubusercontent.com/freeok/so-novel/main/bin/docker-install.sh | bash\n```\n\n**方式 2：Docker Compose**\n\n```yaml\nservices:\n  sonovel:\n    image: ghcr.io/freeok/sonovel:latest\n    container_name: sonovel\n    ports:\n      - \"7765:7765\"\n    environment:\n      JAVA_OPTS: \"-Dmode=web\"\n    volumes:\n      - sonovel_data:/sonovel\n    restart: unless-stopped\n\nvolumes:\n  sonovel_data:\n```\n\n**方式 3：直接运行容器**\n\n```bash\n# 如需挂载，请提前准备好 config.ini 文件、rules 目录\ndocker run -d \\\n  --name sonovel \\\n  -v /sonovel/config.ini:/sonovel/config.ini \\\n  -v /sonovel/rules:/sonovel/rules \\\n  -v /sonovel/downloads:/sonovel/downloads \\\n  -p 7765:7765 \\\n  -e JAVA_OPTS='-Dmode=web' \\\n  ghcr.io/freeok/sonovel:latest\n```\n\n**方式 4：从源码构建镜像**\n\n```bash\n# 确保已安装 git、maven\n# arch: [x64|arm64]\n\n# 构建项目\ngit clone https://github.com/freeok/so-novel.git \u0026\u0026 cd so-novel\nsh bin/release-linux.sh [arch]\n\n# 构建 Docker 镜像\ncp -r target/sonovel-linux_[arch]/{app.jar,config.ini,rules} .\ndocker build -t sonovel .\n```\n\n\u003e [!TIP]\n\u003e\n\u003e 为获得最佳阅读体验，建议使用以下电子书阅读器：\n\u003e\n\u003e **桌面端**\n\u003e\n\u003e - [Readest](https://readest.com/)\n\u003e - [Koodo Reader](https://www.koodoreader.com/zh)\n\u003e - [Calibre](https://calibre-ebook.com/)\n\u003e - [Neat Reader（网页版）](https://www.neat-reader.cn/webapp)\n\u003e\n\u003e **移动端**\n\u003e\n\u003e - [Readest](https://readest.com/)\n\u003e - [Apple Books](https://www.apple.com/apple-books/)\n\u003e - [Moon+ Reader（静读天下）](https://moondownload.com/chinese.html)\n\u003e - [Kindle](https://apps.apple.com/us/app/amazon-kindle/id302584613)\n\u003e\n\u003e 如需转换为其它电子书格式，可使用：\n\u003e\n\u003e - [FreeConvert](https://www.freeconvert.com/zh)\n\u003e - [Calibre](https://calibre-ebook.com/zh_CN)\n\u003e \n\u003e 修复 WPS、掌阅等软件无法打开 so-novel 下载的 EPUB：https://github.com/freeok/so-novel/discussions/199\n\n## 自定义 JVM 系统属性\n\n| 参数            | 说明                     | 默认值          |\n|---------------|------------------------|--------------|\n| -Dconfig.file | 配置文件路径                 | ./config.ini |\n| -Dmode        | 启动模式，可选值：tui\\|cli\\|web | tui          |\n\n用法\n\n\u003e [!NOTE]\n\u003e\n\u003e Windows 修改 [sonovel.l4j.ini](bundle/sonovel.l4j.ini)\n\u003e\n\u003e Linux 修改  [run-linux.sh](bundle/run-linux.sh)\n\u003e\n\u003e macOS 修改  [run-macos.sh](bundle/run-macos.sh)\n\n## 使用本地 JDK / JRE 启动\n\n如果你不想使用内置 JRE（runtime 目录），可以通过本地 JDK / JRE 启动程序\n\nWindows 使用脚本 start-custom-jre.cmd：\n\n```cmd\nREM --------------------------------------------------\nREM 高级用户使用自定义 JRE 启动程序\nREM 将 \"your_path\\java.exe\" 替换为你的 JRE 路径，例如：\nREM \"C:\\Java\\jdk-21\\bin\\java.exe\"\nREM --------------------------------------------------\n@echo off\nyour_path\\java.exe ^\n  -XX:+UseZGC ^\n  -XX:+ZGenerational ^\n  -Dconfig.file=config.ini ^\n  -Dmode=tui ^\n  -Dfile.encoding=GBK|Big5 ^\n  -jar app.jar\n```\n\nLinux / macOS：[run-linux.sh](bundle/run-linux.sh) / [run-macos.sh](bundle/run-macos.sh) 修改 java 路径\n\n## 常见问题\n\nhttps://github.com/freeok/so-novel/issues?q=label%3A%22usage%20question%22\n\n## 讨论\n\nhttps://github.com/freeok/so-novel/discussions?discussions_q=\n\n## 支持 \u0026 赞助\n\n如果觉得有所帮助，欢迎扫码赞助☕、点击项目主页顶部的⭐Star 按钮支持！\n\n🚀这将是我们持续更新的动力源泉！同时，你也能第一时间获取到最新的更新动态。💡❤️\n\n| 支付宝赞助                                                           | 微信赞助                                                           |\n|-----------------------------------------------------------------|----------------------------------------------------------------|\n| \u003cimg src=\"assets/donation-alipay.png\" alt=\"支付宝收款码\" width=\"197\"\u003e | \u003cimg src=\"assets/donation-wechat.jpg\" alt=\"微信赞赏码\" width=\"197\"\u003e |\n\n[项目赞助者列表](./SPONSORS.md)\n\n## 免责声明\n\n在使用本工具前，请务必仔细阅读我们的[法律免责声明](bundle/DISCLAIMER.md)。使用本工具即表示您已阅读、理解并同意遵守所有条款。\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=freeok/so-novel\u0026type=Date)](https://star-history.com/#freeok/so-novel\u0026Date)","funding_links":[],"categories":["Java"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreeok%2Fso-novel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffreeok%2Fso-novel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffreeok%2Fso-novel/lists"}