발행
글이 준비됐으면 Blogger에 올립니다. 발행 전에 두 게이트(AI-smell, AdSense)가 글을 한 번 더 거르고, 통과한 글만 업로드됩니다. 실제 업로드 전에 dry-run으로 먼저 확인하는 호흡이 안전합니다.
1) 자격증명 세 가지 확인
섹션 제목: “1) 자격증명 세 가지 확인”실제 발행에는 세 파일이 필요합니다.
.env에BLOG_ID_KO와BLOG_ID_ENscripts/credentials.json(Google OAuth 클라이언트)scripts/token.json(첫 발행 때 자동 생성)
블로그 ID를 모르면 list-blogs 명령으로 본인 계정의 블로그 목록과 ID를 확인할 수 있습니다. 확인한 ID를 .env에 적습니다.
BLOG_ID_KO=1234567890BLOG_ID_EN=9876543210token.json은 미리 만들 필요가 없습니다. 첫 발행 때 브라우저로 Google 동의를 한 번 하면 자동으로 생깁니다.
2) staging 확인
섹션 제목: “2) staging 확인”올라갈 준비가 된 글을 먼저 봅니다. Claude Code에 “발행 대기 글 보여줘”라고 하거나 직접 명령을 칩니다.
./scripts/deploy.sh staging정상 화면: _workspace/posts/new/ 아래 대기 중인 글 목록이 뜹니다. 방금 쓴 글의 slug가 보이면 정상입니다.
3) dry-run 먼저
섹션 제목: “3) dry-run 먼저”실제 업로드 전에 결과를 미리 봅니다.
./scripts/deploy.sh publish-new --slug {slug} --dry-run{slug}는 방금 쓴 글의 slug로 바꿉니다. dry-run은 어떤 글이 어느 블로그에 올라갈지 보여주되 실제로는 올리지 않습니다. 두 게이트도 이 단계에서 다시 확인합니다.
막힌 화면:
- AI-smell 게이트 불합격 → 글이 차단됩니다. AI 티가 짙다는 뜻이라, “AI 티 줄여서 다시 써줘”라고 하면 오케스트레이터가 Phase 2로 돌아가 고칩니다.
- 자격증명 누락 → dry-run과 preflight까지만 돌고 멈춥니다. 어느 파일이 없는지 보고하니, prerequisites의 OAuth 항목으로 돌아갑니다.
4) 실제 발행
섹션 제목: “4) 실제 발행”dry-run이 깔끔하면 실제로 올립니다.
./scripts/deploy.sh publish-new --slug {slug}첫 발행이면 이 자리에서 브라우저가 열리며 Google 동의를 묻습니다. 동의하면 token.json이 생기고 업로드가 진행됩니다.
slug를 꼭 박습니다. slug 없이 부르면 staging의 모든 글이 대상이 돼서, 아직 안 올릴 글까지 같이 올라갈 수 있습니다.
5) 발행 후 확인
섹션 제목: “5) 발행 후 확인”업로드가 끝나면 글이 archive로 옮겨지고 메타데이터가 박혔는지 봅니다.
find _workspace/posts/ko _workspace/posts/en -iname "{slug}.md" -print정상 화면: 글이 posts/new/에서 posts/로 옮겨지고, frontmatter에 blogger_url이 채워집니다. 그 URL을 열면 실제 발행된 글이 보입니다. 한글본과 영문본을 둘 다 올렸다면 두 파일 경로가 떠야 합니다.
6) 이미 올린 글을 고칠 때
섹션 제목: “6) 이미 올린 글을 고칠 때”발행한 글을 고쳐 다시 올리면 base가 이전 버전을 먼저 백업합니다. 재발행은 AI-smell 게이트를 우회해야 하는 경우가 있어 --skip-gate 플래그가 있지만, 새 글의 첫 발행에는 쓰지 않습니다. 첫 발행은 게이트를 정상적으로 통과해야 합니다.
첫 글이 올라갔으면 automated-safety-net에서 발행 전에 무엇이 자동으로 걸러졌는지를 봅니다. 발행한 글을 퍼뜨리고 싶으면 promote로 갑니다.