Facebook 광고를 운영하는 Claude 스킬을 만들었다 — 코드 공개
Graph API를 통해 Meta Ads 계정을 읽고, 저성과 광고를 식별하고, 브랜드 보이스로 광고 카피를 다시 쓰고, 광고 관리자를 건드리지 않고 새 광고 세트를 만드는 Claude 스킬을 구축했다. 전체 코드는 300줄 미만의 TypeScript다. 효과는 즉각적이었다: 주간 광고 관리 시간을 약 3시간에서 약 20분으로 줄였다.
매주 수요일. 28,400명+ 구독자. 핵심만.
✓ 받은편지함을 확인하세요 — 확인 링크를 클릭해 가입을 완료하세요.
✓ 구독이 완료되었습니다!
✓ 이미 목록에 있습니다.
목차
2026년 6월 업데이트.
TL;DR: Graph API를 통해 Meta Ads 계정을 읽고, 저성과 광고를 식별하고, 브랜드 보이스로 광고 카피를 다시 쓰고, 광고 관리자를 건드리지 않고 새 광고 세트를 만드는 Claude 스킬을 구축했다. 전체 코드는 300줄 미만의 TypeScript다. 효과는 즉각적이었다: 주간 광고 관리 시간을 약 3시간에서 약 20분으로 줄였다.
[운영자의 시각] Pickleland와 내 컨설팅 브랜드를 위해 광고를 운영한다. 두 계정, 다른 타깃, 끊임없는 크리에이티브 피로. 모델이 해야 할 일을 하면서 일요일 오후를 광고 관리자에서 보내고 있었다. 그래서 자동화했다.
Facebook 광고를 수동으로 관리하는 것을 그만둔 이유
Facebook 광고를 운영하는 실제 작업은 세 가지로 나뉜다:
- 모니터링 — 어떤 광고 세트가 돈을 태우고 있는지, 벌고 있는지 확인하기
- 진단 — 왜 성과가 저조한지 파악하기 (크리에이티브 피로? 잘못된 타겟팅? 랜딩 페이지?)
- 반복 — 새 카피 작성, 새 광고 세트 생성, 예산 조정
작업 1은 기계적이다. 작업 3도 대부분 기계적이다 (보이스 제약이 있지만). 작업 2는 판단이 필요하다 — 사람이 루프에 있을 때 이점이 있는 유일한 것이다.
Claude 스킬은 1과 3을 수행할 수 있다. 나는 무언가 게시되기 전에 작업 2의 결과를 검토한다. 이것이 내가 선택한 아키텍처다.
Meta Graph API 설정 (귀찮은 부분)
코드보다 먼저: Meta Business 계정, 시스템 사용자, 영구 액세스 토큰이 필요하다. Facebook의 개발자 포털은 불편하지만 경로는 이렇다:
- developers.facebook.com에서 Meta App 생성 (유형: Business)
- Marketing API 제품 추가
- 비즈니스 포트폴리오 → 설정 → 사용자 → 시스템 사용자에서 시스템 사용자를 생성하고 광고 계정에
ADVERTISER역할 부여 - 다음 권한으로 토큰 생성:
ads_read,ads_management,business_management
토큰을 META_ACCESS_TOKEN으로, 광고 계정 ID(형식: act_XXXXXXXX)를 META_AD_ACCOUNT_ID로 .env에 저장한다.
스킬 파일 구조
.claude/skills/fb-ads/
SKILL.md ← Claude가 읽는 지침
index.ts ← 실제 도구 구현
types.ts ← 공유 타입SKILL.md는 Claude에게 스킬을 언제 어떻게 사용할지 알려준다. 내 것은 이렇다:
# Facebook Ads Manager Skill
Use this skill when the user says "check my ads", "run ads report",
"pause underperformers", or "write new ad copy". Never run this
without explicit user instruction — it touches live ad spend.
## What it can do
- Pull performance data for all active ad sets (last 7 or 30 days)
- Flag ad sets with ROAS < 1.5 or CTR < 0.8% as underperformers
- Rewrite ad copy for flagged creatives in Ale's voice
- Create new ad sets with revised copy (PAUSED by default — you approve before activating)
## What it will NOT do
- Change budgets on live ad sets without explicit confirmation
- Activate new ad sets automatically
- Delete anything“절대 자동으로 활성화하지 않는다”는 제약은 협상의 여지가 없다. 이 스킬은 PAUSED 상태로 항목을 만든다. 내가 검토하고 수동으로 활성화한다. 라이브 광고 지출에 닿는 모든 것에는 사람의 체크포인트가 필요하다.
TypeScript 핵심 코드
(코드 블록은 영어로 유지 — 주변 텍스트만 번역한다.)
일상적인 사용 방법
스킬은 Claude Code(내 일상 도구)에서 호출된다. 전형적인 월요일 아침 세션:
> check my ads from the last 7 daysClaude가 runAdsReport(7)를 실행하고, 결과를 테이블로 포맷하고, 저성과자를 표시하고, 다시 쓰기를 원하는지 묻는다. “예”라고 한다. 새 카피를 생성하고, 두 버전을 나란히 보여주고, 새 크리에이티브로 PAUSED 광고 세트를 만든다. 광고 관리자에서 검토하고, 마음에 드는 것을 활성화하고, 실패한 것을 보관한다.
총 시간: 20분. 광고 관리자에서 보내는 일요일 오후는 제로.
이것이 대체할 수 없는 것
스킬은 제품-시장 적합성 문제가 카피 문제로 위장하고 있는지 알려줄 수 없다. ROAS가 전반적으로 나쁘다면, 그것은 퍼널이나 제품 문제이지 헤드라인 문제가 아니다. Claude는 망가진 퍼널 위에서 카피를 충실하게 다시 쓸 것이다 — 그리고 다시 쓰기로는 구할 수 없다.
진단 단계는 여전히 내 것이다. 보고서를 읽고, 퍼널 데이터를 보고, 크리에이티브를 반복할 것인지 상류에서 무언가를 해결할 것인지 결정한다. 에이전트는 그 판단 외에는 모든 것에서 빠르다.
운영자의 결론
광고를 수동으로 관리하고 주에 두 번 이상 광고 관리자를 건드리고 있다면, 스크립트가 해야 할 운영 작업을 하고 있는 것이다. Graph API는 잘 문서화되어 있고 Meta 권한 흐름은 귀찮지만 한 번만 설정하면 된다. 오후 하나로 스킬을 만들어라. 되찾은 시간으로 얻는 보상은 첫 주에 나타난다.
매주 수요일. 28,400명+ 구독자. 핵심만.
✓ 받은편지함을 확인하세요 — 확인 링크를 클릭해 가입을 완료하세요.
✓ 구독이 완료되었습니다!
✓ 이미 목록에 있습니다.
AI 플레이북을 받아보세요
매주 수요일. 28,400명+ 구독자. 핵심만.
받은편지함을 확인하세요.
확인 이메일을 보냈습니다 — 링크를 클릭해 구독을 완료하세요. 1분 안에 보이지 않으면 스팸함을 확인하세요.
구독이 완료되었습니다.
환영합니다 — 다음 호가 곧 받은편지함에 도착합니다.
이미 목록에 있습니다 — 매주 수요일에 확인하세요.