[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-80597":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":14,"forks30d":14,"starsTrendScore":18,"compositeScore":19,"rankGlobal":9,"rankLanguage":9,"license":9,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":20,"hasPages":20,"topics":22,"createdAt":9,"pushedAt":9,"updatedAt":23,"readmeContent":24,"aiSummary":25,"trendingCount":14,"starSnapshotCount":14,"syncStatus":26,"lastSyncTime":27,"discoverSource":28},80597,"MirrorNovel","Aerdelan\u002FMirrorNovel","Aerdelan","AI小说生成\u002F润色\u002F续写，内置番茄小说下载器（需有一个svip账号）导出txt格式，项目自带蒸馏功能，可蒸馏导入小说的整体框架、写作风格、精彩片段，并活用于之后生成的该类型小说",null,"JavaScript",150,10,7,0,13,72,97,57,3.12,false,"main",[],"2026-06-12 02:04:04","﻿\u003Cp align=\"center\">\r\n  \u003Ca href=\"#readme-zh\">🇨🇳 中文\u003C\u002Fa> · \u003Ca href=\"#readme-en\">🇬🇧 English\u003C\u002Fa>\r\n\u003C\u002Fp>\r\n\r\n---\r\n\r\n\u003Ca id=\"readme-zh\">\u003C\u002Fa>\r\n\r\n# MirrorNovel (MirrorNovel)\r\n\r\n> 番茄小说下载、风格蒸馏、AI 续写与润色工具\r\n\r\n🌐 **在线体验**: [http:\u002F\u002F49.51.51.253:5173\u002F](http:\u002F\u002F49.51.51.253:5173\u002F)\r\n\r\n---\r\n\r\n## ⚠️ 免责声明\r\n\r\n**本项目的所有代码仅供学习和研究目的使用。**\r\n\r\n1. **仅限学习** — 本项目旨在帮助开发者学习 Node.js 爬虫技术、浏览器自动化、AI 文本生成等编程知识，**严禁用于任何商业用途或非法牟利行为**。\r\n2. **版权归属** — 番茄小说（fanqienovel.com）平台上的所有内容（包括但不限于小说文本、字体文件等）的版权均归其原始权利人所有。本项目不存储、不分发任何受版权保护的内容。\r\n3. **用户责任** — **用户对使用此程序引发的任何法律责任和风险负有全部责任。** 使用者应自行确保其使用行为符合所在地法律法规及第三方平台的服务条款。**项目作者和项目贡献者不对因使用本程序而导致的任何损失、损害或法律纠纷承担责任。**\r\n4. **法律咨询** — 在使用此程序之前，请确保您已理解并遵守相关法律法规以及网站的使用政策。如有任何疑问或担忧，请咨询法律顾问。\r\n5. **禁止商业化** — 严禁将本项目的代码或衍生产品用于任何形式的商业服务、付费平台、或任何可能侵犯原始平台权益的场景。\r\n6. **无保证** — 本项目按\"原样\"提供，不提供任何明示或暗示的保证，包括但不限于适销性、特定用途适用性和非侵权性。\r\n\r\n> 如果您是番茄小说的版权方或运营方，认为本项目侵犯了您的合法权益，请联系项目作者，我们将在核实后第一时间处理。\r\n\r\n---\r\n\r\n## 功能特性\r\n\r\n| 功能 | 说明 |\r\n|------|------|\r\n| 📥 **番茄小说下载** | 输入 Book ID 即可下载整本小说（支持锁定章节），自动处理 PUA 字体反爬 |\r\n| 🧪 **风格蒸馏** | 从番茄小说或上传的 TXT 中提取风格特征（节奏、用词、句式等），用于 AI 仿写 |\r\n| ✍️ **AI 续写\u002F生成** | 支持整本和单章模式，国产网文 + 日式轻小说双引擎 |\r\n| ✨ **文本润色** | 自定义润色方案，同步去 AI 味处理，流式输出实时预览 |\r\n| 🎯 **风格对齐** | 生成时自动匹配蒸馏库中的参考风格，使 AI 输出更贴合目标风格 |\r\n| 🌸 **轻小说生成** | 日式 ACGN 风格，支持萌属性、动画感描写，6 种轻小说类型 |\r\n| 🌐 **中英双语** | 界面支持中文\u002FEnglish 一键切换 |\r\n\r\n---\r\n\r\n## 快速启动\r\n\r\n### 前置要求\r\n\r\n- Node.js >= 18\r\n- MongoDB >= 6.0\r\n- Playwright Chromium（用于番茄小说下载）\r\n\r\n### 1. 克隆项目\r\n\r\n```bash\r\ngit clone git@github.com:Aerdelan\u002FMirrorNovel.git\r\ncd MirrorNovel\r\n```\r\n\r\n### 2. 安装依赖\r\n\r\n```bash\r\ncd server && npm install\r\ncd ..\u002Fclient && npm install\r\ncd ..\u002Fadmin && npm install\r\n```\r\n\r\n### 3. 配置环境\r\n\r\n```bash\r\ncd server\r\ncp .env.example .env\r\n```\r\n\r\n编辑 `server\u002F.env`，关键配置：\r\n\r\n```env\r\nMONGODB_URI=mongodb:\u002F\u002Flocalhost:27017\u002Fmirrornovel\r\nJWT_SECRET=your_random_jwt_secret_here\r\nJWT_EXPIRES_IN=7d\r\nADMIN_EMAIL=admin@example.com\r\nADMIN_PASSWORD=your_admin_password\r\nAI_API_BASE=https:\u002F\u002Fapi.siliconflow.cn\u002Fv1\r\nAI_API_KEY=your_api_key_here\r\nAI_MODEL=deepseek-ai\u002FDeepSeek-V4-Flash\r\n```\r\n\r\n> 管理员账号在服务启动时**自动创建**，默认 `admin@xiaoshuo.com` \u002F `admin888`，**首次部署后请修改默认密码**。\r\n\r\n### 4. 安装 Playwright Chromium\r\n\r\n```bash\r\ncd server\r\nnpx playwright install chromium\r\n```\r\n\r\n### 5. 启动服务\r\n\r\n```bash\r\n# 终端 1 - 后端 API（端口 3001）\r\ncd server && npm run dev\r\n\r\n# 终端 2 - 前端页面（端口 5173）\r\ncd client && npm run dev\r\n\r\n# 终端 3 - 管理后台（端口 5174）\r\ncd admin && npm run dev\r\n```\r\n\r\n### 6. 访问服务\r\n\r\n```bash\r\n# 前台（用户端）\r\nhttp:\u002F\u002Flocalhost:5173\r\n\r\n# 管理后台\r\nhttp:\u002F\u002Flocalhost:5174\r\n\r\n# 生产环境 HTTPS（需要自签名证书，第一次访问需点\"高级→继续前往\"）\r\nhttps:\u002F\u002F49.51.51.253:3459\r\n```\r\n\r\n### 7. 配置番茄 Cookie\r\n\r\n1. Chrome 打开 `https:\u002F\u002Ffanqienovel.com` 并登录\r\n2. 按 F12 → Application → Cookies → `fanqienovel.com`\r\n3. 右键任意 cookie → \"显示以 URL 编码\" → 全选复制\r\n4. 打开 MirrorNovel 前端 → 蒸馏 → Cookie 设置 → 粘贴保存\r\n\r\n---\r\n\r\n## 项目结构\r\n\r\n```\r\nMirrorNovel\u002F\r\n├── server\u002F                 # 后端服务（Express + MongoDB）\r\n│   ├── config\u002F             # 配置（小说类型、去AI味规则等）\r\n│   ├── routes\u002F             # API 路由\r\n│   ├── services\u002F           # 核心服务（AI、番茄抓取、字体解码）\r\n│   ├── models\u002F             # Mongoose 数据模型\r\n│   └── middleware\u002F         # 鉴权中间件\r\n├── client\u002F                 # 前端（Vue 3 + Pinia + Vite）\r\n│   └── src\u002F\r\n│       ├── views\u002F          # 页面组件\r\n│       ├── stores\u002F         # 状态管理\r\n│       ├── composables\u002F    # 组合式函数（i18n 等）\r\n│       ├── locales\u002F        # 国际化翻译（中\u002F英）\r\n│       └── components\u002F     # 公共组件\r\n├── admin\u002F                  # 管理后台（Vue 3）\r\n└── test_fanqie\u002F            # 测试脚本\r\n```\r\n\r\n---\r\n\r\n## ⚡ 常见问题\r\n\r\n### Ollama 本机连接失败\r\n\r\n如果页面通过 **HTTP** 访问（如 `http:\u002F\u002F49.51.51.253:5173`），Chrome\u002FEdge 会拦截对 `localhost:11434` 的请求，报 CORS 错误。\r\n\r\n**解决办法（三选一）：**\r\n\r\n1. **使用 HTTPS 访问**（推荐）：`https:\u002F\u002F49.51.51.253:3459`，首次访问点\"高级→继续前往\"即可\r\n2. **修改浏览器 flags**：`chrome:\u002F\u002Fflags\u002F#block-insecure-private-network-requests` 改为 Disabled\r\n3. **换 Firefox 浏览器**：没有这个限制\r\n\r\n---\r\n\r\n## 番茄小说下载原理\r\n\r\nMirrorNovel 使用 **Playwright 无头浏览器代理** 来绕过番茄小说的反爬机制：\r\n\r\n1. **a_bogus 签名** — 通过浏览器原生 `fetch` 自动生成，无需逆向算法\r\n2. **PUA 字体编码** — 从页面动态下载字体文件，用 `fontkit` 构建映射后解码\r\n3. **锁定章节** — 通过官方 API (`\u002Fapi\u002Freader\u002Ffull`) 获取完整内容，配合 SVIP Cookie\r\n\r\n### 工作流程\r\n\r\n```\r\n用户输入 Book ID\r\n    → 服务器启动 Playwright 无头浏览器\r\n    → 浏览器加载 fanqienovel.com（初始化 a_bogus JS）\r\n    → 调用 API 获取章节列表 + 完整内容\r\n    → 提取字体文件 → fontkit 构建 PUA 映射\r\n    → 解码为正常中文 → 输出 TXT \u002F 风格蒸馏\r\n```\r\n\r\n---\r\n\r\n## 技术栈\r\n\r\n| 层 | 技术 |\r\n|----|------|\r\n| **前端** | Vue 3, Pinia, Vite |\r\n| **后端** | Express, Mongoose |\r\n| **数据库** | MongoDB |\r\n| **AI** | OpenAI 兼容 API \u002F Ollama |\r\n| **浏览器自动化** | Playwright |\r\n| **字体解析** | fontkit |\r\n\r\n---\r\n\r\n## 参考的开源项目\r\n\r\n本项目的开发过程中参考或使用了以下开源项目：\r\n\r\n| 项目 | 说明 | 链接 |\r\n|------|------|------|\r\n| **fanqienovel-downloader** | 番茄小说下载器（Python），提供了下载思路和 API 分析参考 | [ying-ck\u002Ffanqienovel-downloader](https:\u002F\u002Fgithub.com\u002Fying-ck\u002Ffanqienovel-downloader) |\r\n| **fanqienovel-decryptor** | 番茄小说字体解密，`font_mapping.json` 字符映射来源于此 | [romcere\u002Ffanqienovel-decryptor](https:\u002F\u002Fgithub.com\u002Fromcere\u002Ffanqienovel-decryptor) |\r\n| **Playwright** | 微软出品的浏览器自动化框架，用于处理 a_bogus 签名 | [microsoft\u002Fplaywright](https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fplaywright) |\r\n| **fontkit** | 高级字体引擎，用于解析 woff2 字体文件 | [foliojs\u002Ffontkit](https:\u002F\u002Fgithub.com\u002Ffoliojs\u002Ffontkit) |\r\n\r\n---\r\n\r\n## License\r\n\r\n**AGPL-3.0** — 使用本项目的源代码时，请遵守 [AGPL-3.0 协议](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fagpl-3.0.html) 的要求。\r\n\r\n---\r\n\r\n\u003Ca id=\"readme-en\">\u003C\u002Fa>\r\n\r\n# MirrorNovel\r\n\r\n> Fanqie Novel download, style distillation, AI continuation & polishing tool\r\n\r\n🌐 **Online Demo**: [http:\u002F\u002F49.51.51.253:5173\u002F](http:\u002F\u002F49.51.51.253:5173\u002F)\r\n\r\n---\r\n\r\n## ⚠️ Disclaimer\r\n\r\n**All code in this project is provided for educational and research purposes only.**\r\n\r\n1. **Educational Purpose Only** — This project is intended to help developers learn web scraping techniques, browser automation, AI text generation, and related programming knowledge. **Commercial use or any profit-making activities are strictly prohibited.**\r\n2. **Copyright Ownership** — All content on the fanqienovel.com platform (including but not limited to novel texts, font files, etc.) belongs to its respective rights holders. This project does not store or distribute any copyrighted content.\r\n3. **User Responsibility** — **Users bear full responsibility for any legal consequences and risks arising from the use of this program.** Users must ensure their usage complies with applicable laws, regulations, and third-party platform terms of service. **The project authors and contributors shall not be held liable for any loss, damage, or legal disputes resulting from the use of this program.**\r\n4. **Legal Consultation** — Before using this program, please ensure you understand and comply with relevant laws, regulations, and website usage policies. Consult a legal professional if you have any questions or concerns.\r\n5. **No Commercial Use** — The code or derivative works of this project must not be used in any form of commercial service, paid platform, or any scenario that may infringe upon the rights of the original platform.\r\n6. **No Warranty** — This project is provided \"as is\" without any express or implied warranties, including but not limited to merchantability, fitness for a particular purpose, and non-infringement.\r\n\r\n---\r\n\r\n## Features\r\n\r\n| Feature | Description |\r\n|---------|-------------|\r\n| 📥 **Fanqie Novel Download** | Download entire novels with locked chapter support, auto PUA font decoding |\r\n| 🧪 **Style Distillation** | Extract writing style (rhythm, vocabulary, sentence patterns) for AI imitation |\r\n| ✍️ **AI Generation & Continuation** | Full-novel & single-chapter modes, Chinese web novel + Japanese light novel engines |\r\n| ✨ **Text Polishing** | Custom polish schemes with de-AI processing, streaming preview |\r\n| 🎯 **Style Reference** | Auto-match distilled styles from library for consistent AI output |\r\n| 🌸 **Light Novel** | Japanese ACGN-style generation with moe traits, anime descriptions, 6 genres |\r\n| 🌐 **Bilingual UI** | Toggle between Chinese and English with one click |\r\n\r\n---\r\n\r\n## Quick Start\r\n\r\n### Prerequisites\r\n\r\n- Node.js >= 18\r\n- MongoDB >= 6.0\r\n- Playwright Chromium (for Fanqie Novel download)\r\n\r\n### 1. Clone\r\n\r\n```bash\r\ngit clone git@github.com:Aerdelan\u002FMirrorNovel.git\r\ncd MirrorNovel\r\n```\r\n\r\n### 2. Install Dependencies\r\n\r\n```bash\r\ncd server && npm install\r\ncd ..\u002Fclient && npm install\r\ncd ..\u002Fadmin && npm install\r\n```\r\n\r\n### 3. Configure Environment\r\n\r\n```bash\r\ncd server\r\ncp .env.example .env\r\n```\r\n\r\nEdit `server\u002F.env`:\r\n\r\n```env\r\nMONGODB_URI=mongodb:\u002F\u002Flocalhost:27017\u002Fmirrornovel\r\nJWT_SECRET=your_random_jwt_secret_here\r\nJWT_EXPIRES_IN=7d\r\nADMIN_EMAIL=admin@example.com\r\nADMIN_PASSWORD=your_admin_password\r\nAI_API_BASE=https:\u002F\u002Fapi.siliconflow.cn\u002Fv1\r\nAI_API_KEY=your_api_key_here\r\nAI_MODEL=deepseek-ai\u002FDeepSeek-V4-Flash\r\n```\r\n\r\n> Admin account is **auto-created** on startup. Default: `admin@xiaoshuo.com` \u002F `admin888`. **Change it after first deploy.**\r\n\r\n### 4. Install Playwright Chromium\r\n\r\n```bash\r\ncd server\r\nnpx playwright install chromium\r\n```\r\n\r\n### 5. Start Services\r\n\r\n```bash\r\n# Terminal 1 - Backend API (port 3001)\r\ncd server && npm run dev\r\n\r\n# Terminal 2 - Frontend (port 5173)\r\ncd client && npm run dev\r\n\r\n# Terminal 3 - Admin Panel (port 5174)\r\ncd admin && npm run dev\r\n```\r\n\r\n---\r\n\r\n## Project Structure\r\n\r\n```\r\nMirrorNovel\u002F\r\n├── server\u002F                 # Backend (Express + MongoDB)\r\n│   ├── config\u002F             # Configuration\r\n│   ├── routes\u002F             # API routes\r\n│   ├── services\u002F           # Core services\r\n│   ├── models\u002F             # Data models\r\n│   └── middleware\u002F         # Auth middleware\r\n├── client\u002F                 # Frontend (Vue 3 + Pinia + Vite)\r\n│   └── src\u002F\r\n│       ├── views\u002F          # Page components\r\n│       ├── stores\u002F         # State management\r\n│       ├── composables\u002F    # Composables (i18n, etc.)\r\n│       ├── locales\u002F        # Translations (zh\u002Fen)\r\n│       └── components\u002F     # Shared components\r\n├── admin\u002F                  # Admin panel\r\n└── test_fanqie\u002F            # Test scripts\r\n```\r\n\r\n---\r\n\r\n## ⚡ Troubleshooting\r\n\r\n### Ollama local connection fails\r\n\r\nIf the page is accessed via **HTTP** (e.g. `http:\u002F\u002F49.51.51.253:5173`), Chrome\u002FEdge blocks requests to `localhost:11434` with a CORS error.\r\n\r\n**Solutions:**\r\n\r\n1. **Use HTTPS**: `https:\u002F\u002F49.51.51.253:3459` (click \"Advanced → Proceed\" on first visit)\r\n2. **Disable Chrome flag**: Go to `chrome:\u002F\u002Fflags\u002F#block-insecure-private-network-requests` and set to **Disabled**\r\n3. **Switch to Firefox**: No such restriction\r\n\r\n---\r\n\r\n## Tech Stack\r\n\r\n| Layer | Technology |\r\n|-------|-----------|\r\n| **Frontend** | Vue 3, Pinia, Vite |\r\n| **Backend** | Express, Mongoose |\r\n| **Database** | MongoDB |\r\n| **AI** | OpenAI-compatible API \u002F Ollama |\r\n| **Browser** | Playwright |\r\n| **Font** | fontkit |\r\n\r\n---\r\n\r\n## License\r\n\r\n**AGPL-3.0** — See [LICENSE](https:\u002F\u002Fwww.gnu.org\u002Flicenses\u002Fagpl-3.0.html) for details.\r\n","MirrorNovel 是一个集成了小说下载、风格蒸馏、AI 续写与润色功能的工具。其核心功能包括从番茄小说平台下载小说并导出为txt格式，通过内置的风格蒸馏技术提取小说的整体框架、写作风格和精彩片段，并利用这些信息生成或润色新的小说内容。此外，它还支持多种类型的轻小说创作，以及中英双语界面切换。项目采用JavaScript编写，适合对Node.js爬虫技术、浏览器自动化及AI文本生成感兴趣的开发者学习使用，同时也适用于需要辅助创作或润色小说内容的作者。请注意，该项目仅供学习研究之用，严禁用于商业目的。",2,"2026-06-11 04:01:21","CREATED_QUERY"]