Я створив pipeline для автоматичної публікації в WordPress журналів консультацій з AI з Obsidian
Вступ
Коли консультуєшся з AI щодо технічних питань, іноді виникає відчуття "ця розмова стане в нагоді пізніше". Однак насправді журнали чатів часто заховуються і не використовуються як знання.
У цій статті я представляю проектування та ключові моменти реалізації pipeline, який автоматично перетворює журнали консультацій з AI, вставлені в Obsidian, на статті блогу та публікує їх у вигляді чернеток у WordPress. Сподіваюся, це стане в нагоді тим, хто стикається з тією ж проблемою.
Загальний огляд pipeline
Процес просто поділяється на 4 кроки.
- Вхід — Збереження журналів чату у вигляді Markdown у папці Inbox в Obsidian
- Тригер — Виявлення змін файлу і запуск обробки
- Обробка — Перетворення журналу у формат статті блогу за допомогою Claude API
- Вихід — Автоматична публікація у вигляді чернетки через WordPress REST API
Obsidian (Markdown)
└─ watchdog (моніторинг файлів)
└─ Claude API (конвертація статті)
└─ WP REST API (публікація чернетки)
Вибір технологічного стеку
Моніторинг файлів: Python watchdog
Бібліотека watchdog Python може виявляти події зміни у вказаній директорії в реальному часі. Оскільки подія спрацьовує щоразу, коли 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 спрацьовує при кожному збереженні файлу, один і той же файл може оброблятися кілька разів. Краще запобігати цьому за допомогою БД, що записує оброблені файли (SQLite достатньо), або управлінням хешем файлу.
Підсумок
Суть цього pipeline — "спочатку визначити формат виводу статті". Коли формат визначено, проектування промпту та реалізація коду просуваються плавно.
Замість того щоб намагатися автоматизувати все з самого початку, практичним підходом є початок з потоку конвертація → перевірка → ручна публікація, а потім перехід на автоматичну публікацію, коли якість стабілізується. Розмови з AI мають достатню якість, щоб стати статтями блогу, якщо їх організувати. Шкода дозволяти їм зникати.