# WebNovel Assistant
**[English](#english)** | **中文**
---
[](https://github.com/HatanoChihiro/obsidian-webnovel-assistant/releases)
[](LICENSE)
一个功能强大的 Obsidian 插件,专为中文网络小说作者打造,提供创作主页、字数统计、写作目标追踪、伏笔管理、时间线系统、OBS 直播叠加层等丰富功能。
## 📖 文档
- **[用户使用指南](USER_GUIDE.md)** - 完整的功能说明和使用教程
- **[OBS 叠加层 CSS 指南](OBS_OVERLAY_CSS_GUIDE.md)** - 自定义 OBS 样式
- **[更新日志](CHANGELOG.md)** - 版本更新记录
## ✨ 核心功能
### 🏠 创作主页
- **全宽仪表盘**: 2行×2列网格布局,全宽填满编辑器
- **动态欢迎语**: 根据时间段自动变化,显示总字数与今日新增
- **作品总览**: 连载中(含榜单追踪)、存稿中、已暂停、已完结一目了然
- **数据面板**: 效率总览、365热力图、近30日趋势
- **一键新建**: 右侧新建作品按钮,弹窗填写元数据后自动创建
### 🌑 沉浸写作模式
- **全屏专注**: 隐藏所有干扰元素,提供沉浸式创作环境
- **动态仪表盘**: 实时显示小说标题、计时器、字数统计及专注度分析
- **辅助面板**: 快速唤出章节列表、伏笔追踪、时间线与多功能悬浮便签
- **卡片式布局**: 现代化的辅助面板设计,支持自定义位置与大小
### 📊 字数统计与目标追踪
- 实时统计字数,适配中文创作平台计算规则
- 章节目标、今日目标、榜单目标,进度可视化
- 写作状态面板显示当前作品信息(目录名、总字数)
- **严格章节模式**: 字数统计、进度条及提醒仅在符合规则的章节中生效,写大纲不计入进度
- **字数实时提醒**: 在编辑器左侧行号区域实时显示累计字数提醒,支持自定义间隔
- **高稳定性架构**: 采用编辑器事件与文件系统双重校验,彻底解决字数统计跳变问题
- 文件浏览器显示文件夹字数(高性能缓存,支持万级文件秒开)
### ⏱️ 专注时间追踪
- 自动区分专注时间与摸鱼时间
- **写作数据追踪**: 365热力图、柱状图+虚线趋势曲线、效率总览卡片、累计字数统计
- 历史统计图表(日/周/月/年),支持横向滚动
- Worker 线程处理,不影响编辑性能
### 📝 创作辅助工具
- **悬浮便签**: 多端同步、自动保存、独立存储、支持 Markdown 渲染
- **选项卡式设置**: 模块化设置页面,分类更清晰,操作更便捷
- **伏笔管理**: 标注、追踪、多章节回收
- **时间线系统**: 事件记录、多章节关联、类型分类
- **榜单追踪**: 追踪签约平台的榜单任务,自动计算字数增量,到期自动关闭,起始字数可手动修改
- **智能章节排序**:自动识别章节编号排序,支持"大纲"、"番外"等具名章节
- **规则排序优化**:设置页面支持通过 ▲/▼ 按钮自由调整排序规则优先级
- **高级搜索**:支持当前书籍/全局/自定义范围搜索,树形目录多选
- **合并章节**:一键合并文件夹内所有章节
### 🎥 直播功能
- OBS 叠加层:实时显示写作数据
- 自定义样式、透明度、显示内容
- 零延迟、零磁盘消耗
### 📱 移动端与跨平台支持
- 浮动字数统计窗口(移动端)
- 触摸优化,防误触
- **复制本文档**: 一键复制当前章节,并在首行自动添加文档标题,完美适配社交媒体与发布平台分享
- 跨设备字数统计同步优化
## 📥 安装
### 从 Obsidian 社区插件市场安装(推荐)
1. 打开 **设置 → 第三方插件 → 浏览**
2. 搜索 **"WebNovel Assistant"**
3. 点击 **安装**,然后 **启用**
### 使用 BRAT 安装
1. 安装 [BRAT](https://github.com/TfTHacker/obsidian42-brat) 插件
2. 在 BRAT 设置中添加此仓库:`HatanoChihiro/obsidian-webnovel-assistant`
3. 启用插件
### 手动安装
1. 从 [Releases](https://github.com/HatanoChihiro/obsidian-webnovel-assistant/releases) 下载最新版本
2. 解压到 `.obsidian/plugins/web-novel-assistant/`
3. 重启 Obsidian 并启用插件
## 🚀 快速开始
1. **安装插件**后,打开任意 Markdown 文件
2. **状态栏**会显示当前字数统计
3. **点击状态栏**可快速设置目标字数
4. **命令面板**(Ctrl/Cmd + P)搜索 "WebNovel" 查看所有功能
5. **插件设置**中可自定义各项功能
详细使用方法请查看 **[用户使用指南](USER_GUIDE.md)**
## 🎯 主要命令
| 命令 | 说明 |
|------|------|
| 进入/退出 沉浸写作模式 | 切换全屏沉浸创作环境 |
| 打开/关闭写作实时状态面板 | 显示详细统计和历史图表 |
| 打开/关闭伏笔面板 | 管理伏笔标注和回收 |
| 打开/关闭时间线面板 | 管理故事时间线 |
| 打开/关闭榜单面板 | 管理榜单追踪任务 |
| 开始/暂停 摸鱼时间统计 | 切换时间追踪 |
| 标注为伏笔 | 将选中文字标注为伏笔 |
| 新建空白悬浮便签 | 创建浮动便签 |
| 高级搜索 (筛选书籍/全局/多选目录) | 跨范围搜索内容 |
| 自动创建下一章 | 智能递增章节编号 |
| 重置直播统计数据 | 清空当前会话数据 |
> **提示**:所有命令都可以在 Obsidian 设置 → 快捷键中自定义快捷键
## ⚙️ 主要设置
| 设置 | 默认值 | 说明 |
|------|--------|------|
| 默认目标字数 | 3000 | 新文件的默认章节目标 |
| 今日目标字数 | 5000 | 今日写作目标 |
| 文件浏览器字数统计 | 关闭 | 显示文件夹字数(大型项目建议关闭) |
| 智能章节排序 | 关闭 | 自动按章节编号排序 |
| 护眼模式 | 关闭 | 编辑器背景护眼色 |
| 沉浸模式面板位置 | 下方 | 辅助面板出现的屏幕位置(上方/下方) |
| 沉浸模式便签尺寸 | 280 | 沉浸模式下便签卡片的正方形边长 |
| 伏笔文件名 | 伏笔 | 伏笔文件的名称 |
| 时间线文件名 | 时间线 | 时间线文件的名称 |
| 榜单文件名 | 榜单记录 | 榜单记录文件的名称 |
更多设置请查看 **[用户使用指南](USER_GUIDE.md)**
## 🎨 OBS 叠加层快速设置
1. 插件设置 → 启用 **OBS 叠加层**
2. OBS 中添加 **浏览器源**
3. URL 填入:`http://127.0.0.1:24816/`
4. 建议尺寸:宽度 300px,高度 500px
详细自定义方法请查看 **[OBS 叠加层 CSS 指南](OBS_OVERLAY_CSS_GUIDE.md)**
## 📄 许可证
[MIT License](LICENSE)
## 💖 支持项目
如果这个插件对你有帮助,欢迎:
- ⭐ 给项目点个 Star
- 🐛 [提交问题](https://github.com/HatanoChihiro/obsidian-webnovel-assistant/issues)
- 💡 [功能建议](https://github.com/HatanoChihiro/obsidian-webnovel-assistant/discussions)
**祝你写作愉快!** ✍️
---
# WebNovel Assistant
**English** | **[中文](#webnovel-assistant)**
A powerful Obsidian plugin designed for Chinese web novel writers. Features accurate word count, writing goal tracking, focus/slack time analysis, foreshadowing management, timeline system, sticky notes, and OBS streaming overlay — all optimized for the Chinese writing workflow.
## Features
- **Accurate Word Count** — Tailored for Chinese web novel platforms, excludes Markdown syntax and punctuation
- **Writing Goals** — Chapter goal, daily goal, and ranking goal with real-time progress tracking
- **Creative Homepage** — Full-width dashboard with 2×2 grid layout, dynamic welcome, novel overview, stats panel, one-click new novel
- **Focus Timer** — Automatic focus/slack time detection with Web Worker threading
- **Immersive Mode** — Full-screen distraction-free writing with dashboard and auxiliary panels
- **Foreshadowing Manager** — Mark, track, and recover story foreshadowing across chapters
- **Timeline System** — Track story events with multi-chapter associations and custom types
- **Sticky Notes** — Floating notes with auto-save and Markdown rendering
- **OBS Overlay** — Real-time writing stats overlay for live streaming (local HTTP server, 127.0.0.1 only)
- **Smart Chapter Sorting** — Auto-detect chapter numbers (Arabic/Chinese) and sort in file explorer
- **Advanced Search** — Search across current book, global, or custom folder scopes with tree-based directory selection
- **Chapter Merge & Export** — One-click merge all chapters into a single file
- **Mobile Support** — Floating word count, touch-optimized controls, cross-device sync
## Installation
### From Obsidian Community Plugins (Recommended)
1. Open **Settings → Community Plugins → Browse**
2. Search for **"WebNovel Assistant"**
3. Click **Install**, then **Enable**
### Using BRAT
1. Install the [BRAT](https://github.com/TfTHacker/obsidian42-brat) plugin
2. Add this repository: `HatanoChihiro/obsidian-webnovel-assistant`
3. Enable the plugin
### Manual Installation
1. Download `main.js`, `manifest.json`, and `styles.css` from the [latest release](https://github.com/HatanoChihiro/obsidian-webnovel-assistant/releases)
2. Create folder `.obsidian/plugins/web-novel-assistant/` in your vault
3. Copy the downloaded files into that folder
4. Restart Obsidian and enable the plugin in Settings → Community Plugins
## Quick Start
1. After installation, open any Markdown file
2. The **status bar** displays real-time word count
3. Use **Command Palette** (Ctrl/Cmd + P) and search "WebNovel" to access all commands
4. Configure features in **Settings → WebNovel Assistant**
5. See the full [User Guide](USER_GUIDE.md) for detailed instructions
## License
[MIT License](LICENSE)