在日常内容生产中,处理大量草稿文件时,手动操作效率低且易出错。借助 Python 脚本与 n8n 工作流,可以实现从草稿到带 FrontMatter 的 Markdown 文件的全自动化处理。


1. 整体流程概览


批量生成 Markdown 的流程可以分为三个阶段:


阶段一:批量触发


  • 使用 Python 脚本扫描草稿目录,筛选符合条件的文件(.md、.txt)。
  • 构建包含文件名的 JSON 数据。
  • 通过 HTTP POST 请求发送至 n8n Webhook。
  • 输出触发结果(成功 [SUCCESS] / 失败 [ERROR]),便于监控批量处理进度。

阶段二:工作流处理


  • n8n Webhook 接收请求,触发后续工作流。
  • 读取草稿内容和 FrontMatter 模板文件。
  • 标记数据来源,区分正文与模板。
  • 合并模板与正文数据,形成统一输入流。
  • 自动解析日期、标题、slug。
  • 生成完整 FrontMatter 并拼接正文。

阶段三:Markdown 输出


  • 将生成的 Markdown 内容转换为二进制格式。
  • 写入指定目录,文件名沿用原始基础名,扩展名 .md。
  • 批量完成 Markdown 文件生成,确保格式统一。

2. 批量触发脚本说明


功能


  • 遍历指定草稿目录,筛选 .md 和 .txt 文件。
  • 将文件名封装为 JSON 负载,通过 HTTP POST 请求发送至 n8n Webhook。
  • 输出每个文件的触发状态,便于监控。

脚本逻辑


  • 使用 Python 的 os 模块遍历目录。
  • 使用 requests 库发送 HTTP 请求。
  • 异常处理保证网络请求稳定性。
  • 支持批量触发工作流,自动化处理草稿文件。

运行方式


cd ~/n8n/workflow
python3 "ContentTXT + FrontMatter to ContenMD.py"

备注


  • 若报错提示 ModuleNotFoundError: No module named 'requests':系统自带 Python 可能没装第三方包,请执行以下命令(使用 --user,避免权限与 SSL 问题):

    python3 -m pip install --user requests "urllib3<2.0"
    
  • 关于 LibreSSL 警告: macOS 自带的 Python3.9 使用 LibreSSL 2.8.3,过旧会触发 NotOpenSSLWarning: urllib3 v2 only supports OpenSSL 1.1.1+。 通过固定 urllib3<2.0 可完全避免。

  • 推荐配置环境(系统 Python):

    echo 'export PATH="$HOME/Library/Python/3.9/bin:$PATH"' >> ~/.zprofile
    source ~/.zprofile
    python3 -m pip install --upgrade pip --user
    python3 -m pip install --user requests "urllib3<2.0"
    

3. n8n 工作流


节点解析


  1. Webhook 节点
    • 接收 Python 脚本发送的文件名请求。
    • 触发后续处理节点。
  2. 读取文件节点
    • Read Chinese Content:读取草稿正文内容。
    • Read ZH Front Matter Template:读取 FrontMatter 模板(frontmatter.txt),提供统一字段结构。
  3. 设置来源节点
    • Set Chinese Source 和 Set Template Source:标记数据来源,区分正文与模板。
  4. 合并节点 (Merge Inputs)
    • 合并正文与模板数据,形成统一输入流。
  5. 生成 Markdown 节点 (Generate Markdown)
    • 自动解析日期、标题、slug。
    • 拼接模板 FrontMatter 与正文。
    • 输出完整 Markdown 文件内容,确保 FrontMatter 统一。
  6. 转换为二进制节点 (Convert to Binary)
    • 将字符串内容编码为 Base64,便于文件系统写入。
  7. 写入文件节点 (Save Markdown)
    • 将生成的 Markdown 文件写入 /data/posts/。
    • 文件名保留原始基础名,扩展名 .md。

运行方式


  • http://localhost:5678
  • workflow - Execute workflow

4. 附件与文件说明


  • ContentTXT + FrontMatter to ContenMD.json
    • n8n 工作流配置文件,定义节点及连接关系,实现自动化生成 Markdown 流程。
  • ContentTXT + FrontMatter to ContenMD.py
    • Python 脚本,批量扫描草稿并触发 Webhook。
  • frontmatter.txt
    • FrontMatter 模板文件,存放统一字段结构,保证生成 Markdown 文件格式一致。

5. 分段运作方式总结


  1. 触发阶段:Python 脚本扫描目录 → 发送 POST 请求 → 批量触发工作流。
  2. 处理阶段:Webhook 接收 → 读取文件与模板 → 数据标记 → 合并 → 生成 Markdown 内容。
  3. 输出阶段:内容编码 → 写入文件 → 生成完整 Markdown 文件。

通过分段运作方式,流程更加清晰,每个阶段职责明确,便于监控和排错。


6. 总结

  • Python 脚本 + n8n 工作流实现了从草稿到 Markdown 的全自动化批量处理。
  • 自动解析日期、标题、slug,并生成统一 FrontMatter。
  • 适用于博客、知识库、文档批量转换场景。
  • 提高生产效率,降低人工操作错误,增强内容管理的可维护性。