Our AI Editor Agent - AI 기반 CMS 콘텐츠 통합 운영
Claude, Heremes, Codex 같은 AI 에이전트가 WordPress, Ghost, Strapi, Notion, Google Docs의 콘텐츠를 하나의 일관된 방식으로 읽고, 작성하고, 발행·관리할 수 있게 해 주는 멀티 CMS 콘텐츠 운영 툴킷을 소개합니다.
이런 저런 용도로 AI 활용 범위를 넓혀나가다보니, 문득 버려지다시피한 OurDigital 콘텐츠 채널을 최소한의 시간과 노력으로도 최적의 결과물을 얻어낼수 있는 방법이 있다면 좋겠다 생각이 들었습니다.
순전히 게으른자의 변명일수 있지만, 글을 쓰고 무언가를 만든다는게, 꾸준히 지속하는 건 솔직히 쉬운 실천이 아니지 않나요? 그러다보니 차일피일 미뤄둔 아이디어들, 정리가 필요한 생각들, 새롭게 배우고 익히는 것들을 정돈해보자는 취지에서 시작한 이 채널들도 하염없이 먼지만 쌓이고, 업데이트가 언제 이뤄졌는지 기억도 못하는 지경이 되어버렸습니다.
AI 툴을 콘텐츠 기획, 편집, 발행 그리고 최적화 관리 전반에 걸쳐 유기적으로 관리할수 있도록 해보자는 생각이 들어서, 그동안 익혀온 잡다한 기술을 쥐어짜서 손에 맞는 도구를 하나 만들어보게 되었습니다.
Our AI Editor Agent는 MCP 도구로서 테스트를 해보다가, 이런저런 CLI(Command Line Interface) 도구를 활용한 리서치와 콘텐츠 분석을 붙여보게 되고, 이왕 이렇게 된거 콘텐츠 소스도 만들고, 필요한 일러스트나 그래픽도 만들어 붙여볼수 있는 툴을 만들게 되었습니다.
무엇을 할 수 있나요?
- Notion·Google Docs 초안을 CMS 네이티브 형식으로 발행
- 여러 CMS의 콘텐츠를 하나의 워크플로우에서 검색·편집·분석
- SEO 제목·설명·슬러그와 구조화 데이터(JSON-LD) 생성·검증
- 캠페인 브리프를 랜딩 페이지 초안으로 변환
- OpenAI 또는 Gemini로 Feature 이미지 생성·설정
사용 방법 세 가지
- MCP 서버 — CMS를 MCP 도구로 노출하고 AI Agent에서 직접 호출
- CLI('oa' command) — 연결 점검부터 승인 기반 발행·롤백까지 명령줄로 처리
- 웹 콘솔 — 팀을 위한 Cloudflare 보호 UI. 콘텐츠 허브·랜딩 페이지·SEO·스키마·발행 큐
추천 편집 워크플로우
- Notion 또는 Google Docs에서 초안 작성
- 블록 변환 미리보기
- 대표 이미지 생성 또는 선택
- 대상 CMS에 초안(draft)으로 발행
- SEO·콘텐츠 최적화 진단
- 검토 후 발행 또는 예약
혼선을 방지하기 위한 기본 설정
- 새 사이트는 읽기 전용으로 시작
- 생성된 콘텐츠는 기본 초안(draft)으로 셋팅
- 발행·삭제·배포는 승인 게이트 적용
- API 키는 지정된 안전한 저장소에 보관
(참고: 이 글은 Our AI Editor의 Ghost 에디터(our-ghost-editor)로 작성·발행을 테스트해보고 있습니다)
부록 — 에이전트 검증 테스트 & 발견된 버그 메모
작성일 2026-06-05. Our AI Editor의 Ghost 에디터(our-ghost-editor)를 이 블로그(blog.ourdigital.org)에 대해 실제로 구동해 읽기·생성·수정 경로를 검증했습니다. 이 메모 자체가 버그 수정 후 ghost_update_post에 lexical '객체'를 그대로 전달해 추가된 결과입니다.
검증된 동작
- JWT 인증(Ghost Admin API, id:secret) 및 요청 큐 정상
- ghost_posts_search — 라이브 블로그 읽기 경로 정상
- ghost_add_post — 초안 생성 및 본문 렌더 확인
- ghost_add_post(html 입력) — source=html 적용으로 본문 정상 저장(임시 초안 생성 후 ghost_delete_post로 삭제)
- ghost_update_post(lexical 객체 입력) — 게시글 본문 추가 성공(이 메모)
발견·수정된 버그
- lexical 직렬화 누락: 도구가 lexical을 객체로 전달했으나 Ghost는 JSON 문자열을 요구 → 422 Validation error. 핸들러에서 객체를 직렬화하도록 수정.
- html 무시: 클라이언트가 ?source=html 쿼리를 보내지 않아 html 본문이 빈 글로 저장됨 → post/put에 source=html 지원 추가.
수정 위치: packages/our-ghost-editor의 src/tools.ts(buildPostBody 헬퍼) 및 src/client.ts(post/put 쿼리 파라미터).