前言¶
用 GitHub Pages 托管静态博客时,改一篇文章往往要本地 clone、编辑 content/**/*.md、commit 再 push,然后等 Actions 构建。如果你已经在 DeepSeek Harness(DSH)里做对话和自动化,再切回终端维护仓库,上下文会断得比较厉害。
下面介绍的 blog-manage(npm 包名 dsh-hxc-blog,仓库 huangxicheng1/blog-manage)把「浏览、撰写、编辑、删除 content/ 下 Markdown 并推回 GitHub」放进 DSH Web 界面。插件通过 GitHub REST API 工作,不需要本地 git;也不会改写 entries.js——该文件由仓库里的 build.py 在 Actions 中生成,插件只动 content/。
维护者 huangxicheng1,许可证 MIT,在 SkillHub 目录中归类为联网工具。DSH 版本要求 >=0.2.1-rc.2(见包 engines)。
这是什么¶
一句话:在 DSH 左侧边栏打开「博客管理」面板,连接你的 GitHub Pages 源仓库,对 content/**/*.md 做可视化编辑,校验通过后合并为一次 commit 推到指定分支,并轮询 Actions 查看构建结果。
插件最初面向 huangxicheng1/huangxicheng1.github.io 这类布局,但仓库、分支、内容目录和站点地址都可在设置里改。
核心功能¶
浏览与组织¶
安装并刷新 Web GUI 后,侧边栏在「Downloads」下方会出现「博客管理」。设置里配置 fine-grained PAT(加密存储)、仓库、分支、contentRoot、站点 URL,即可打开双栏界面。
左栏按 front matter 的 tags 分组(可折叠,状态写入 localStorage);一篇文章多个 tag 会出现在多个分组;无 tag 归入「无标签」且排在最后。支持按标题、标签、文件名等搜索,草稿与 front matter 格式错误有标记,未发布修改有圆点提示。
右栏渲染 Markdown 预览,可切源码;顶部展示类型、分类、标签、日期、复习日期与文章 id(相对 content/ 的路径)。
编辑与发布¶
新建/编辑使用分屏:左侧 Markdown,右侧实时预览。front matter 用表单填写(标题、日期、类型 diary/note、摘要、分类、标签、复习日期、草稿、文件名),不必手写 YAML。
保存前按与 build.py 一致的规则校验;失败会拦住发布并高亮字段。变更先进入本地「待发布区」,点「发布」后在确认框里查看文件列表(M/D)和 commit message,再通过 API 组装 blob → tree → commit → ref。推送前会比对远端 blob sha,冲突时拒绝覆盖,本地修改仍保留。
构建反馈¶
推送成功后轮询该仓库最新 Actions workflow run,显示构建中 / 成功 / 失败;成功时可打开配置的站点地址(示例文档中为 https://huangxicheng1.github.io/)。
自动化¶
Host 提供 HTTP 路由(如 POST /api/gh-blog/automation/create)、Host 服务与浏览器事件钩子,与 UI 共用同一套 publish / validateDraft 逻辑,便于脚本或自动化任务写文。
安装与启用¶
这是 DSH bundle 包,用 plugin_manager 的 install_bundle 安装;不要在 profile 目录手写 package.json 或自行跑 pnpm。
从 npm 安装(当前版本 0.1.1):
plugin_manager action: install_bundle target: dsh-hxc-blog
包地址:https://www.npmjs.com/package/dsh-hxc-blog。
若希望 DSH 直接拉取 GitHub 仓库,README 也写明可使用:
dsh plugin add github:huangxicheng1/blog-manage
安装后刷新页面:侧边栏出现「博客管理」,「插件」页出现 GitHub Pages Blog 条目。若修改了 Host 端(index.js / lib/*),需重启 Harness;仅改 client.js 时刷新即可(本地目录链接安装时)。
可选:在 cordis.patch.yml 里用 config 固定默认仓库等(优先级低于设置面板):
- insert:
- id: gh-blog
name: dsh-hxc-blog
config:
repository: huangxicheng1/huangxicheng1.github.io
branch: main
contentRoot: content
siteUrl: https://huangxicheng1.github.io/
配置 Token 与前提¶
- 在 GitHub 创建 fine-grained PAT(https://github.com/settings/tokens?type=beta),仓库访问限定为你的 Pages 源仓库;
Contents需 Read and write,ActionsRead 用于看构建(可选)。 - DSH 中打开「博客管理」→「设置」→ 粘贴 Token → 保存 →「测试连接」。
Token 经 DSH 凭据服务存储,键名 GH_BLOG_GITHUB_TOKEN;也可用同名环境变量。非敏感项写入 $DSH_HOME/gh-blog/settings.json。
站点前提:GitHub Pages 的 Source 须设为 GitHub Actions(Settings → Pages)。若仍为「Deploy from a branch」,Actions 构建成功也可能被分支静态内容覆盖,线上看不到新文章。README 第 10 节有说明。
典型用法¶
日常流程(与 README 一致):
- 「新建文章」→ 填 front matter 与正文 →「保存更改」(仅本地待发布区,不触 GitHub)。
- 左栏选中文章 →「编辑」→ 保存。
- 顶栏「发布(N)」→ 确认变更列表与 commit message →「推送到 GitHub」。
- 等待顶部状态条显示构建结果,成功后打开站点链接。
front matter 须以 --- 包裹,仅简单 key: value 行。必填:title、date(YYYY-MM-DD)、type(diary 或 note)、summary。note 可填 category;tags 为逗号分隔字符串;draft: true 时不发布。新建路径形如 content/diary/<date>-<slug>.md 或 content/notes/<date>-<slug>.md。
脚本发布示例(publish: true 时须 confirm: true):
POST /api/gh-blog/automation/create
请求体字段见仓库 README 第 7 节(title、type、body、commitMessage 等)。
适用场景与注意¶
适合:已用 GitHub Actions 构建 Pages、文章集中在 content/**/*.md、希望在 DSH 内完成浏览与发布、或需要 HTTP 自动化写文的开发者。
注意:
- 插件在 当前 DSH 进程权限下运行,Token 具备所配仓库的读写能力;安装前请阅读源码与 MIT 许可证,确认信任维护者与依赖。
- 浏览器端只访问 DSH Host 的
/api/gh-blog/*,不直连api.github.com;仍须妥善保管 PAT 与 DSH 环境。 - 社区目录 SkillHub 插件页 与 GitHub 仓库独立维护,与 DeepSeek / 幻方无官方从属关系;以仓库 README 与 npm 包声明为准。
结尾¶
blog-manage 把 GitHub Pages 博客的 Markdown 生命周期收进 DSH:按 tag 浏览、表单化 front matter、与 build.py 对齐的校验、单次 commit 推送与 Actions 状态反馈。若你的站点已是 Actions 驱动的 content/ 结构,可用 install_bundle 装上 dsh-hxc-blog 试一轮。