ObsidianのAI相談ログをWordPressに自動投稿するパイプラインを作った
はじめに
AIと技術的な相談をしていると、「この会話、後で役に立ちそうだな」と思う瞬間がある。しかし実際には、チャット履歴は埋もれていくだけで、ナレッジとして活かせていないことが多い。
この記事では、ObsidianにコピペしたAI相談ログを自動でブログ記事化し、WordPressに下書き投稿するパイプラインの設計と実装ポイントを紹介する。同じ課題を抱えている人の参考になれば幸いだ。
パイプラインの全体像
処理の流れはシンプルに4ステップに分けられる。
- Input — ObsidianのInboxフォルダにチャットログをMarkdownとして保存
- Trigger — ファイル変更を検知して処理を起動
- Process — Claude APIでログをブログ記事フォーマットに変換
- Output — 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
ログをそのまま投稿するのではなく、Claude APIに「記事化プロンプト」を渡して整形する。ここでのポイントは記事フォーマットを事前に決めておくことだ。
- Q&A形式で残す → 対話の流れが伝わりやすい
- 要約記事にする → スキャンしやすく読みやすい
- ハイブリッド → 導入+Q&A抜粋+まとめ
プロンプト例:
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とのやり取りには、試行錯誤の過程が含まれている。それを全部整形してしまうと、「なぜその結論に至ったか」という文脈が失われる。Q&A形式を一部残すことで、読者が追体験しやすい記事になる。
タグ・カテゴリの自動付与
Claude APIのレスポンスにタグ候補を含めておくと、手動作業をゼロにできる。ただし精度が安定しないうちは、投稿ステータスをdraftにして人間がレビューする運用が安全だ。
二重処理の防止
watchdogはファイル保存のたびにイベントを発火するため、同じファイルを複数回処理してしまうケースがある。処理済みファイルを記録するDB(SQLiteで十分)かファイルのハッシュ管理で防ぐとよい。
まとめ
このパイプラインの肝は「記事の出力フォーマットを先に決める」ことだ。フォーマットが決まれば、プロンプト設計もコード実装もスムーズに進む。
最初からすべてを自動化しようとせず、変換→レビュー→手動公開のフローで始めて、品質が安定してきたら自動公開に切り替えるアプローチが現実的だ。AIとの会話は、整理すれば十分ブログ記事になるクオリティを持っている。埋もれさせるのはもったいない。