# Dukou

> 渡口——终端AI agent与渡口Chrome插件的稿件互通。能力：(1)把md文章（含图片）渡到 X Articles / B站专栏 / 公众号排版器(editor.huasheng.ai)，自动打开编辑页并填充图文；(2)让插件抓取微信公众号文章（带登录态、防盗链图片可下载），落盘为本地md+图片；(3)导出插件文章库任意一篇为md+图片。 当用户提到「渡到X」「发到X Articles」「发B站专栏」「渡到公众号排版器/editor.huasheng.ai」「填入X/B站/排版器」「公众号文章转md」「抓微信文章」「渡口」时使用。 即使用户只说「把这篇发到X」「这篇也发B站」「灌进排版器」「抓一下这篇公众号」「这篇文章存下来」也应触发。 需要配合渡口Chrome插件（https://github.com/alchaincyf/dukou），未安装时按「引导安装」提示用户。

- Skill: `alchaincyf/dukou` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add alchaincyf/dukou`
- Raw SKILL.md: https://api.skillmd.com/api/skills/alchaincyf/dukou/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: alchaincyf (https://skillmd.com/u/alchaincyf)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/alchaincyf/dukou

---


# 渡口 · 稿件分发

Chrome插件负责浏览器侧（抓取、填充、文章库），本skill负责终端侧（md进出、任务下发）。两侧通过本地桥（127.0.0.1:8787）互通。

**核心原则：所有命令由你执行，用户零终端操作。** 桥服务由CLI自动拉起（探活失败就后台启动，日志 `/tmp/dukou-bridge.log`），永远不要让用户手动跑任何命令。用户只需要：Chrome开着、渡口插件加载着。

## 命令

CLI在本skill目录的 `scripts/dukou.js`（自包含零依赖，下文以 `~/.claude/skills/dukou` 为例，按实际安装路径调整）：

```bash
# 投稿：md → 插件文章库 → 自动打开平台编辑页并填充
node ~/.claude/skills/dukou/scripts/dukou.js send 文章.md --dest x --autofill
node ~/.claude/skills/dukou/scripts/dukou.js send 文章.md --dest bili --autofill
node ~/.claude/skills/dukou/scripts/dukou.js send 文章.md --dest editor --autofill   # 公众号排版器
node ~/.claude/skills/dukou/scripts/dukou.js send 文章.md              # 只入库

# 取稿：微信公众号文章 → 本地 <目录>/<标题>/<标题>.md + images/
node ~/.claude/skills/dukou/scripts/dukou.js fetch "https://mp.weixin.qq.com/s/xxx" --save-to ./素材

# 导出插件文章库（缺省最新一篇）
node ~/.claude/skills/dukou/scripts/dukou.js export --save-to ./素材

node ~/.claude/skills/dukou/scripts/dukou.js ping   # 探活（顺带自动启动桥）
```

时效：插件每30秒轮询桥，CLI阻塞到任务完成（`--wait 秒数`可调，import默认90/fetch默认240）。告诉用户点一下Chrome工具栏的渡口图标可立即同步。

## send 的 md 约定

- 首个 `# 一级标题` 作为文章标题（不进正文）；其余各级标题都渡成H2
- 图片 `![](相对路径)` 必须独占一行；支持 jpg/png/gif/webp；路径相对md所在目录
- 行内支持 `**粗**` `*斜*` `` `code` `` `[链接](url)`；分割线会被丢弃（X不支持）
- 可选frontmatter：`title:` `author:` `cover:`（头图路径）
- X单图约5MB限制：插件填充时自动压缩超限图（先降质量后缩尺寸），无需预处理
- **图片用远程URL（http）时**：X/B站只吃本地图，会跳过远程图；但 `--dest editor` 排版器走原始markdown，远程图URL原样保留、预览直接显示——所以图全是ImgBB等远程链接的稿子，优先渡到 editor

## 平台差异

- `--dest x --autofill`：自动打开 X Articles，**用户需点一下 Write 新建草稿**，之后自动填入标题/正文/图片/头图（头图弹裁剪框需用户点Apply确认）
- `--dest bili --autofill`：自动打开B站专栏编辑页，全自动填入
- `--dest editor --autofill`：自动打开公众号排版器(editor.huasheng.ai)，把整篇raw markdown灌进左侧输入区，右侧实时预览。图片走markdown里的URL（远程图直接显示；本地图做不进来，让用户在排版器里重传）。填完用户自己点排版器的「复制到公众号」
- 填充完成后发布/复制动作永远留给用户，不要尝试代替用户发布
- 插件文库里每篇都有「渡到X / B站 / 排版器」按钮，用户也可不经终端、直接在插件里把任意存稿渡往各平台

## 排错与引导安装

1. CLI报「连不上渡口桥/自动启动失败」→ 看 `/tmp/dukou-bridge.log`
2. ping通但任务等待超时（插件一直没来取）→ 依次确认：
   - Chrome是否开着？
   - 渡口插件是否已安装加载？**未安装时引导用户**：clone https://github.com/alchaincyf/dukou ，打开 `chrome://extensions` → 开发者模式 → 「加载已解压的扩展程序」→ 选仓库里的 `extension/` 目录。装好后队列里的任务会被自动取走，无需重发
   - 让用户点一下渡口插件图标（立即同步）
3. 改过 `extension/` 代码后必须让用户重载插件并刷新目标页；旧页面点「填入」会提示刷新

## 版本自检（静默）

本节给 AI agent：每次使用本 skill 前，先做一个不联网的判断——读本 skill 目录（SKILL.md 所在目录）下的 `.last-update-check` 文件（内容为一行日期 YYYY-MM-DD）。文件存在且距今不足 30 天，跳过本节直接干活，不向用户提任何更新相关的话。

到期或文件不存在时，且仅在此时：

1. 本目录不是 git 克隆（无 `.git` 或无 origin）→ 写入今天日期后跳过本节
2. 对比版本：`git -C <本目录> rev-parse HEAD` 与 `git -C <本目录> ls-remote origin HEAD`
3. 无论结果如何，把今天日期写入 `.last-update-check`
4. 两者一致 → 什么都不说；确认落后 → 先完成用户当前任务，结束后附一句「本 skill 有新版本，可用 `git -C <本目录> pull --ff-only` 更新」。是否更新由用户决定，不要主动执行更新

