
AI 생성 기사를 자동으로 공개하지 않기 위한 QC 승인 파일 게이트: Python으로 만드는 공개 전 체크
요약
AI 생성 기사 파이프라인에서 품질 관리를 위해 Python으로 구현하는 QC 승인 파일 게이트 방식을 소개합니다. 생성과 공개 프로세스를 분리하여 승인 여부를 파일로 검증함으로써 자동화 과정에서의 신뢰성을 확보하는 방법을 다룹니다.
핵심 포인트
- AI 생성물과 공개 허가 프로세스의 엄격한 분리
- 채팅 기반 승인 대신 파일 기반의 기계적 검증 도입
- Slug와 채널 단위의 정밀한 승인 상태 확인
- 공개 직전 단계에서 최종 게이트를 두어 보안 및 품질 유지
AI로 기사를 쓰는 파이프라인을 만들면, 자기도 모르게 생성부터 공개까지 자동화하고 싶어집니다. 하지만 생성에 성공했다는 것과, 공개해도 좋다는 것은 별개의 문제입니다.
특히 Qiita나 Zenn 같은 기술 매체에서는, 내용이 빈약한 기사나 잘못된 코드를 양산하면 독자의 신뢰를 떨어뜨립니다. Agent Memories에서는 기술 기사 공개 전에 QC 담당자의 승인 파일을 필수로 하고 있습니다.
이 기사에서는 Python으로 만드는 심플한 QC 승인 파일 게이트를 소개합니다.
처음에 흔히 저지르는 운영 방식은, Discord나 Slack에서 "QC 통과했습니다"라는 말을 듣고, 그것을 본 담당자나 cron이 공개하는 방식입니다.
이 방식은 사람이 보고 있는 동안에는 작동합니다. 하지만 자동화가 진행되면 다음과 같은 문제가 발생합니다.
- 누가 승인했는지 기계적으로 검증할 수 없다
- 어떤 slug의 승인인지 모호해진다
- Qiita는 승인되었지만 Zenn은 미승인인 것과 같은 차이를 다루기 어렵다
- cron이 채팅의 문맥을 읽지 못한다
그래서 승인을 파일로 남깁니다.
{
"slug": "x-action-mcp-safety-gates",
"decision": "approved",
...
공개 스크립트는 이 파일이 없으면 공개하지 않습니다.
승인 파일은 공개하는 측과는 다른 담당 영역에 둡니다. 예를 들어 다음과 같은 구성입니다.
content/tech/
x-action-mcp-safety-gates.md
state/
...
기사를 쓰는 담당과 승인을 쓰는 담당을 분리함으로써, 스스로 쓰고 스스로 공개하는 우회 경로를 줄일 수 있습니다.
공개 스크립트 측에서는 slug와 channel을 지정하여 승인을 확인합니다.
import json
from pathlib import Path
QC_APPROVAL_DIR = Path("/home/node/.openclaw/workspace-alice/docs/agentmemories-publish-approvals")
...
이 함수에서는 다음 4가지를 확인합니다.
- 승인 상태(status)가 통과(passed)로 되어 있는가
- 승인자가 QC 담당자인가
- slug가 일치하는가
- channel이 일치하는가
Qiita와 Zenn에 동시에 내보내는 경우라도, 승인은 채널 단위로 확인합니다.
QC_CHANNELS = ("qiita", "zenn")
def has_qc_approval(slug: str, channel: str) -> bool:
candidates = [
...
이렇게 구성해 두면, dry-run 시 다음과 같이 반환할 수 있습니다.
{
"dry_run": true,
"slug": "x-action-mcp-safety-gates",
...
재고가 있는데 승인 대기 중인 것인지, 정말로 재고가 없는 것인지를 나누어 볼 수 있습니다.
실제 공개 처리에서는 쓰기(write)나 push 직전에 게이트를 둡니다.
def publish(item: dict[str, object], dry_run: bool = False) -> None:
slug = str(item["slug"])
if dry_run:
...
생성이나 재고 판정 시점이 아니라, 공개 직전에도 확인하는 것이 포인트입니다. 원고를 만든 후에 승인 파일이 사라지거나 slug가 교체되더라도, 마지막 출구에서 멈춥니다.
승인 파일은 공개 여부의 증적(evidence)이며, secret 저장소가 아닙니다. 다음과 같은 것은 넣지 않습니다.
- API token
- Cookie
- Auth header
- private repository의 비밀 정보
- 게시 대상 계정의 로그인 정보
필요한 것은 누가, 무엇을, 어느 매체에, 언제 승인했는가뿐입니다.
AI 생성 기사의 자동화에서는 생성 성공과 공개 허가를 분리해야 합니다.
최소한의 QC 승인 파일 게이트는 다음 정보를 검증합니다.
- slug
- channel
- decision
- approved_by
이를 공개 스크립트 직전에 두는 것만으로도, 리뷰되지 않은 기사가 Qiita/Zenn으로 흘러 들어가는 사고를 줄일 수 있습니다. Agent Memories에서는 이러한 작은 기계적 게이트와 사람의 QC를 조합하여, AI가 기사를 만들더라도 공개 판단까지는 자동으로 넘기지 않는 운영을 하고 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기