dsh-plugin-kindle-book:把网页新闻编成 EPUB / AZW3 的 DSH 插件

前言

在 DeepSeek Harness(DSH)里做智能体或日常开发时,常会攒下一批「稍后读」的网页链接:新闻、长文、专栏。浏览器书签或收藏夹能存 URL,但离线阅读、Kindle 上连续翻章,仍要另找工具:手动复制正文、再进 Calibre 或第三方转换,步骤多且格式不统一。

下面介绍社区插件 dsh-plugin-kindle-book(维护者 wanghs09)。它在 Harness 侧栏增加「Kindle 编书」页面,粘贴链接即可生成 EPUB(可选 AZW3);同时为 Agent 注册同名逻辑的工具 kindle_book,页面与聊天走同一套抓取与打包流程。插件分类为「联网工具」,源码与说明见 GitHub 仓库,社区目录页:SkillHub 插件页。DSH 生态强调「一切皆插件」;SkillHub 等目录为社区站点,与 DeepSeek / 幻方无官方从属关系。

这是什么

dsh-plugin-kindle-book 把指定 URL 的正文抓成纯净文字,打包为 EPUB;若本机安装了 calibre,还可输出 AZW3。两条入口等价:

  • Web 侧栏:填链接、书名、输出目录,一键构建并下载结果文件(中文文件名保留)。
  • Agent 工具:kindle_book(urls=[...], title="..."),在对话里完成同样操作。

正文清洗会去掉导航、广告、相关阅读、脚本样式等,只保留文字;抓不到的链接单独列出,原始日志可展开查看。

核心功能

侧栏「Kindle 编书」页面

字段 说明
文章链接 一行一条;# 开头为注释;URL \| 章节标题 可覆盖该章标题
书名 同时作为输出子目录名;留空则使用 新闻摘编 YYYY-MM-DD
输出目录 绝对路径;默认 ~/Documents/Kindle(可通过配置修改)
AZW3 勾选后调用 calibre;未安装 calibre 时仅生成 EPUB,页面会提示
生成封面 对应脚本的 --no-cover 反向选项

生成完成后列出 EPUB、AZW3、封面,点击「下载」存盘。同一时间只允许一次构建,并发请求返回 409。

Agent 工具 kindle_book

参数包括:urls(必填,数组)、title、azw3、cover、outDir。返回输出目录、文件列表、失败链接与日志,与页面按钮行为一致。

示例(来自 README):

把这两个链接做成一本 kindle 书,书名《十月观察》
→ kindle_book(urls=["https://...", "https://..."], title="十月观察")

正文抓取与依赖探测

  • 正文少于配置中的 minChars(默认 120)视为抓取失败。
  • Python 解释器依次探测:config.pythonPath → DSH 自带 python → 常见系统路径 → PATH 中的 python3;需能 import lxml。
  • calibre 的 ebook-convert 在 macOS / Linux / Windows 常见路径、PATH 及环境变量 NEWS2KINDLE_EBOOK_CONVERT 下自动识别。

HTTP 接口(Harness webServer)

三条路由均经 Host/Origin 与登录校验:

方法 路径 说明
GET /kindle-book/env Python(含 lxml)、calibre、脚本、默认输出目录与限制
POST /kindle-book/build 提交构建参数,返回结果、失败链接、日志
GET /kindle-book/download?id=&name= 下载本次构建登记过的文件,不接受任意路径

安装与启用

前置条件

依赖 是否必需 说明
Python 3.10+ 与 lxml 必需 安装:python3 -m pip install --user lxml
calibre 可选 仅需 AZW3 时安装
DSH >= 0.2.1-0 必需 使用 webServer 路由、main / sidebar.panellist 与工具注册

安装均在 Harness 侧栏 插件 页完成,不要手工改 profile 的 package.json。任选一种方式:

插件市场

  1. 插件页 → 发现 → 添加索引:
https://raw.githubusercontent.com/wanghs09/dsh-plugin-kindle-book/main/market-index.json
  1. 搜索「Kindle」并安装。

GitHub

插件页 → 添加插件 → 填写:

git+https://github.com/wanghs09/dsh-plugin-kindle-book.git

npm

插件页 → 添加插件 → 填写 dsh-plugin-kindle-book(README 注明尚未发布到 npm,以仓库说明为准)。

本地目录

插件页 → 添加插件 → 本地目录 → 选择已下载的仓库目录。

装好后侧栏出现「Kindle 编书」;未开启 HMR 时需重启 Harness。卸载同样在插件页完成。当前 package 版本为 1.0.0,许可证 MIT,Node >= 18。

典型用法

页面:攒链接再编一本

README 建议的日常流程:

  1. 平时把想读但没空看的新闻链接先收藏,不必立即处理。
  2. 隔几天从收藏复制链接,一次性粘贴到侧栏;书名可用 新闻摘编 10月27日 这类日期,一次编 5–10 篇。
  3. EPUB 可在电脑上用浏览器、Calibre 或 Apple Books 阅读;AZW3 可通过 USB 拷到 Kindle 的 documents/。Send to Kindle 邮箱通道不支持 AZW3,该通道请用 EPUB。
  4. 未抓到的链接在结果中单列,可单独再生成或打开原文。

可选配置

默认无需配置。若需指定 Python、calibre 或输出目录,在 profile 的 patch 中为插件 id kindle-book 增加 config,例如:

- insert:
    - id: kindle-book
      name: 'dsh-plugin-kindle-book'
      config:
        pythonPath: /opt/homebrew/bin/python3
        calibrePath: /Applications/calibre.app/Contents/MacOS/ebook-convert
        outDir: /Users/you/Documents/Kindle
        timeoutMs: 300000
        minChars: 120
键 默认 说明
pythonPath 自动探测 能导入 lxml 的解释器
calibrePath 自动探测 ebook-convert 路径
outDir ~/Documents/Kindle 页面默认输出目录
timeoutMs 300000 单次构建超时(毫秒)
minChars 120 正文少于此字数视为失败

适用场景与注意

适合谁

  • 已在用 DSH,希望把新闻 / 长文链接离线成电子书的人。
  • 希望在 Agent 对话里用自然语言触发编书(kindle_book)的开发者。

已知限制(README)

  • 无 calibre 时只出 EPUB。
  • BBC、NYT、Guardian 等国际站点若本机直连不通,会列为失败链接(通常需代理)。
  • 微信长文偶发 IncompleteRead,重新生成一次即可;脚本不重试。
  • 输出只有文字,图片与视频按脚本设定丢弃。
  • 一次只允许一本正在构建。

安全与权限

插件 Host 代码运行在 Harness 宿主进程内,不受工作区沙箱限制:会读写你指定的输出目录,并启动本机 Python 与 calibre。无遥测与外部上报;对外网络请求仅为抓取你提交的文章 URL。安装前建议阅读源码与 MIT 许可证,确认路径与依赖符合本机策略。

结尾

dsh-plugin-kindle-book 把「粘贴链接 → 清洗正文 → EPUB / 可选 AZW3」收进 DSH 侧栏与 kindle_book 工具,减少在浏览器、脚本、Calibre 之间来回切换。需要安装步骤与字段说明时,以仓库 README 为准。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜