yangyongzhen/dsh-article-publish

插件Plugin 原生Native ⭐ 4 其他Other

将DeepSeek Harness的文章发布到CSDN / 掘金 / 博客园。dsh插件。

项目介绍Project Overview

DSH 文章发布插件,在 agent 会话内将 Markdown 文章直接发布到 CSDN、掘金、博客园,并支持从博客园 RSS 随机拉取科技资讯作为素材。CSDN 采用阿里云网关 HMAC-SHA256 签名请求,自动转存外链图片至 CSDN 图床;掘金为创建草稿后发布两步流程;博客园基于 cookie 加 x-xsrf-token 鉴权。配置通过 profile YAML、环境变量或调用时错误提示完成。注意:需自行提供各平台登录 Cookie,且 CSDN 标签、掘金分类固定为「后端」,暂未开放自定义。

DSH article-publish plugin lets an agent post Markdown articles directly to CSDN, Juejin, or Cnblogs from within a session, and fetch random tech news from the Cnblogs RSS as material. CSDN uses Aliyangateway HMAC-SHA256 signed requests with automatic image migration to the CSDN CDN; Juejin follows a draft-then-publish two-step flow; Cnblogs uses cookies plus an x-xsrf-token. Configure credentials via profile YAML or environment variables. Caveat: you must supply your own login cookies for each platform, and CSDN tags and Juejin category are hardcoded to "backend" with no customization yet.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add https://gitcode.com/qq8864/dsh-article-publish.git

yangyongzhen/dsh-article-publish 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-article-publish

DeepSeek Harness 文章发布插件:agent 在会话里写完文章,直接调用工具发布到 CSDN / 掘金 / 博客园,还能拉取科技资讯当素材。无外部依赖——发布逻辑直接实现(API 参考 mcp-server-article),不需要 MCP server、不需要额外进程。

功能

dsh 工具 说明
publish_article 发布/更新文章到 CSDN / 掘金 / 博客园,返回文章链接
fetch_news 获取一条科技资讯(博客园 RSS 随机一篇),当素材

publish_article 参数:platform(csdn|juejin|cnblog)、titlecontent(Markdown)、可选 description(csdn/juejin,为空自动截取前 100 字)、可选 articleId(csdn,传入则原地更新)。

平台实现要点(已内置,无需额外服务):

  • CSDN:阿里云网关 HMAC-SHA256 签名请求(x-ca-* headers),外链图片自动转存到 CSDN 图床(csdnimg.cn),转存失败的 gitcode 图片回退 wsrv.nl 代理
  • 掘金:创建草稿 → 发布(两步)
  • 博客园:cookie + x-xsrf-token

安装

dsh plugin --profile <web|tui|headless> add file:/path/to/dsh-article-publish
# 或
dsh plugin --profile <web|tui|headless> add https://gitcode.com/qq8864/dsh-article-publish.git

配置(登录凭据)

发布需要各平台登录 Cookie。三种配置方式,优先级从高到低:

1. profile 配置(cordis.patch.yml

- id: article-publish
  config:
    enabled: true
    csdnCookie: ''          # CSDN 登录 Cookie
    juejinCookie: ''        # 掘金登录 Cookie
    cnblogCookie: ''        # 博客园 Cookie
    cnblogToken: ''         # 博客园 x-xsrf-token
    cnblogUsername: ''      # 博客园用户名(拼文章链接用)

2. 环境变量(推荐,不进仓库)

export CSDN_COOKIE='...'
export JUEJIN_COOKIE='...'
export CNBLOG_COOKIE='...'
export CNBLOG_TOKEN='...'
export CNBLOG_USERNAME='...'

3. 缺省时报错提示

Cookie 为空时工具返回友好错误,明确告诉你要配哪个。

怎么拿 Cookie:浏览器登录平台后,DevTools → Application → Cookies 复制对应域名的 Cookie;或复用 mcp-server-article get-cookies(Rust 工具,可从调试端口 Chrome 导出)作为辅助获取手段。

使用示例

调用 fetch_news 获取一条科技资讯,写一篇 300 字短文,然后调用 publish_article 发布到 CSDN。

开发与验证

pnpm install
pnpm run build        # tsc -> lib/
node test/publish.test.mjs   # fetch 拦截单测:验证三平台请求构造(签名/body/两步顺序/xsrf),不发真实请求

端到端(headless,无 Cookie 时验证工具链路与错误传播):

dsh plugin --profile headless add file:./
dsh --profile headless --patch ./test/test-patch.yml \
  "调用 publish_article 工具把《测试文章》发布到掘金"

已知说明

  • @deepseek-ai/dsh-tools 声明为 peerDependency:运行时从 dsh 闭包解析,避免双副本导致的 symbol 不匹配(agent-loop 调度器崩溃)。安装若提示 peer 缺失警告可忽略。
  • CSDN 标签固定为"后端"、掘金分类/标签固定为"后端"(与 mcp-server-article 行为一致),后续可加配置。
上一个 Prev dsh-remote-ssh 下一个 Next dsh-session-export