Claude Code로 SEO 랜딩 288페이지 뽑아낸 방법 — 171번의 tool call
67시간 26분짜리 세션이었다. 171번의 tool call, 101번의 Bash 실행. 사주 앱(saju_global)에 SEO 궁합 랜딩 288페이지를 구현하는 작업이었다.
TL;DR writing-plans 스킬로 플랜 먼저 짜고, subagent-driven-development로 실행했다. 핵심은 Claude가 백그라운드에서 스크립트를 돌리는 동안 나는 아무것도 안 해도 됐다는 것이다.
288페이지가 필요한 이유
궁합 랜딩 페이지는 조합이 필요하다. 12간지 × 12간지 = 144쌍, 여기에 남녀 순서를 뒤집으면 288페이지. 페이지마다 다른 콘텐츠를 넣어야 검색 엔진이 의미 있는 페이지로 인식한다. 수동으로는 불가능한 규모다.
스펙은 docs/superpowers/specs/2026-04-09-seo-compatibility-pages-design.md에 있었다.
writing-plans 먼저, 실행은 나중에
복잡한 작업을 바로 구현하려 들면 항상 중간에 방향이 흔들린다. writing-plans 스킬을 먼저 돌린 이유가 여기 있다.
플랜은 docs/superpowers/plans/2026-04-10-seo-compatibility-pages.md로 저장됐다. 태스크별로 쪼개진 실행 가능한 단위들. 이 플랜이 있어야 subagent에게 명확한 스코프를 줄 수 있다.
실행 방식은 두 가지 선택지가 있었다:
1. Subagent-Driven — 태스크별 독립 에이전트, 중간 리뷰, 빠른 반복
2. Inline Execution — 현재 세션 순차 실행
나는 “1”을 골랐다.
”근데 그냥 CLI써도 되잖아?”
플랜을 짜고 있는 중간에 이 질문을 던졌다. 맞다. npx tsx scripts/generate-compat-content.ts를 직접 터미널에서 돌려도 됐다. 그럼 subagent 방식과 뭐가 다른가?
차이는 판단이다. CLI는 실행만 한다. subagent-driven-development는 실행 중에 무언가 이상하면 스스로 판단하고 방향을 바꾼다. 스크립트가 중간에 멈추거나, 생성된 콘텐츠가 품질 기준에 미달하거나, API rate limit에 걸리면—CLI는 그냥 에러를 뱉는다. Claude는 대응한다.
실제로 이 세션에서는 백그라운드 태스크(nohup npx tsx scripts/generate-compat-content.ts)를 여러 번 돌렸다. 내 쪽에서 보낸 메시지는 거의 “잘되고 있어?”, “다됐어?”, “너가해줘” 수준이었다.
나: 잘되고 있어?
Claude: [로그 확인 후] 현재 73/288 페이지 생성 완료. 예상 완료까지 약 12분 남았다.
나: 머지 너가해 그리고 2번 해
Claude: [git merge 실행, 스크립트 2회 실행]
이게 CLI와의 차이다. 나는 맥락만 줬고, 실행과 판단은 Claude가 했다.
워크트리 전략
main 브랜치에서 바로 작업하지 않았다. Claude가 먼저 git 상태를 확인하고 워크트리를 생성했다.
git worktree add .claude/worktrees/seo-compat-pages feature/seo-compat-pages
288페이지 콘텐츠를 생성하는 작업은 실수가 나면 되돌리기 어렵다. zodiac-compat-content.json에 288개 항목을 한 번에 쓰는 작업이기 때문에 격리된 환경이 필요했다. 워크트리 덕분에 main 브랜치를 건드리지 않고 실험할 수 있었다.
도구 사용 패턴
171번의 tool call 분포:
- Bash(101) — 가장 많다. 스크립트 실행, 로그 확인, git 조작
- Read(20) — 스펙 파일, 기존 코드 패턴 파악
- Agent(17) — 독립 서브에이전트 디스패치
- TaskUpdate(14), TaskCreate(7) — 태스크 추적
Bash가 59%를 차지한다는 건, 이 세션의 핵심이 코드 편집보다 실행과 모니터링이었다는 뜻이다. Write가 3번밖에 없는 게 그 증거다. 2개 파일 생성(zodiac-compat-content.json과 플랜 파일)이 전부였다.
콘텐츠 자동 생성은 파일을 편집하는 게 아니라, 스크립트를 돌려서 결과물을 만드는 방식이다. Claude Code의 역할은 그 스크립트가 제대로 돌아가는지 감시하고, 필요할 때 개입하는 것이었다.
스케일 작업에서 배운 것
288개짜리 콘텐츠 생성을 한 세션에서 완주하면서 몇 가지가 확실해졌다.
첫째, 플랜 없이 subagent를 쓰면 범위가 흐릿해진다. writing-plans로 먼저 명세를 만들었기 때문에 각 서브에이전트에게 “이 태스크만 해라”는 명확한 경계를 줄 수 있었다.
둘째, 백그라운드 실행은 모니터링 루틴을 함께 설계해야 한다. nohup으로 돌리고 “잘되고 있어?” 물어보는 게 유일한 인터페이스였는데, 로그 위치와 포맷을 미리 정해두지 않으면 상태 파악이 힘들다.
셋째, Bash 101번은 정상이다. 스케일 작업은 필연적으로 실행-확인-재실행 루프를 많이 돈다. 이 루프를 Claude가 자율적으로 돌릴 수 있다는 게 핵심이다.
세션 요약
- 세션: 1회, 67시간 26분
- 모델: claude-opus-4-6
- tool calls: 171 (Bash 101, Read 20, Agent 17)
- 생성 파일: 2개 (
zodiac-compat-content.json, 플랜 파일) - 결과: SEO 궁합 랜딩 288페이지 콘텐츠 생성 완료
Comments 0