PLUTUS MCP v2.1 개발 스토리|이미지 중복과 발행 오류를 고친 AI 출판 엔진

ChatGPT에게 “블로그에 올려줘”라고 말하는 데는 3초가 걸린다. 하지만 그 뒤에서 이미지가 두 번 나오지 않게 하고, 저장 실패처럼 보이는 요청을 안전하게 처리하는 데는 며칠의 디버깅이 필요했다.
PLUTUS Report MCP v2.1은 그 간극을 줄이기 위한 자체 ChatGPT 연결 시스템의 안정화 패치다. FastMCP, Google OAuth, Python, Nginx, Ubuntu, WordPress REST API와 SQLite를 결합해 원고 생성부터 저장 결과 검증까지 이어지는 출판 경로를 만든다.
01개발 스토리: 성공한 API, 실패한 화면
기존 리포트 등록 도구는 WordPress 초안 생성을 자동화했지만 운영 중에는 제목 중복, 대표 이미지 중복, PNG 하단 잘림, 공개 게시글 수정 권한 문제를 경험했다. HTTP 202 응답이 곧 WordPress 공개를 뜻하는 것도 아니었다. 외부 저장 결과가 불확실한 요청에 그대로 재시도하면 같은 글이 두 개 생성될 위험도 있었다.
그래서 v2.1의 목표를 단순한 기능 추가가 아니라 입력 검증, 이미지 처리, 멱등성, 백업, 재조회와 초안 중심 배포로 잡았다. 기존 OAuth와 submit_report/inbox 경로는 유지하고 신규 제출 경로만 별도로 추가했다.
02시스템 아키텍처
ChatGPT → MCP → WordPress
기존 Report API → inbox → Publisher 경로는 계속 유지됩니다.
ChatGPT는 콘텐츠와 도구 호출을 담당하고, MCP 서버는 권한과 데이터 계약을 확인한다. 새 v2.1 도구는 WordPress REST API에 직접 초안을 생성한다. 이후 저장된 제목·본문·상태를 다시 확인하며, 공개 변경은 별도 도구에서 명시적으로 수행한다.
03v2.1 패치 핵심
| 문제 | 패치 내용 |
|---|---|
| 대표 이미지 중복 | featured_media와 본문 이미지 분리 |
| 이미지 손상 | 실제 PNG/JPEG/WEBP 디코딩 검증 |
| 그림 삽입 위치 | placeholder 기반 본문 이미지 위치 지정 |
| 이미지 필수 제약 | 이미지 없는 HTML 초안도 지원 |
| 중복 등록 | report_id + payload 해시를 SQLite에 보존 |
| API 타임아웃 | 불확실한 결과는 재시도보다 수동 대조 |
| 상태 추적 부족 | processing/draft_saved/needs_review 등 기록 |
이미지는 첨부 파일이라는 사실과 WordPress 본문에 표시되는 방식이 구별되어야 한다. 대표 이미지는 featured_media로 유지하고 본문 설명용 그림은 필요한 위치에만 넣는다. 또한 파일 확장자 검사만으로는 충분하지 않으므로 이미지 전체를 실제 디코딩해 손상을 감지한다.
0415개 MCP 도구: 신규 4개
기존 11개 도구를 보존하며 get_report_schema, validate_report, submit_report_v2, get_report_status를 추가했다. get_report_schema는 v2 입력 사양을 설명하고 validate_report는 WordPress를 변경하지 않은 채 데이터를 검사한다. submit_report_v2는 초안 저장 전용이며 get_report_status는 작업 상태 기록을 조회한다.
05왜 SQLite로 중복 요청을 막을까
WordPress POST 요청을 보낸 뒤 네트워크 연결이 끊겼다면 결과를 모른다. 이때 무조건 재시도하면 이미 만들어진 글을 다시 생성할 수 있다. v2.1은 report_id와 payload 내용을 해시로 묶어 영속 보관한다. 같은 ID·같은 내용은 기존 결과를 재사용하고, 동일 ID의 다른 내용은 충돌로 처리한다.
SQLite 상태는 processing, draft_saved, needs_review, verification_failed 등으로 구분한다. 단, 다른 서버에서 상태 DB를 공유하지 않거나 관리자가 DB를 삭제한다면 전역적인 exactly-once 보장은 성립하지 않는다. 따라서 상태 DB와 원격 WordPress의 게시글을 함께 확인하는 운영 원칙이 필요하다.
06테스트와 배포 과정
운영 서버 배포 전 신규·기존 단위 테스트 16개를 통과했고, ChatGPT의 도구 목록에서도 15개가 인식됐다. 실제 신규 제출 테스트 중에는 누락된 upload_binary 함수와 한글 차트 폰트가 발견됐다. 함수는 보정하고, 차트 폰트는 별도 설치가 필요하다는 점을 확인했다. 이 과정 자체가 ‘테스트 코드 통과’와 ‘실제 운영 환경 성공’이 다르다는 교훈을 보여준다.
이번 글은 새로운 submit_report_v2 경로를 통해 실제 WordPress 초안으로 등록해 보는 실전 검증 사례다. 다만 브라우저에서 이미지 전체가 보이는지와 모바일 렌더링은 저장된 HTML만으로 확인할 수 없으므로 향후 자동화 과제로 남긴다.
07미래의 AI 자동 출판 엔진
PLUTUS에서는 투자 리포트와 데이터 분석을, 에이젝트에서는 AI 기술과 소프트웨어 프로젝트를 운영하되, 원고 검증·파일 업로드·게시글 상태 관리라는 공통 기능은 재사용하는 것이 목표다. 다음 단계는 이미지 브라우저 렌더링 검사, 발행 로그, 이미지 교체와 버전 복원, 예약 발행의 운영 안정화다.