Kindle 两次吃灰后,我做了一个完全免费的 Kindle 推送 & 标注转换机器人(开源) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Joeyyyyyyy
V2EX    分享创造

Kindle 两次吃灰后,我做了一个完全免费的 Kindle 推送 & 标注转换机器人(开源)

  •  
  •   Joeyyyyyyy 7 天前 1265 次点击

    契机很简单: 放在写字台的 Kindle 吃灰许久,连泡面的功能都要失效了。心血来潮给它充满电,却发现图书馆坏了

    一查才知道: Kindle 中国区服务停止运行 原账号无法继续使用 Send-to-Kindle 推送

    重新激活功能的方式网上已经有很多教程了: 核心流程是:

    1. 注销中国区账号
    2. 注册美国区或其他地区账号
    3. 在亚马逊官网重新添加“受信任邮箱”(如 QQ 、163 等)
    4. 即可继续使用 Send-to-Kindle 推送

    推荐参考这篇总结得非常清楚的文章: Kindle 终止中国在线服务:如何换区和继续使用推送服务


    推书很方便了,那能不能更方便?

    账号换好以后,通过 Send-to-Kindle 邮箱推送书籍又恢复正常了。 但作为一名程序员,我想着:

    能不能做到完全在手机上操作? 甚至一键把书推送到 Kindle ?

    于是我继续搜,果然在 B 站找到了一个非常好的思路:

    电子书迷们看过来:Kindle 退出中国怎么办?

    里面提到可以使用一个 Telegram Bot 来转发书籍。我试了一下确实非常好用!上传书的同时还能直接推送到 Kindle ,非常爽。

    结果……

    上传第二本的时候

    开始收费了 作为程序员,我突然血压就上来了:

    这不就是一个 “收文件 → 发邮件” 的服务吗?我完全可以自己写一个。

    于是我就真的开写,并把它完全免费开源出来了:


    Kindle Mailman:一个完全免费的 Kindle 推送 & 标注 Markdown 转换服务

    项目地址(欢迎 star ): https://github.com/xiaolonggee/kindle_mailman

    核心能力如下:


    1. Telegram → Kindle 推送

    后端提供 /api/telegram

    • 接收 bot 上传的附件( mobi / epub / pdf )
    • 识别指令、参数
    • 自动转发到你的 Kindle 邮箱
    • 无需本地设备,手机就能完成推书

    简单一句话: 你发给 bot 一本书,它就会自动推送到你的 Kindle 。


    2. 邮箱轮询:自动收爆款功能Kindle 标注解析

    通过 /api/check-mail + Vercel Cron ,实现自动轮询 Gmail:

    • 登录 Gmail (使用 OAuth Refresh Token )

    • 查找满足条件的邮件:

      • “未读”
      • “来自可信发件人 TRUSTED_SENDER_EMAIL”
      • “有 .html 附件( Kindle Notebook 导出)”
    • 解析 HTML → 自动生成 Markdown

    • 输出文件名:<书名>.md

    解析内容包含:

    • 书名 / 作者
    • 划线高亮
    • 用户笔记
    • 页码 / 位置
    • 颜色(黄色/蓝色/粉色…)

    3. Markdown 分发:可回 Telegram 、可回 Obsidian

    Markdown 生成后有两条分发路径:

    路径 1:发回 Telegram

    使用 sendDocument 发送 .md 文件至 OWNER_CHAT_ID

    提交后可以立即在手机 Telegram 中看到完整的 Markdown 内容。

    路径 2:可选分发到 Obsidian Inbox (邮箱方式)

    .md 作为附件发送到:

    OBSIDIAN_INBOX_EMAIL 

    你可以结合:

    • iCloud
    • macOS Mail 规则
    • 或 iOS 快捷指令

    实现自动落地到 Obsidian Vault 。


    4. 去重逻辑:保证不会重复处理邮件

    每当处理完一封邮件:

    • 给它加上标签(默认 ProcessedByKindleBot
    • 同时标记已读

    这样即使 Cron 频率很高,也不会重复消费。


    5. 日志 & 容错

    • 如果发件人不可信 → 只记录日志
    • 如果没有 HTML 附件 → 跳过
    • 如果解析失败 → 标记并继续处理下一封

    系统足够健壮,跑在 Vercel 上成本极低。


    整体架构图(简化版)

    (上传书籍) (导出笔记) Telegram → /api/telegram Gmail → /api/check-mail | | ↓ ↓ 转发到 Kindle 邮箱 HTML → Markdown ↓ ↓ Kindle 收书 分发 Markdown | ┌──────────────┬───────────────┐ ↓ ↓ sendDocument 发到 Obsidian 收件箱 (Telegram) (可选) 

    环境变量说明(简化版)

    KINDLE_EMAIL TELEGRAM_BOT_TOKEN OWNER_CHAT_ID TRUSTED_SENDER_EMAIL # Gmail OAuth GMAIL_CLIENT_ID GMAIL_CLIENT_SECRET GMAIL_REFRESH_TOKEN # Obsidian 可选 OBSIDIAN_INBOX_EMAIL # 去重标签 PROCESSED_LABEL_NAME=ProcessedByKindleBot 

    最终效果

    • 你在手机上把 HTML ( Kindle Notebook 导出)发给 bot
    • 机器人自动生成 Markdown
    • 文件直接发回 Telegram
    • 想保存到 Obsidian → 点一下“保存到文件”即可
    • 再也不用付费、复制、转换、格式化

    把阅读 → 记录 → 梳理 → 存档 的路径缩短到几秒钟。


    开源地址(欢迎 Star )

    https://github.com/xiaolonggee/kindle_mailman

    如果有想扩展的功能,例如:

    • 按章节导出多文件
    • 自动生成摘要
    • 给标注加标签
    • Push 到 Notion / Logseq
    • 解析 Markdown 分层结构

    也欢迎佬友们提 pr


    最后

    这个项目的初衷很简单:

    让 Kindle 的知识流动得更顺畅。

    希望这篇文章能帮到同样在用 Kindle 、在做个人知识管理的朋友们。 如果你也正在找“标注自动化处理”方案,这个项目也许能给你一点灵感,现在在 ios 自动化部分整的不太好,佬友们有好的方案大家多讨论,感谢感谢。

    6 条回复    2025-12-01 14:19:57 +08:00
    jsomin
        1
    jsomin  
       7 天前 via iPhone
    看起来还不错?晚上试试看
    PRStarDust
        2
    PRStarDust  
       6 天前
    我印象中,安卓这边只要安装一下 kindle 的 app ,就可以通过系统分享功能传书……
    Joeyyyyyyy
        3
    Joeyyyyyyy  
    OP
       6 天前
    @PRStarDust 嗯呢 需要是非国区的可以 这个是方便全在手机端操作了的 之前是可以
    dfdd1811
        4
    dfdd1811  
       6 天前
    才知道退出大陆老哥你的 kindle 不是吃灰是压箱底了
    yulgang
        5
    yulgang  
       6 天前
    我是换账号的时候把书都搞没了。。。。
    bearbest
        6
    bearbest  
    PRO
       6 天前   1
    @yulgang 官网买的书是跟账号绑定的,需要在电脑上导出,然后全部发送到新的账号上
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3494 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 04:34 PVG 12:34 LAX 20:34 JFK 23:34
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86