v0.2.0 — Writer Quality System + Scenario Bot + Blogger Publishing
v0.2.0 — Writer Quality System + Scenario Bot + Blogger Publishing
What's New
Writer Quality System Overhaul
- Brand voice & persona engine (
config/persona.json) — 코너별 톤, 구조, 금지 표현, 글쓰기 원칙 정의 - Corner-specific prompts — 쉬운세상/숨은보물/바이브리포트/팩트체크/한컷 각각 다른 톤과 필수 포함 요소
- Quality guardrail (
bots/article_schema.py) — 제목 길이, 본문 길이(코너별), h2 태그, 금지 표현 자동 검증 - Structured exceptions (
WriterErrorhierarchy) — CLI 미설치, 타임아웃, 빈 응답, API 에러 구분 - Retry with backoff — 타임아웃/빈 응답 시 자동 1회 재시도
Blogger Publishing Improvements
- HTML 이중 변환 버그 수정 — writer가 이미 HTML 출력 시 markdown 재변환하지 않음
- Blogger-optimized HTML 구조:
- Schema.org JSON-LD (SEO, persona 기반 author/publisher)
- 3줄 요약 섹션 (key_points)
- 접이식 목차 (h2 기반 자동 생성)
- AdSense 슬롯 (설정 가능한 위치)
- 출처 링크 섹션 (자동 생성)
- AI 면책문구 (기본값 자동 삽입)
- Label 전략 개선 — corner 1순위 + tags 보조, 최대 10개
Scenario Bot (New)
- 아이디어 또는 블로그 원고 → 포맷별 시나리오 자동 생성
- 3가지 포맷: 숏폼 대본 (30-60초), 롱폼 대본 (3-10분), 웹툰 시나리오 (4-8컷)
- media-forge handoff JSON 형식 —
visual_note(영어 프롬프트)로 이미지/영상 즉시 생성 가능 - Content types 설정 (
config/content_types.json) — 포맷별 제약조건, media-forge 연동 스키마
Infrastructure
- subprocess
encoding="utf-8"명시 (Windows cp949 재발 방지) - article_parser regex 관대화 (
\r\n전처리, 헤더 뒤 공백 허용) - Import 경로 통일 (
from bots.x import ...) - OpenClaw 응답 파서 추상화 (
_parse_response3단 fallback) - AGENTS.md — OpenClaw 에이전트 운영 가이드
Architecture
아이디어/뉴스 수집
↓
collector_bot → data/topics/
↓
writer_bot → data/originals/ → publisher_bot → Blogger
↓ ↓
scenario_bot → data/scenarios/ Telegram 알림
↓
media-forge (별도 프로젝트)
├── image.generate (웹툰 컷)
├── video.from-text (영상 클립)
└── audio tts (나레이션)
Files Changed
| File | Change |
|---|---|
config/persona.json |
New — 브랜드 보이스, 코너별 가이드, Blogger 설정, 시나리오 가이드 |
config/content_types.json |
New — 포맷 정의, media-forge 연동 스키마 |
bots/article_schema.py |
New — 섹션 상수, 품질 검증 함수 |
bots/scenario_bot.py |
New — 멀티포맷 시나리오 생성 봇 |
AGENTS.md |
New — OpenClaw 에이전트 운영 가이드 |
bots/engine_loader.py |
구조화 예외, retry, _parse_response 추상화 |
bots/writer_bot.py |
persona 기반 코너별 프롬프트, guardrail, retry |
bots/publisher_bot.py |
HTML 이중변환 수정, Blogger HTML 템플릿, JSON-LD 개선 |
bots/article_parser.py |
regex 관대화, 상수 모듈 참조 |
config/engine.json |
agent_name → "main" |
bots/blog_config.py |
scenarios 데이터 폴더 추가 |
Usage
# 블로그 글 작성
python bots/writer_bot.py --topic "Claude Code 사용법" --corner 쉬운세상
# 시나리오 생성
python bots/scenario_bot.py --idea "AI 코딩 도구 비교" --format short_script
python bots/scenario_bot.py --from-article data/originals/article.json --format webtoon_scenario
# 발행
python bots/publisher_bot.py