AI 에이전트로 광고 집행하기
쿠팡 파트너스 링크 하나와 상품 이름만 있으면, Claude 같은 AI 에이전트가 문안 초안 → 캠페인 → 검토 제출까지 해요. 돈이 나가는 단계(집행 시작)는 사람이 정해요 — 지금은 결제 연결 전이라 승인되면 「결제 대기」에서 멈춰요.
에이전트 킷 — 내려받아 바로 쓰기
대화 흐름·정책 실수 피하는 법·결제 전 멈춤 안내를 담은 지시문이에요. 도구는 아래 MCP 서버(https://bomnuri.com/mcp)를 그대로 써요.
Claude Code 스킬
- 연결 — 키(콘솔에서 발급, 쓰기 권한). 키 없이 주소만 넣고
/mcp에서 로그인(OAuth)해도 돼요. 단claude -p(비대화형)에서는 OAuth 를 끝낼 수 없어 키를 써요.
claude mcp add --transport http bomnuri-ads https://bomnuri.com/mcp --header "Authorization: Bearer pcads_…" - 스킬 — 프로젝트의
.claude/skills/bomnuri-ads/(또는~/.claude/skills/bomnuri-ads/)에 두면 「이 쿠팡 링크로 광고 올려줘」에 스스로 불려요.
mkdir -p .claude/skills/bomnuri-ads \
&& curl -fsSL https://bomnuri.com/ads/kit/bomnuri-ads/SKILL.md -o .claude/skills/bomnuri-ads/SKILL.md SKILL.md 내려받기 mcp.example.json 내려받기
mcp.example.json 은 키를 환경 변수(BOMNURI_ADS_KEY)로 넣는 연결 설정이에요 — 사용자 설정을 건드리지 않고 claude --mcp-config mcp.example.json 으로 써요.
ChatGPT 지시문
- 플러그인(앱) → Add custom MCP server → Server URL
https://bomnuri.com/mcp→ 인증 OAuth → 만들기 → 설치. 처음 쓸 때 봄누리 로그인·동의 화면에서 광고주와 「광고 만들기(쓰기)」를 골라요. - 프로젝트(또는 GPT) 지시문에 아래 글을 붙여 넣어요.
- 쓰기 도구는 ChatGPT 가 실행 전에 확인을 물어요(읽기 도구에는
readOnlyHint를 달아 두었어요).
지시문 펼쳐 보기(2,708자)
너는 광고주를 도와 쿠팡 파트너스 링크 하나로 봄누리(bomnuri.com — 한국 육아 정보 사이트 네트워크)에 문맥 광고를 올리는 도우미다. 연결된 「봄누리 광고」 앱(MCP 서버 https://bomnuri.com/mcp)의 도구만 쓴다. 한국어 해요체로 짧게 답한다.
[원칙]
- 돈이 나가는 일은 하지 않는다. 만들기는 늘 초안이고, 검토를 통과해도 「결제 연결 전」(awaiting_payment)에서 멈춘다. 집행 시작·재개·결제는 할 수 없다(도구가 없다). 「바로 켜 줘」라고 하면 그렇게 말하고 지금 상태를 읽어 전한다. 급하면 콘솔 캠페인 화면의 「시범 집행 요청」 버튼으로 운영팀에 요청할 수 있다고 안내한다(운영자가 발급한 쿠팡 파트너스 링크 상품만 열린다). 그 밖의 문의는 contact@bomnuri.com. 멈추기(pause_campaign)만 된다.
- 검토는 영업일 1~2일 걸린다. 기간이 3일 이하면 만들되 끝에 「검토가 끝나면 노출 기간이 거의 안 남을 수 있어요 — 늘릴까요?」를 붙인다. 클릭당 금액을 비우면 0원, 예산을 비우면 「없음」으로 저장되니 그 사실도 알린다.
- 실제로 부른 도구의 결과만 말한다. 「제출했어요」는 submit_for_review 가 성공한 뒤에만, 상태는 get_campaign_status 로 읽은 값만.
- 한 요청에 캠페인은 하나. 같은 호출을 같은 인자로 되풀이하지 않는다. 쓰기 도구에는 요청마다 idempotencyKey 하나를 넣는다.
[처음] get_account 를 한 번 불러 광고주·권한을 확인한다. ads:write 가 없으면 만들 수 없다고 말하고 상태·성과만 본다.
[받을 것] 쿠팡 파트너스 링크(https://link.coupang.com/a/… 또는 https://coupa.ng/…)와 상품명이 있으면 묻지 말고 시작한다. 일반 쿠팡 주소·다른 단축 주소는 안 되니 파트너스 링크를 그대로 달라고 한다. 기간은 기본 오늘(한국 시각)부터 7일, 「3일」「일주일」은 날짜로 바꾼다(끝 날 포함). 예산(하루=daily·총=total, 원)·클릭당 금액(bidStrategy cpc, bidAmount)·육아 단계(임신 pregnancy·신생아 newborn·영아 infant·유아 toddler·미취학 preschool)는 말할 때만 넣고, 끝에 「바꾸려면 말해 주세요」라고 알린다. 한 번에 하나만 묻는다.
[순서]
1. suggest_ad_copy {productName, keywords, landingUrl} — 정책을 통과한 문안 초안(20~40초). 사용자가 문안을 직접 주면 대신 check_policy 로 먼저 검사.
2. create_campaign_draft {name:「상품 + 기간」, startDate, endDate, budgetType?, budgetAmount?, bidStrategy?, bidAmount?, targeting:{stages?}}
3. add_creative_from_coupang_url {campaignId, landingUrl, productName, headline, body} — 초안 문안 그대로
4. submit_for_review {campaignId}
5. get_campaign_status {campaignId} — 응답의 nextStep 문장을 그대로 전한다
[정책 — 문안에는 상품의 사실(소재·크기·구성·용도)만]
- 받지 않음: 분유·조제유(분유 포트·케이스 같은 용품은 됨), 의약품, 성인·주류·도박. 만들지 말고 이유를 말한다.
- 빼야 하는 표현: 질병 예방·치료 효능(「면역력 강화」), 절대 표현(「100% 안전」「부작용 없음」), 후기·체험기·구매 수치(「써 보니」「엄마 1만 명 선택」), 불안 조장(「안 쓰면 큰일」), 전문가 추천(「소아과 의사 추천」), 비교·비방(「타사보다」), 재촉(「오늘만」), 이모지·★·느낌표 반복.
- 서류가 필요한 분류: 어린이제품(카시트·유모차·장난감·아기띠 — KC 인증번호 approvalRefs.kc), 건강기능식품·의료기기·의약외품·영유아 특수식품(심의필·허가 번호). 번호가 없으면 그대로 제출하고 「운영 검토 때 서류를 확인해요」라고 알린다.
- 글자 수: 제목 30자·설명 60자·상품명 40자.
- 타기팅은 문맥(사이트·주제·키워드·육아 단계)만. 나이·성별·관심사·위치로는 못 한다.
- 422(policy)면 issues 의 code·message 를 읽고 고쳐 다시 시도한다.
[상태별로 이렇게 말한다]
- in_review: 「운영팀이 광고를 검토하고 있어요. 보통 영업일 1~2일 걸려요. 결과는 콘솔 캠페인 화면에서 볼 수 있어요.」
- awaiting_payment: 「광고 검토를 통과했어요. 결제 연결 기능을 준비하고 있어서 아직 광고가 나가지 않아요. 운영팀이 시범 집행을 열면 바로 노출됩니다.」
- 거절: get_campaign_status 의 소재별 reason·policyCodes 로 설명하고, 고칠 수 있으면 update_creative 뒤 다시 submit_for_review.
[성과] get_report {campaignId} — 노출·보임·클릭·CTR(봇·AI 활동 제외, 기본 최근 7일).
[오류] 401 이면 다시 연결(로그인)하라고, 403 insufficient_scope 면 쓰기 권한으로 다시 연결하라고, 429 면 잠시 뒤(문안은 광고주당 하루 20회)라고 안내한다. 오류의 message 는 사람에게 그대로 전해도 되는 문장이다. 확인 범위(2026-10-17): Claude Code 로 운영 MCP 에서 끝까지 확인했어요(한 줄 요청 → 스킬이 스스로 불림 → 초안·소재·검토 제출). ChatGPT 에서는 이 지시문을 아직 직접 돌려 보지 않았어요.
1. API 키 만들기
- 광고 콘솔에 구글로 로그인하고 광고주를 만들어요.
- 「API 키」에서 이름과 권한을 골라 키를 만들어요. 키(
pcads_…)는 만들 때 한 번만 보여요. - 읽기 권한(
ads:read)은 조회·예상·정책 검사·문안 초안, 쓰기 권한(ads:write)은 초안 만들기·제출·멈추기까지예요.
키는 광고주 하나에 묶여요. 키로는 커뮤니티(댓글·질문) 글을 쓰거나 지울 수 없고, 다른 키를 만들 수도 없어요. 새면 콘솔에서 바로 폐기하세요.
2. 연결하기
MCP(권장)
주소 https://bomnuri.com/mcp · 전송 Streamable HTTP · 지원 버전 2026-07-28 · 2025-11-25 · 2025-06-18.
claude mcp add --transport http bomnuri-ads https://bomnuri.com/mcp \
--header "Authorization: Bearer pcads_…" claude.ai 커스텀 커넥터·ChatGPT 커넥터처럼 헤더를 넣을 수 없는 곳은 주소 https://bomnuri.com/mcp 만 넣으세요. 연결할 때 구글 로그인과 동의 화면(광고주·권한 고르기)이 열리고, 키 없이 연결돼요(OAuth). 연결은 광고 콘솔에서 언제든 끊을 수 있어요.
설정 파일로 넣는 클라이언트는:
{
"mcpServers": {
"bomnuri-ads": {
"type": "http",
"url": "https://bomnuri.com/mcp",
"headers": {
"Authorization": "Bearer pcads_…"
}
}
}
} REST
기본 주소 https://bomnuri.com/api/ads/v1 · 명세(OpenAPI 3.1) https://bomnuri.com/api/ads/v1/openapi.json · 에이전트용 요약 https://bomnuri.com/ads/llms.txt
curl https://bomnuri.com/api/ads/v1/campaigns \
-H "Authorization: Bearer pcads_…" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: oct-handkerchief-1" \
-d '{"name":"손수건 10월","targeting":{"stages":["newborn"]},"budgetType":"daily","budgetAmount":10000}' 3. 이렇게 흘러가요
get_account— 키·광고주·한도 확인list_placements·list_targeting_options— 지면과 타기팅 값(사이트·주제·육아 단계)suggest_ad_copy— 상품명·키워드로 제목·설명 초안(정책 검사를 통과한 것만)과 추천 지면create_campaign_draft→add_creative_from_coupang_url→submit_for_review- 운영팀이 사람 검토(자동 승인 없음) → 승인되면
awaiting_payment get_campaign_status의nextStep문장을 사람에게 그대로 전해요
예: 「이 손수건 쿠팡 링크로 신생아 사이트들에 광고 걸어줘」라고 하면, 에이전트가 초안 세 개를 보여 주고 고른 문안으로 캠페인을 만들어 검토를 제출해요. 승인 뒤에는 「광고 검토를 통과했어요. 결제 연결 기능을 준비하고 있어서 아직 광고가 나가지 않아요…」라고 알려 줘요.
4. 도구
읽기(ads:read)
get_accountGET /account- 이 API 키가 묶인 광고주, 키 권한(스코프), 한도, 광고 집행 순서를 돌려준다. 처음 연결했을 때 먼저 부르세요.
list_placementsGET /placements- 광고가 들어갈 수 있는 지면과 추천 이유·기대 효과·조건. 지면을 고르지 않으면 맞는 지면 전체에 나간다.
list_targeting_optionsGET /targeting-options- 타기팅에 쓸 수 있는 사이트(slug·주제)와 육아 단계. 사람 정보(나이·성별·관심사·위치)로는 타기팅하지 않는다.
estimate_reachPOST /estimate- 타기팅 조건의 예상 하루 노출(최근 7일 실제 서빙 수 평균, 봇·AI 제외). 주제·키워드로 좁히면 상한값이다.
check_policyPOST /policy/check- 문안·링크를 제출 전에 검사한다. issues 의 code·message 로 고친 뒤 다시 검사하세요. 저장하지 않는다.
suggest_ad_copyPOST /copy/suggest- 상품명·키워드(·쿠팡 파트너스 링크)로 광고 제목·설명 초안 최대 3개와 추천 지면을 만든다. 정책 검사를 통과한 초안만 돌려준다. 20~40초 걸릴 수 있고 광고주당 하루 20회.
list_campaignsGET /campaigns- 이 광고주의 캠페인(보관 제외)과 상태·오늘 노출·클릭.
get_campaign_statusGET /campaigns/{campaignId}- 캠페인 상태, 소재별 검토 결과(정책 코드·사유), 사람에게 전할 다음 단계 문장(nextStep).
get_reportGET /campaigns/{campaignId}/report- 일별 노출(served)·보임(viewable)·클릭·CTR·예상 비용. 봇·AI 활동은 빼고 센다(filtered 는 따로). 기본 최근 7일, 최대 92일.
쓰기(ads:write)
create_campaign_draftPOST /campaigns- 캠페인을 초안(draft)으로 만든다. 돈은 나가지 않는다 — 검토·결제 전에는 노출되지 않는다. 다음은 add_creative_from_coupang_url.
add_creative_from_coupang_urlPOST /campaigns/{campaignId}/creatives- 쿠팡 파트너스 링크(link.coupang.com/a/… 또는 coupa.ng/…)로 소재를 추가한다. headline 을 비우면 AI 문안 도우미가 채운다. 정책에 걸리면(422) 저장하지 않고 issues 를 돌려준다.
update_creativePATCH /creatives/{creativeId}- 거절됐거나 고칠 소재의 문안·링크를 바꾼다. 내용이 바뀌면 그 소재만 다시 검토한다. status 로 소재를 켜고 끈다(active|paused).
submit_for_reviewPOST /campaigns/{campaignId}/submit- 캠페인을 검토에 제출한다. 자동 정책 검사 뒤 운영팀이 사람 검토를 한다(자동 승인 없음). 승인되면 awaiting_payment(결제 연결 전)에서 멈춘다.
pause_campaignPOST /campaigns/{campaignId}/pause- 집행 중(active)인 캠페인을 멈춘다. 다시 켜는 것은 사람이 콘솔에서 한다.
키로는 집행 시작·재개·보관·광고주 만들기·키 발급을 할 수 없어요. 돈이 나가거나 되돌리기 어려운 일은 콘솔에서 사람이 해요.
5. 광고 원칙
- 링크는 쿠팡 파트너스 주소(
link.coupang.com/a/…·coupa.ng/…)만 받아요. 리다이렉트로 감추지 않아요. - 모든 광고에 「광고」 표시와 「이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.」 문구가 붙고, 링크는
rel="sponsored nofollow noopener"예요. - 타기팅은 문맥(사이트·주제·키워드·육아 단계)뿐이에요. 나이·성별·관심사·위치 같은 사람 정보는 쓰지 않아요.
- 분유(영아용 조제유)·의약품은 받지 않고, 건강기능식품·의료기기·어린이제품은 심의필·KC 번호가 필요해요. 정책 코드 목록은
GET /api/ads/policy-codes(JSON). - 노출·클릭에서 봇·AI 활동은 빼고 세요. 광고주에게 가짜 참여를 팔지 않아요.
- AI 가 쓴 문안은 데이터에 그렇게 기록해요(화면에는 표시하지 않아요).
6. 한도와 오류
- 키당 분당 60요청, 쓰기는 20번. 응답 헤더
RateLimit-Remaining, 넘으면 429 와Retry-After. - 문안 초안은 광고주당 하루 20번(넘으면 상품명·키워드 기본 문안).
- 쓰기는
Idempotency-Key헤더(MCP 는idempotencyKey인자)로 안전하게 다시 보낼 수 있어요(24시간). - 오류는
{error, detail, message, issues?}—message는 사람에게 그대로 보여 줘도 되는 문장이에요. 정책에 걸리면 422 와issues.