Content-studio — керований конвеєр контенту

Керований рушій контент-продакшну на LangGraph із трьома поверхнями: web-кабінет, MCP-сервер і WordPress-плагін. Verifier-цикли, fail-closed human-гейти, RAG-ґраундинг.

Роль
Автор і єдиний інженер
Стек
PythonLangGraphClaudePostgreSQLFastAPIMCPWordPress
Конвеєр контенту на LangGraph: intake → research (з циклом перевірки) → plan → підтвердження людиною → написання секцій → review (з циклом revise) → фінальне підтвердження → publish, керований кабінетом, MCP-сервером і WordPress-плагіном.

Особистий проєкт: система контент-продакшну, побудована так, щоб ШІ продукував лонгрід у масштабі не брешучи й не публікуючи без рев’ю. Один керований рушій — три способи ним керувати: web-кабінет, MCP-сервер і WordPress-плагін.

Рушій

Рушій — це LangGraph StateGraph. Агенти — реальні виклики Claude; потік керування — це код. Запуск проходить intake → harvest → brief → domain_brief → research → plan → написання секцій → assemble → review → package → publish, і найцікавіше — у контролях між цими стадіями.

Два незалежні verifier-цикли. research ⇄ research_check і review ⇄ revise — це цикли producer → verifier → regenerate: окрема перевірка знаходить, що ще відкрите, і повертає агента назад, обмежена бюджетом. Те, що лишається відкритим, коли бюджет вичерпано, виноситься людині, а не ховається.

Два human-гейти, що fail-closed. approve_plan і approve_final зупиняють граф через LangGraph interrupt(). Підтвердив — далі; відхилив із правками — запуск повертається (до plan чи revise) й застосовує їх; відхилив без нічого — запуск ескалює, а не вгадує. На непідтвердженій гілці не відбувається нічого незворотного, тож відкочувати нічого.

Fan-out і batch-лінія. Після підтвердження плану секції пишуться паралельно (Send на секцію). Batch-лінія веде написання секцій і review через Anthropic Message Batches API приблизно вдвічі дешевше для масових запусків, де не треба чекати людині. Кожен вузол має retry-політику й типізований шлях помилки, що ескалює, а не падає мовчки.

Ґраундинг

Дослідження заземлене, а не вигадане. У рушія власний шар пошуку — база знань із чанкуванням, ембедингами, реренкінгом і сервісом ембедингів — плюс живий web-пошук (SERP і Perplexity). Твердження простежуються до джерел, а рівні якості задають планку: суворіший рівень вимагає перевірених первинних джерел і ґраундингу на кожне твердження.

Чому їй можна довіряти

Агенти дістаються моделі лише через єдиний опосередкований шов, який ще й обліковує вартість проти бюджету та стелі на запуск. Паузи людини довговічні: з Postgres-checkpointer призупинений запуск переживає рестарти й працює між репліками (для локальної розробки — фолбек у пам’ять). Сервіс мультитенантний — акаунти, сайти й облік використання — тож працює більш ніж для одного клієнта.

Три поверхні

  • Web-кабінет — сервіс на FastAPI: вставити бриф або завантажити .docx/.md/.txt, обрати рівень і локаль, запустити й дивитися живий статус по стадіях, потім завантажити статтю (Markdown/HTML) і JSON. Масові плани женуть багато статей без людини в очікуванні; токен-локнуті ендпоінти та стеля вартості на запуск тримають витрати в межах.
  • MCP-сервер — відкриває той самий довговічний конвеєр як MCP-інструменти, тож Claude Desktop чи Claude Code керують ним (зі стелею вартості й авторизацією) без UI. Приймає тему, вільний опис, прийнятий бриф або ТЗ, виконане дослівно.
  • WordPress-плагін — тонкий PHP 8.2+ клієнт, що сам не запускає модель: із wp-admin він стартує запуск, показує живий прогрес і збирає результат у нативний допис — Markdown у блоки Gutenberg, обкладинку й секційні зображення, JSON-LD і SEO-мета в Rank Math чи Yoast. Дописи за замовчуванням draft. Його логіка — у WP-незалежних, юніт-тестованих класах.