我如何用一个快捷键,把文章同步发布到掘金和博客

7 阅读1分钟

背景:我被手动发布文章折磨了很久

每次写完一篇技术文章,真正的痛苦才刚刚开始。

打开掘金编辑器,粘贴 Markdown,手动上传封面图,选分类、选标签,预览,发布。 再打开 CSDN,重复一遍。 再去博客,再重复一遍。

图片不能直接用本地路径,每个平台的代码块渲染还不一样,一篇文章发完大概要花 20 分钟。

这 20 分钟不产生任何创作价值,纯粹是体力活。


我的理想状态

写完文章,按一个快捷键,剩下的全部自动完成。

这就是我做 InkFlow 的原因。


InkFlow 是什么

InkFlow 是一个基于 GitHub Actions + Python 的多平台文章自动发布引擎。

核心理念只有一句话:Write Once, Publish Everywhere

你只需要在文章头部写几行配置(Front Matter),Push 到 GitHub,InkFlow 自动帮你发布到所有指定平台,并在 GitHub Actions 的 Job Summary 里告诉你每个平台的文章链接。

目前支持:

  • 掘金(Cookie API)
  • GitHub Pages(Jekyll 静态博客)
  • CSDN、微信公众号、知乎(开发中)

整个工作流长什么样

Obsidian 写文章
      │
      │  快捷键 → "Obsidian Git: Commit and Sync"
      ▼
自动 Push 到 GitHub
      │
      │  GitHub Actions 检测到 articles/ 目录变更
      ▼
InkFlow 引擎启动
      │
      ├─ 解析 Front Matter(标题 / 标签 / 发布目标)
      ├─ 并发发布到各平台
      └─ Job Summary 展示结果链接

从按下快捷键到文章出现在掘金,大约 2 分钟


配置过程(一次性)

第一步:Fork 或直接引用 InkFlow

不需要 fork,InkFlow 作为独立引擎仓库存在,你的写作仓库直接调用它。

第二步:在写作仓库添加 Workflow

在你的 Obsidian Vault 对应的 GitHub 仓库里,创建 .github/workflows/publish.yml

name: Publish Articles via InkFlow

on:
  push:
    branches: [main]
    paths: ["articles/**/*.md"]
  workflow_dispatch:

jobs:
  publish:
    uses: DawnCclin/inkflow/.github/workflows/engine.yml@main
    permissions:
      contents: write
    with:
      articles_dir: articles
    secrets: inherit

第三步:配置 Secrets

在写作仓库的 Settings → Secrets and variables → Actions 里添加:

Secret说明
JUEJIN_COOKIE掘金登录后从浏览器 F12 复制的 Cookie
PAGES_DEPLOY_TOKENGitHub PAT(Contents:write 权限)
PAGES_REPO你的 GitHub Pages 仓库,如 yourname/yourname.github.io

获取掘金 Cookie:

  1. 浏览器登录掘金
  2. F12 → Application → Cookies → https://juejin.cn
  3. 复制整行 Cookie 字符串

Cookie 有效期约 30 天,过期后在 Secrets 里更新一下即可。

第四步:安装 Obsidian Git 插件

在 Obsidian 插件市场搜索 Obsidian Git,安装后:

  • 设置自动 commit 间隔(我用 1 分钟)
  • 快捷键绑定「Commit and Sync」,我绑的是 Ctrl + Shift + S

写文章的方式

文章放在 Vault 的 articles/ 目录下,头部加上 Front Matter:

---
title: 你的文章标题
description: 文章摘要,建议 50-100 
tags: [后端, python, docker]
publish:
  - juejin        # 发布到掘金
  - githubpages   # 发布到个人博客
status: published # draft 表示草稿,不会发布
date: 2026-03-12
---

正文内容...

写完,按下obsidian中配置的提交并推送快捷键,完事。


防重复发布机制

InkFlow 会在你的写作仓库维护一个 .inkflow-state.json 文件,记录每篇文章在每个平台的发布状态。下次触发时,已发布的文章直接跳过,不会重复投递。

另外 workflow 配置了 concurrency 并发控制,即使 Obsidian Git 在短时间内提交了多次,也只会顺序处理,不会并发跑两个发布任务。


效果

现在我的写作流程是:

  1. 在 Obsidian 里写文章(和之前完全一样)
  2. 写完,按 obsidian中配置的提交并推送快捷键
  3. 泡一杯咖啡
  4. 回来在 GitHub Actions 的 Summary 里看发布结果

每篇文章节省大约 15-20 分钟的重复操作。


项目地址

GitHub:DawnCclin/inkflow

如果你也被多平台手动发布折磨过,欢迎试用,欢迎 Star,也欢迎提 PR 贡献新平台的 Skill