让一段文字,变得更容易开始。
Focus Reader 是一个面向 ADHD 读者、学生和知识工作者的便利阅读工具。它不会总结、翻译或改写原文,而是通过更清楚的段落节奏、内容层级和词首聚焦,降低开始阅读和持续阅读的负担。
长文本的困难常常不只是“看不懂”,还包括不知道从哪里开始、难以维持注意力,以及读到后面忘记前文。
Focus Reader 试图解决的是呈现问题:保留作者原本的措辞和信息,只让文字更容易扫描、更容易定位重点,也更容易分段完成。
- 粘贴任意语言的文本
- 选择保留粗体、斜体、链接和列表,或清洗为统一纯文本
- 默认以词内前缀加粗的方式创建视觉落点
- 调整词首聚焦长度,或随时关闭该样式
- 使用完全本地的确定性规则整理内容
- 使用可选的 AI 模式添加轻量的语义提示
- 在网页中直接编辑生成结果
- 复制为富文本,粘贴到 Word、Notion 等工具时保留格式
- 下载为 Markdown 文件
- 打开 Markdown 文件
- 打开包含可选文字层的 PDF
- 原文与便利阅读版分屏显示
- 切换为单栏专注阅读
- 按 PDF 页码关联原文与便利阅读内容
- 对较长文件进行分块处理并显示进度
- 调整字号、行距和内容宽度
- 调整词首聚焦长度
- 分别选择西文与中文的输出字体;已经生成的内容可立即换字体验
- 支持键盘操作和清晰的焦点状态
- 默认不建立账户,不保存阅读历史
Focus Reader 使用一个简单但严格的原则:原文内容不能被改变。
默认的词首聚焦会为每个可识别词段的前缀加粗,形成类似人工注视点的视觉路径。它是一种可关闭、可调节的阅读偏好,并不承诺对所有读者提升速度或理解。
本地模式通过固定规则识别段落和词首范围,不需要联网,也不需要模型密钥。AI 模式只允许模型返回段落 ID 和轻量语义提示的字符位置。服务端会检查段落是否完整、顺序是否一致、字符范围是否合法;无法验证的结果会被拒绝,并自动回退到本地模式。
这意味着 AI 负责建议“看哪里”,但没有权限重写“原文是什么”。
需要 Node.js 22.13 或更高版本。
npm install
npm run dev终端会显示本地访问地址。没有配置 AI 服务时,本地模式仍可完整使用。
生产构建与测试:
npm run build
npm test
npm run lint项目支持 OpenAI 兼容接口。复制 .env.example 为 .env.local,然后在本地填写密钥。
单一服务商的基本配置如下:
OPENAI_API_KEY=your_key_here
OPENAI_MODEL=your_model_name
OPENAI_BASE_URL=https://api.openai.com/v1需要多个服务商时,可以通过 AI_PROVIDERS_JSON 定义显示名称、接口地址、模型和密钥对应的环境变量名。真实密钥始终保留在服务端,不会发送到浏览器。
不要把 .env.local、真实密钥或内部接口地址提交到 Git 仓库。
这是一种最简单、也最容易迁移的部署方式。服务器需要安装 Docker;应用本身不需要数据库。
先在项目目录创建本地配置。只使用本地规则模式时,配置文件可以为空;要启用 AI 模式时,再参考 .env.example 填入服务端密钥。
cp .env.example .env.local
docker build -t focus-reader .
docker run --rm -p 3000:3000 --env-file .env.local focus-reader随后访问 http://服务器地址:3000。在自己的电脑上试用时,地址通常是 http://localhost:3000。
如果要让服务器重启后自动恢复运行,改用下面的启动命令:
docker run -d --name focus-reader --restart unless-stopped -p 3000:3000 --env-file .env.local focus-reader更新版本时,先重新拉取代码并执行 docker build,再停止并移除旧容器,然后使用同一条后台启动命令创建新容器。不要把 .env.local 提交到 Git 仓库。
默认容器不使用数据库,也不需要持久卷。用户内容只存在于当前浏览器会话和请求处理期间。
- 不要求注册或登录
- 不建立阅读历史数据库
- 不把文件写入持久存储
- 模型密钥只在服务端读取
- 本地模式不向模型服务发送文本
- 页面刷新或关闭后不保留当前内容
如果启用第三方 AI 服务,文本会在处理请求期间发送给部署者所配置的服务商。实际部署时应根据服务商政策提供相应的隐私说明。
- PDF 必须包含可选择的文字层
- 扫描件和图片型 PDF 暂不支持 OCR
- 当前 AI 接入范围是 OpenAI 兼容接口
- 富文本只保留基础格式,不保证复刻来源页面的完整样式
- 便利阅读结果不会导出为重新排版后的 PDF
app/ 页面与服务端接口
lib/ 文档处理、格式校验与模型适配
public/ 静态资源
tests/ 服务端渲染与接口测试
Dockerfile 容器部署配置
.env.example 安全的环境变量示例
Focus Reader 改善的是文字呈现和阅读体验,不用于 ADHD 诊断、治疗或医疗建议。
项目尚未指定开源许可证。在正式公开分发或接受外部贡献前,应先选择并添加合适的许可证。
