我搭建了一个将Obsidian中AI咨询记录自动发布到WordPress的流水线

我搭建了一个将Obsidian中AI咨询记录自动发布到WordPress的流水线

我搭建了一个将Obsidian中AI咨询记录自动发布到WordPress的流水线

前言

与AI进行技术咨询时,有时会有"这段对话以后会有用"的感觉。然而实际上,聊天记录往往被埋没,无法作为知识加以利用。

本文介绍将粘贴到Obsidian中的AI咨询记录自动转化为博客文章、以草稿形式发布到WordPress的流水线的设计与实现要点。希望能为有同样困扰的人提供参考。


流水线全貌

处理流程简单分为4个步骤。

  1. 输入 — 将聊天记录以Markdown格式保存到Obsidian的Inbox文件夹
  2. 触发 — 检测文件变化并启动处理
  3. 处理 — 用Claude API将记录转换为博客文章格式
  4. 输出 — 通过WordPress REST API自动发布为草稿
Obsidian (Markdown)
  └─ watchdog(文件监控)
       └─ Claude API(文章转换)
            └─ WP REST API(草稿发布)

技术栈选型

文件监控:Python watchdog

Python的watchdog库能实时检测指定目录的变更事件。由于Obsidian每次保存时都会触发事件,用作触发器再合适不过。

from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler

class MarkdownHandler(FileSystemEventHandler):
    def on_created(self, event):
        if event.src_path.endswith(".md"):
            process_file(event.src_path)

observer = Observer()
observer.schedule(MarkdownHandler(), path="./inbox", recursive=False)
observer.start()

文章转换:Claude API

不直接发布记录,而是将"文章化prompt"传入Claude API进行格式化。这里的关键是提前确定文章格式

  • 保留问答形式 → 易于传达对话脉络
  • 转为摘要文章 → 便于快速浏览和阅读
  • 混合形式 → 引言 + 问答摘录 + 总结

Prompt示例:

prompt = f"""
请根据以下AI咨询记录,撰写一篇技术博客文章。
- 使用H2/H3标题
- 适当使用代码块
- 提议3个标签
- 输出格式:JSON {{ "title": "", "content": "", "tags": [] }}

---记录---
{raw_log}
"""

WordPress发布:REST API

使用WP REST API可从外部以编程方式发布。目前使用Application Password进行认证是最佳实践。

import requests
import base64

def post_to_wordpress(title, content, tags):
    credentials = base64.b64encode(b"username:app_password").decode("utf-8")
    headers = {"Authorization": f"Basic {credentials}"}
    
    payload = {
        "title": title,
        "content": content,
        "status": "draft",  # 必须以草稿形式发布
        "tags": tags,
    }
    
    response = requests.post(
        "https://example.com/wp-json/wp/v2/posts",
        json=payload,
        headers=headers,
    )
    return response.json()

设计中容易纠结的地方

保留多少记录的"原始感"

与AI的互动包含试错过程。全部格式化之后,"为何得出该结论"的上下文就会丢失。保留部分问答形式,可以让读者更容易重现思考过程。

标签与分类的自动赋予

在Claude API的响应中包含标签候选,可以将手动工作降为零。但在精度稳定之前,将发布状态设为draft让人工审核的运营方式更为稳妥。

防止重复处理

由于watchdog每次文件保存都会触发事件,可能出现同一文件被处理多次的情况。用记录已处理文件的DB(SQLite足矣)或文件哈希管理来防止是个好办法。


总结

这条流水线的核心是"先确定文章输出格式"。格式确定后,prompt设计和代码实现都会顺畅推进。

不必一开始就把一切都自动化,从转换→审核→手动发布的流程开始,待质量稳定后再切换至自动发布,这才是现实的做法。与AI的对话,整理之后完全具备成为博客文章的质量。让它们被埋没实在可惜。