用 Python 串起技术博客的选题、摘要和发文流程

用 Python 串起技术博客的选题、摘要和发文流程

很多个人博客更新不稳定,不是因为没内容,而是因为从“想到一个题目”到“真正把文章发出去”之间,夹着太多零碎动作。选题、整理提纲、补摘要、处理图片、填分类、加标签、最后再打开后台发布,整个链路一长,就很容易拖着不动。

我更倾向把这些动作拆成几个简单步骤,然后用 Python 把重复部分接起来。它不一定要一上来就做成内容工厂,先让自己的写作过程少一点机械劳动,回报就已经很明显了。

适合自动化的不是写作本身,而是外围动作

真正有价值的部分,还是你对问题的判断、案例的取舍和经验的沉淀。但围绕文章的很多外围动作,其实非常适合交给脚本:

  1. 扫描本地 Markdown 文件,自动识别哪些文章还没发布。
  2. 从 front matter 读取标题、分类、标签和摘要字段。
  3. 自动截取正文前几段,生成一个更自然的摘要。
  4. 统一检查图片路径、封面字段和文章别名。
  5. 直接调用站点接口,写入草稿或正式发布。

这样做的好处不是“替代写文章”,而是把发文动作从一个容易拖延的后台操作,变成一个可以重复执行的命令。

一个够用的最小链路

我现在更喜欢这种最小流程:

  1. 本地先写 Markdown。
  2. 头部写好标题、分类和标签。
  3. 脚本把 Markdown 转成 HTML。
  4. 自动上传封面或引用远程图片。
  5. 调用 Emlog API 直接发文。

如果只做这几个步骤,整个实现其实不复杂。下面这个伪代码就已经能说明思路:

from pathlib import Path
from emlog_api_client import EmlogApiClient

client = EmlogApiClient(
    "https://www.owai.cc",
    cookie_file="owai_cookie_v2.txt",
)

article = Path("article.md").read_text(encoding="utf-8")
title = "用 Python 串起技术博客的选题、摘要和发文流程"
tags = "Python,自动化,博客运维"

result = client.article_post(
    title=title,
    content=article,
    sort_id=5,
    tags=tags,
    draft="n",
    allow_remark="y",
)

print(result)

真正落地时,当然还会补充 front matter 解析、摘要截取、封面处理和错误重试,但主干就是这么直接。

我更看重的 3 个细节

1. 文章源文件要可回放

不要把“真正内容”只放在后台富文本编辑器里。哪怕最终发布的是 HTML,也建议本地保留 Markdown 或 HTML 源文件。这样后面要批量改标题风格、批量补标签、批量同步图片时,都会轻松很多。

2. 摘要不要机械截断

很多脚本直接截取前 120 个字当摘要,这样非常容易出现半句话被截断、代码片段混进去、或者第一段全是废话的情况。更稳的做法是:

  1. 先把 Markdown 转成纯文本。
  2. 去掉代码块和链接。
  3. 只取有信息密度的前两段。
  4. 再按字数收尾。

这样生成出来的摘要更像正常人写的,不会一眼看出是脚本硬切的。

3. 发布动作最好支持草稿和正式两种模式

当你有批量发文需求时,草稿模式几乎是必备的。因为真正容易出问题的,不是正文,而是分类、标签、图片路径和别名。支持 draft=y 之后,就能先批量写入后台,再统一过一遍,最后再公开发布。

什么时候值得继续升级

如果你已经能稳定做到“本地写作 + 脚本发文”,后面再考虑这些增强会更划算:

  1. 自动根据分类匹配标签模板。
  2. 自动同步一条微语,用来做站内更新提醒。
  3. 自动读取媒体库,给文章补封面。
  4. 自动生成内部链接建议,增强旧文复用。

这些都属于能持续叠加的能力,但前提还是先把最小流程跑通。

结语

对个人技术博客来说,最值得自动化的不是内容本身,而是围绕内容的一整圈重复动作。把这些动作收拢起来之后,更新频率会更稳定,内容质量也更容易保持一致。

我自己的经验是,只要发文动作足够轻,写作意愿就会高很多。因为你不再是在“准备发文”,而是在“完成一次正常的技术记录”。