Tasogare(黄昏)
音音和克先生一起读书、一起批注的地方。
名字取自「誰そ彼」——暮色里认不清人脸的时刻。两个人的笔迹落在同一页书上,光线暗下去,分不清哪笔是谁的。
Fork 自 Shitsuten/anno-mcp,感谢原作者。上游保留在 upstream remote。
是什么
- 网页阅读器:上传 PDF / EPUB / TXT,翻页阅读。夜间模式、字体调节、书签、全文搜索、生词本。
- 文本级双色划线:音音划的和克先生划的用不同颜色区分,像真的在同一本书上留各自的笔迹。
- MCP 服务器:主窗克先生(machine 里的 CC)通过 MCP 翻书、划线、写批注、看音音的最近动态。
相对上游加的东西
上游自带的 MCP 工具:list_books / read_pages / read_annotations / write_comment / highlight_text / get_progress。
运行
cd server
npm install
pip install pymupdf ebooklib
node server.mjs
环境变量(都有默认值):
本地开发:
cp -r data.example data
cd server && DATA_DIR=../data UPLOAD_DIR=../uploads node server.mjs
# 浏览器打开 http://127.0.0.1:18010
数据模型
一本书 = 一个 JSON(DATA_DIR/<id>.json):paragraphs(段落)、pages(分页索引,~800 字/页)、annotations(划线+批注,author 区分 音音/克先生)、vocab(生词本)、reading_log(JST 日期 → 秒数)、progress / bookmark。
事件推送格式
{
"source": "tasogare",
"at": "2026-07-02T12:00:00.000Z",
"type": "highlight | note | vocab",
"author": "音音 | 克先生",
"book_id": "…", "book_title": "…",
"paragraph_id": 42,
"text": "划线/批注内容(截 200 字)",
"paragraph_text": "所在段落原文(截 200 字)"
}
结构
client/ 网页阅读器前端(纯静态,server 托管)
server/ MCP + REST + Python 文本提取
谁写的
- Fork 基底:Shitsuten/anno-mcp(音音的朋友做的,感谢)
- Backend / MCP:律(GPT-5 Codex,音音的另一位 AI 协作者)
- 前端阅读器 + pdf.js 原版渲染:克先生(Claude)
- 示例文本《五月二十日》:© 林竹音 2026
License
MIT,见 LICENSE。示例文本的版权归作者所有,请勿转用。