# 통합 안 된 매체 비용도 에어브릿지 대시보드에 — Self-Serve Cost Upload + 클로드 코드 자동화 실전 (3/3)

> 출처: https://retn.kr/blog/airbridge-self-serve-cost-upload-claude-code-automation/ · 수정 2026-05-29 · 리텐션 주식회사

인플루언서·자체 SMS·오프라인 행사 비용을 Google Sheet → 에어브릿지 REST API multipart upload → 에어브릿지 MCP actuals 검증 → 슬랙 보고 흐름으로 매일 자동 동기화. 컨벤션·anomaly·idempotent 설계 포함.

> 📝 이 글은 해당 세션 전에 _사전 준비 & 프리모템(premortem)_을 하면서 작성되었습니다.

본 글은 3편 시리즈의 3편입니다. 1편: [클로드 코드 + 에어브릿지 MCP × API 자동화 청사진](/claude-code-airbridge-mcp-api-agentic-marketer-blueprint/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%ED%81%B4%EB%A1%9C%EB%93%9C_%EC%BD%94%EB%93%9C_%2B_%EC%97%90%EC%96%B4%EB%B8%8C%EB%A6%BF%EC%A7%80_mcp_%C3%97_api_%EC%9E%90%EB%8F%99%ED%99%94_%EC%B2%AD%EC%82%AC%EC%A7%84) · 2편: [클로드 코드로 OG 이미지 만들고, 에어브릿지 API로 트래킹 링크 N개 발급하기](/claude-code-og-image-airbridge-tracking-link-blog-automation/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%ED%81%B4%EB%A1%9C%EB%93%9C_%EC%BD%94%EB%93%9C%EB%A1%9C_og_%EC%9D%B4%EB%AF%B8%EC%A7%80_%EB%A7%8C%EB%93%A4%EA%B3%A0%2C_%EC%97%90%EC%96%B4%EB%B8%8C%EB%A6%BF%EC%A7%80_api%EB%A1%9C_%ED%8A%B8%EB%9E%98%ED%82%B9_%EB%A7%81%ED%81%AC_n%EA%B0%9C_%EB%B0%9C%EA%B8%89%ED%95%98%EA%B8%B0)

## TL;DR

- 인플루언서 마케팅·자체 SMS·자체 메일·오프라인 행사 같은 **공식 통합이 없는 매체**의 비용은 마케터가 매주 엑셀에서 따로 관리하다가 ROAS 계산할 때마다 "통합 비용"을 손으로 합칩니다.
- 에어브릿지의 Self-Serve Cost Upload API를 쓰면 **CSV 한 번**으로 비용·노출·클릭이 대시보드의 _Cost (Channel)·Impressions (Channel)·Clicks (Channel)_ 메트릭에 그대로 녹습니다. 그 다음부터는 통합 ROAS가 자동입니다.
- 이걸 _클로드 코드(Claude Code) 에이전트_ + cron으로 매일 새벽 돌리면, 마케터는 _Google Sheet에 비용을 입력_만 하면 됩니다. 나머지는 기계가 처리합니다.
- 단, **공식 통합되어 있는 매체**(예: 네이버 검색광고, Meta, Google Ads, TikTok 등)는 self-serve upload 대상이 아닙니다. 에어브릿지 정책상 차단됩니다. 가이드의 schema는 _비통합 매체_ 시연·구현 참고용입니다.

> 📤 **이 글 한 번에 공유하기** — _클로드 코드 + 에어브릿지 REST API + GPT image로 즉석 발급한 트래킹 링크입니다. 채널 _`_blog_share_`_, 캠페인 _`_airbridge-self-serve-cost-upload-claude-code-automation_202604_blog_share_`_, OG 이미지는 GPT Image 2 (high, 1536×1024). 클릭은 __[에어브릿지 actuals 리포트](https://help.airbridge.io/en/guides/actuals-report.md?ref=retn.kr)__에 그대로 집계됩니다._

> **통합 안 된 매체 비용도 에어브릿지 대시보드에 — Self-Serve Cost Upload + 클로드 코드 자동화 실전**
>
> 인플루언서·자체 SMS·자체 메일·오프라인 같은 비통합 매체 비용도 시트→CSV→에어브릿지 Self-Serve Upload→MCP 검증으로 매일 새벽 자동 동기화하는 실전 파이프라인.
>
> [demokr.ab180.co](https://demokr.ab180.co/x4oyir?ref=retn.kr)

## 1. 고질병을 다시 본다

1편 매트릭스에서 짚은 고질병 5(비용·ROAS 통합)와 고질병 1(리포트 빌드·해석)이 만나는 지점입니다.

마케터는 이미 다음 두 가지를 매주 합니다. - 통합된 매체 (Meta·Google·TikTok 등)는 에어브릿지에서 자동 집계 → 대시보드 보고 - 비통합 매체 (인플루언서·자체 SMS·자체 메일·오프라인)는 _별도 시트_ 에서 손으로 합산 → 슬랙·노션 보고

문제는 _마지막에 합칠 때_. 채널 단위 ROAS, 매체 믹스 기여도, ROI 등을 한 화면에서 보려면 둘이 같은 단위로 들어가 있어야 합니다. 매주 한 명이 1~3시간씩 합치는 일에 쓰입니다. 통합 매체와 비통합 매체를 같은 단위로 합치고 나면, 그 다음에 [증분(Incremental) 분석](/incrementality/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%EC%A6%9D%EB%B6%84%28incremental%29_%EB%B6%84%EC%84%9D)이나 [iROAS 비교](/mcp-braze-amplitude-iroas/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=iroas_%EB%B9%84%EA%B5%90) 같은 한 단계 위 분석으로 넘어갈 수 있습니다.

해결의 핵심은 **두 줄기를 같은 집결지로 모으는 일**. 에어브릿지 대시보드가 그 집결지가 됩니다.

## 2. 자동화 흐름 한눈에

![시트→CSV→multipart 업로드→status polling→대시보드 검증으로 이어지는 비통합 매체 비용 ingestion 파이프라인](/content/images/2026/04/inline-part3-cost-pipeline-v2.png)

```
<code>[ 마케터가 시트에 비용 입력 ]
   - Google Sheet, Notion DB, Airtable 어느 거든
   - 컬럼: date, channel, currency, campaign, impressions, clicks, cost, ad_group(선택)
   │
   ▼
[ Cron 매일 06:00 KST ]
   │
   ▼
[ 에이전트 — Sheet → CSV 변환 ]
   - 어제까지의 데이터만
   - 컨벤션·금지어·타입 검증
   - 신규 채널 발견 시 사람 알림
   │
   ▼
[ 에어브릿지 REST API ] POST /self-serve-data/v1/ad-spend/requests
   - multipart/form-data로 CSV 업로드
   - request_id 반환
   │
   ▼
[ 에이전트 — Status Polling ]
   - GET /self-serve-data/v1/ad-spend/requests/{request_id}
   - uploaded → validated → ingested → succeeded
   - failed 시 reason 분석 → 사람 알림
   │
   ▼
[ 에어브릿지 MCP ] get_actuals_report로 검증
   - 어제 비용 (Cost (Channel)) 정상 집계 확인
   - anomaly (전일 대비 ±N%) 감지 시 사람 알림
   │
   ▼
[ 슬랙 보고 ]
   - 어제 비통합 매체 비용 합계
   - 통합 매체와 합산한 매체 믹스 (가시성)
   - anomaly 있는 매체 강조
</code>
```

## 3. 1단계 — Sheet 스키마 설계

에어브릿지의 Self-Serve Cost Upload는 다음 컬럼을 받습니다 (필수와 선택).

| 컬럼 | 타입 | 필수 | 설명 |
| --- | --- | --- | --- |
| date | string YYYY-MM-DD | ✅ | 비용 발생일. 앱 타임존 기준. 미래 날짜 불가 |
| channel | string | ✅ | 매체 이름. 공식 통합된 채널명은 사용 불가. 영문 소문자·언더스코어 권장 |
| currency | string | ✅ | ISO 4217 3자리 대문자. e.g. KRW, USD |
| campaign | string | ✅ | 캠페인명. 컨벤션 적용 |
| impressions | int | ✅ | 노출. 콤마 사용 금지 |
| clicks | int | ✅ | 클릭. 콤마 사용 금지 |
| cost | float | ✅ | 비용. 콤마 사용 금지 |
| ad_group, ad_creative, term, country, os_name 등 | string | 선택 | 구체화 시 powerful |

데이터의 _식별 키_는 `(date, channel, campaign)` 3종 조합. 같은 키로 두 번 업로드하면 **마지막 업로드가 덮어씁니다**. 즉 _수정도 곧 재업로드_. 이 점이 자동화 설계에 큰 영향을 줍니다 — _idempotent_하게 매일 같은 슬라이딩 윈도우(예: 어제 1일치 또는 어제까지 7일치)를 다시 올려도 안전합니다.

### 3-1. 시트 권장 구조 (예시)

| date | channel | currency | campaign | impressions | clicks | cost | ad_group |
| --- | --- | --- | --- | --- | --- | --- | --- |
| 2026-04-28 | influencer_youtube | KRW | spring_2026_megainflu | 120000 | 4500 | 3500000 | yt_megainflu |
| 2026-04-28 | influencer_instagram | KRW | spring_2026_microinflu | 85000 | 3100 | 1800000 | ig_microinflu |
| 2026-04-28 | internal_sms | KRW | spring_2026_loyal_sms | 0 | 12500 | 750000 | sms_loyal |
| 2026-04-28 | offline_event | KRW | spring_2026_seoulmeetup | 0 | 0 | 5000000 | offline_seoul |

> **(가상 데이터 명시)** 위 표의 모든 수치는 _시연용 가상값_ 입니다.

`channel` 이름 컨벤션은 다음 패턴을 권장합니다. - `influencer_{platform}` — 인플루언서 마케팅 - `internal_{channel}` — 자사 보유 채널 (sms, email, push, kakao_msg 등) - `offline_{type}` — 오프라인 (event, ooh, partnership 등) - `partner_{name}` — 제휴/공동 마케팅

`offline_event`처럼 노출·클릭이 무의미한 경우 `0` 입력. 비용만 집계됩니다. 그래도 _cost_는 반드시 양수로.

## 4. 2단계 — Sheet → CSV 변환 (LLM 에이전트의 사전 검증)

LLM 에이전트가 시트를 읽고 CSV로 직렬화하기 전에 다음 검증을 합니다.

```
<code class="language-python"># 의사 코드 — 실제 환경에서는 시트 SDK + Anthropic SDK 등 결합
def validate_rows(rows):
    integrated_channels = load_integrated_channels()  # 에어브릿지 공식 통합 채널 목록 (캐시)
    seen_keys = set()
    errors = []

    for r in rows:
        key = (r.date, r.channel, r.campaign)

        # 중복 키
        if key in seen_keys:
            errors.append(("DUP_KEY", r))
        seen_keys.add(key)

        # 미래 날짜
        if r.date > today_in_app_tz():
            errors.append(("FUTURE_DATE", r))

        # 통합된 채널 사용 시도
        if r.channel in integrated_channels:
            errors.append(("INTEGRATED_CHANNEL", r))

        # 통화 코드
        if r.currency not in ISO_4217:
            errors.append(("BAD_CURRENCY", r))

        # 음수 또는 비숫자
        if r.cost < 0 or not is_int(r.impressions) or not is_int(r.clicks):
            errors.append(("BAD_NUMBER", r))

    return errors
</code>
```

### 4-1. Human-in-the-loop 지점

검증 결과가 _경고_(warning)와 _오류_(error)로 나뉩니다.

- **오류** (e.g. 통합 채널 사용 시도, 미래 날짜, 음수 비용): 업로드 즉시 차단 → 슬랙에 마케터 멘션 → 사람이 시트 수정 후 다음 사이클에서 재시도
- **경고** (e.g. _전일 대비 비용 ±50% 이상 변동_ 같은 anomaly): 업로드는 진행하되 슬랙에 알림 → 사람이 _맞다_고 confirm 또는 _수정_ 결정
- **신규 채널 발견** (e.g. 어제까지 없던 `influencer_threads`가 처음 등장): 업로드 진행하지만 슬랙에 명시적 멘션 → 사람 승인. 첫 등장 채널은 컨벤션·정책 적용 대상

이 3단계 분기가 마케팅 자동화에서 가장 자주 무너지는 지점입니다. _모든 걸 자동으로_ 흘러보내면 사람이 모르는 사이에 잘못된 데이터가 누적됩니다. _모든 걸 사람 승인 대기_로 두면 자동화의 효용이 사라집니다. 위 3분기가 우리가 권하는 균형점입니다.

> 💡 **암묵지 → 명시지 한 번 더** — 위 _경고 임계값_ (예: ±50%), _오류 차단 룰_, _신규 채널 정책_은 모두 _우리 회사 마케터의 머릿속에서 끌어낸 결과_ 여야 합니다. 1편에서 정리한 [Cognitive Task Analysis 3주 인터뷰 트랙](/claude-code-airbridge-mcp-api-agentic-marketer-blueprint/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=cognitive_task_analysis_3%EC%A3%BC_%EC%9D%B8%ED%84%B0%EB%B7%B0_%ED%8A%B8%EB%9E%99) 으로 임계값을 _숫자_로 박아두면, 같은 ±50% 이상 변동이라도 _시즌 정상_과 _진짜 anomaly_를 구분합니다. 그렇지 않으면 에이전트의 권고는 _일반론_이고, 마케터는 _다시 검토_ 합니다.

## 5. 3단계 — REST API multipart upload

검증 통과 후 CSV로 직렬화하고 multipart로 업로드합니다.

```
<code class="language-javascript">import FormData from "form-data";
import fetch from "node-fetch";

async function uploadAdSpend(csvBuffer, apiToken) {
  const form = new FormData();
  form.append("file", csvBuffer, {
    filename: `ad_spend_${dayjs().format("YYYYMMDD")}.csv`,
    contentType: "text/csv"
  });

  const res = await fetch(
    "https://api.airbridge.io/self-serve-data/v1/ad-spend/requests",
    {
      method: "POST",
      headers: {
        "Authorization": `Bearer ${apiToken}`,
        ...form.getHeaders()
      },
      body: form
    }
  );

  if (!res.ok) {
    const err = await res.text();
    throw new Error(`Upload failed: ${res.status} ${err}`);
  }
  return await res.json();  // { request_id, ... }
}
</code>
```

> ⚠️ Self-Serve API는 **Owner / In-house Marketer 권한**의 토큰만 받습니다. 대행사·하위 권한 토큰은 거부됩니다. CI 환경에는 _Owner 전용 봇 계정_ 토큰을 분리해 두는 것을 권합니다.

1회 요청당 **최대 10,000행 / 1MB**. 큰 시트는 자동으로 chunk 분할이 필요합니다.

## 6. 4단계 — Status Polling

Self-Serve 업로드는 비동기. `request_id`를 받은 뒤 다음 상태로 이동합니다.

| 상태 | 설명 | 자동화 분기 |
| --- | --- | --- |
| uploaded | 서버에 파일 업로드 완료 | 계속 polling |
| validated | 파일 포맷 검증 완료 | 계속 polling |
| ingested | DB에 ingest 완료 | 계속 polling |
| succeeded | 리포트에서 조회 가능 (최대 10분 소요) | 다음 단계로 |
| failed | 처리 실패. reason 필드 확인 후 사람 알림 | LLM이 reason 해석 후 슬랙 보고 |

```
<code class="language-javascript">async function pollStatus(requestId, apiToken, maxWaitMs = 15 * 60 * 1000) {
  const start = Date.now();
  while (Date.now() - start < maxWaitMs) {
    const res = await fetch(
      `https://api.airbridge.io/self-serve-data/v1/ad-spend/requests/${requestId}`,
      { headers: { "Authorization": `Bearer ${apiToken}` } }
    );
    const json = await res.json();
    const status = json.task?.status;
    if (status === "succeeded") return json;
    if (status === "failed") throw new Error(`Failed: ${json.reason}`);
    await sleep(15_000);  // 15초 간격
  }
  throw new Error("Timeout polling status");
}
</code>
```

## 7. 5단계 — MCP로 actuals 리포트 검증

업로드 성공 후 _그날 cost가 실제로 dashboard에 반영되었는지_ MCP로 즉시 검증합니다.

자연어로 호출 시:

> _"demokr 앱의 어제 날짜, channel별 Cost (Channel)·Impressions (Channel)·Clicks (Channel)을 표로. 어제 self-serve로 올린 4개 채널 (_`_influencer_youtube_`_, _`_influencer_instagram_`_, _`_internal_sms_`_, _`_offline_event_`_) 모두 0이 아닌 값을 가지는지 검증."_

MCP는 metadata→report 체인으로 다음을 호출합니다. 1. `get_actuals_metrics_metadata` — `cost_channel`, `clicks_channel`, `impressions_channel` 키 확인 2. `get_actuals_group_by_metadata` — `channel` 키 확인 3. `get_actuals_report` — 어제 날짜, 4개 채널 필터, 위 메트릭 호출

응답을 받아 LLM이 다음을 판단합니다.

- 4개 채널 모두 cost > 0인가? (offline은 cost만 양수, 나머지 0 허용)
- 어제 시트에 입력한 합계와 일치하는가? (채널별 cost 합산 비교, ±1% 허용 오차)
- 어제 대비 ±N% anomaly 채널 있는가?

판단 결과가 모두 정상이면 슬랙 보고. 하나라도 어긋나면 사람 멘션.

## 8. 결과 — 30일치 자동 동기화 시연 (가상)

워크샵 데모용 샌드박스에 30일치 가상 데이터를 hourly로 흘려넣고 위 자동화를 돌려보았습니다.

- **시트 입력** (가상 데이터):
- 4개 채널 × 30일 = 120행
- `influencer_youtube`: 일평균 비용 350만원, 노출 12만, 클릭 4.5천
- `influencer_instagram`: 일평균 180만원, 노출 8.5만, 클릭 3.1천
- `internal_sms`: 일평균 75만원, 노출 0, 클릭 1.25만
- `offline_event`: 30일 중 4일만 발생 (이벤트일), 회당 500만원
- **자동 업로드 사이클**:
- 매일 06:00 KST 트리거
- 평균 처리 시간 (validation → upload → polling → MCP 검증 → 슬랙): **3분 40초**
- 사람 개입: 30일 중 4회 (신규 채널 등록 1회, anomaly 감지 3회)

**결과 확인** — MCP 자연어 질의:

> _"4월 한 달간 비통합 매체 합산 비용·노출·클릭을 표로. 통합 매체 (Meta·Google·TikTok)와 합쳤을 때 매체 믹스(%)를 cost 기준으로."_

| 매체 그룹 | 합산 비용 | 비중 |
| --- | --- | --- |
| 통합 매체 (Meta·Google·TikTok) | 290억원 | 96.4% |
| 비통합 매체 (인플루언서·SMS·오프라인) | 11억원 | 3.6% |

> **(가상 데이터 명시)** 모든 수치는 시연용 샌드박스 데이터입니다.

## 9. 도입 시 주의사항

1. **공식 통합 채널은 self-serve upload 대상 아님** — 네이버 검색광고, Meta, Google Ads, TikTok 등은 에어브릿지가 자체 OAuth/공식 API로 연동을 제공합니다. self-serve로 올리려 하면 거부됩니다. 통합 가능한 매체부터 통합하고, _그 외_만 self-serve로.
1. **idempotent 설계** — 같은 `(date, channel, campaign)` 키는 마지막 upload가 덮어씁니다. 매일 어제 1일치만 올리지 말고 _최근 7일을 매번 다시 올리는_ 패턴이 안전합니다 (지연 보정).
1. **데이터 삭제는 **_**영(0) 업로드**_ — 잘못 올린 데이터를 빼려면 같은 키로 `impressions=0, clicks=0, cost=0`을 다시 올립니다. 이게 self-serve의 삭제 메커니즘입니다.
1. `**channel**`** 이름 일관성** — 한 번 정한 채널명은 _절대_ 바꾸지 마세요. 바꾸는 순간 이전 데이터가 다른 채널처럼 집계됩니다. 변경이 필요하다면 _기존 채널 영(0) 업로드 → 새 채널명으로 re-upload_ 한 사이클이 필요합니다.
1. **OS 이름은 정확히 **`**Android**`** / **`**iOS**` — 케이스 센서티브. 잘못 쓰면 행이 분리됩니다.

## 10. Routines + Managed Agents 패턴 정리

![중앙의 시계를 둘러싼 4개 에이전트(기어·터미널·스택)가 정기 트리거 따라 오케스트레이션되는 컨셉](/content/images/2026/04/inline-part3-routines-orchestration-v2.png)

이 흐름의 자동화 단계마다 적합한 패턴이 다릅니다 — 1편 §4에서 정리한 4가지 패턴 중 _Routines_ 와 _Managed Agents_ 가 핵심입니다. 각각의 운영 모델은 [Anthropic Claude Code Routines](https://code.claude.com/docs/en/routines?ref=retn.kr)과 [Anthropic Managed Agents 개요](https://platform.claude.com/docs/ko/managed-agents/overview?ref=retn.kr)를 참고하세요. 다음 표는 본 파이프라인에 두 패턴을 어떻게 배치하는지 정리한 것입니다.

| 단계 | 패턴 | 책임자 |
| --- | --- | --- |
| 매일 06:00 트리거 | Routines (cron) | 시스템 |
| Sheet → CSV 직렬화 | LLM 에이전트 (도구 호출) | 시스템 |
| 컨벤션·금지어·타입 검증 | LLM 에이전트 + 룰 엔진 | 시스템 |
| 신규 채널 등록 | Managed Agent → 사람 승인 | 사람 |
| Anomaly 감지 | LLM 에이전트 → 사람 알림 | 사람 |
| API multipart upload | API 호출 | 시스템 |
| Status polling | API 호출 | 시스템 |
| MCP actuals 검증 | MCP 호출 | 시스템 |
| 정기 슬랙 보고 | LLM 에이전트 | 시스템 |
| 정책·룰 변경 | PR 리뷰 | 사람 |

핵심은 _데이터·정책의 변화는 사람의 손을 거친다_. _반복 작업은 기계의 손으로_. 이게 1편에서 정리한 5가지 human-in-the-loop 원칙의 실전 적용입니다.

> 💡 **회사 컨텍스트 주입의 실전 효과** — 1편 §5에서 정리한 _회사별 컨텍스트의 4축_ 중 _사업 캘린더_ 와 _사내 의사결정 룰_이 이 파이프라인의 anomaly 감지에 직결됩니다. 화장품 D2C라면 _"올영 메가세일 주간(매달 셋째주)에는 SMS·메일 비용이 평소의 2~3배까지 정상"_ 이라는 룰을, 게임 D2C라면 _"신규 패치 launch week에는 인플루언서 비용 스파이크 정상"_ 이라는 룰을 에이전트의 RAG 코퍼스에 박아두면, 같은 ±50% 비용 변동이라도 _시즌 정상_과 _진짜 anomaly_를 구분합니다. 이게 _비싼 검색엔진_ 단계에서 _진짜 자동화_ 단계로 넘어가는 분기점입니다.

## 11. CTA

비통합 매체가 매주 골치라면, 우리 팀의 _그로스 스프린트_에서 위 흐름을 1주 PoC + 2주 운영 안정화로 깔아드릴 수 있습니다. 첫 1주 안에 _어제 비통합 매체 비용이 슬랙으로 자동 보고_되는 상태를 만드는 게 목표입니다. 문의는 [retn.kr/contact](/contact?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=retn.kr%2Fcontact).

## 마치며

마케팅 자동화에서 _완전 자동화_는 환상입니다. 진짜 가치는 _사람이 의사결정에 시간 쓸 수 있게 만드는 일_ 입니다. 에어브릿지의 Self-Serve API + MCP + LLM 에이전트 + cron 4가지를 묶으면, 마케터는 _시트에 비용을 입력_하고 _anomaly를 confirm_만 하면 됩니다. 나머지 일은 그 사이에 끝납니다.

3편 시리즈를 여기까지 읽어주셔서 감사합니다. 1편 [클로드 코드 + 에어브릿지 MCP × API 자동화 청사진](/claude-code-airbridge-mcp-api-agentic-marketer-blueprint/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%ED%81%B4%EB%A1%9C%EB%93%9C_%EC%BD%94%EB%93%9C_%2B_%EC%97%90%EC%96%B4%EB%B8%8C%EB%A6%BF%EC%A7%80_mcp_%C3%97_api_%EC%9E%90%EB%8F%99%ED%99%94_%EC%B2%AD%EC%82%AC%EC%A7%84) 과 2편 [블로그 1편을 채널별 트래킹 링크 N개로](/claude-code-og-image-airbridge-tracking-link-blog-automation/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%EB%B8%94%EB%A1%9C%EA%B7%B8_1%ED%8E%B8%EC%9D%84_%EC%B1%84%EB%84%90%EB%B3%84_%ED%8A%B8%EB%9E%98%ED%82%B9_%EB%A7%81%ED%81%AC_n%EA%B0%9C%EB%A1%9C) 도 함께 봐주시면 청사진과 실전이 연결됩니다.

## 📚 더 읽어보기

- [구글 Meridian으로 마케팅 ROI / 증분(Incremental) 측정](/meridian/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%EA%B5%AC%EA%B8%80_meridian%EC%9C%BC%EB%A1%9C_%EB%A7%88%EC%BC%80%ED%8C%85_roi_%2F_%EC%A6%9D%EB%B6%84%28incremental%29_%EC%B8%A1%EC%A0%95)
- [채널 포화일 때 진짜 해야 할 일 — 증분을 만드는 스케일업](/channel-saturation/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%EC%B1%84%EB%84%90_%ED%8F%AC%ED%99%94%EC%9D%BC_%EB%95%8C_%EC%A7%84%EC%A7%9C_%ED%95%B4%EC%95%BC_%ED%95%A0_%EC%9D%BC_%E2%80%94_%EC%A6%9D%EB%B6%84%EC%9D%84_%EB%A7%8C%EB%93%9C%EB%8A%94_%EC%8A%A4%EC%BC%80%EC%9D%BC%EC%97%85)
- [마케팅 대시보드 ROAS가 높은데 매출은 안 느나요? — 증분과 라스트터치](/incrementality/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%EB%A7%88%EC%BC%80%ED%8C%85_%EB%8C%80%EC%8B%9C%EB%B3%B4%EB%93%9C_roas%EA%B0%80_%EB%86%92%EC%9D%80%EB%8D%B0_%EB%A7%A4%EC%B6%9C%EC%9D%80_%EC%95%88_%EB%8A%90%EB%82%98%EC%9A%94%3F_%E2%80%94_%EC%A6%9D%EB%B6%84%EA%B3%BC_%EB%9D%BC%EC%8A%A4%ED%8A%B8%ED%84%B0%EC%B9%98)
- [AI 마케팅 분석: 브레이즈 캔버스 iROAS 19배 달성 사례](/mcp-braze-amplitude-iroas/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=ai_%EB%A7%88%EC%BC%80%ED%8C%85_%EB%B6%84%EC%84%9D%3A_%EB%B8%8C%EB%A0%88%EC%9D%B4%EC%A6%88_%EC%BA%94%EB%B2%84%EC%8A%A4_iroas_19%EB%B0%B0_%EB%8B%AC%EC%84%B1_%EC%82%AC%EB%A1%80)
- [Ghost 뉴스레터 자동화 — n8n + Mailgun으로 Sunset Policy 적용](/ghost-newsletter-sunset-policy-n8n/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=ghost_%EB%89%B4%EC%8A%A4%EB%A0%88%ED%84%B0_%EC%9E%90%EB%8F%99%ED%99%94_%E2%80%94_n8n_%2B_mailgun%EC%9C%BC%EB%A1%9C_sunset_policy_%EC%A0%81%EC%9A%A9)
- [메타 광고 MCP로 3년치 광고 데이터 분석](/meta-ads-mcp/?utm_source=ghost_newsletter&utm_medium=email&utm_campaign=airbridge-self-serve-cost-upload-claude-code-automation&utm_content=%EB%A9%94%ED%83%80_%EA%B4%91%EA%B3%A0_mcp%EB%A1%9C_3%EB%85%84%EC%B9%98_%EA%B4%91%EA%B3%A0_%EB%8D%B0%EC%9D%B4%ED%84%B0_%EB%B6%84%EC%84%9D)

> **참고** - Airbridge, _Self-Serve Data Upload_ (REST): https://help.airbridge.io/en/references/self-serve-data.md - Airbridge, _네이버 검색 광고_ (공식 통합 가이드, schema 참고용): https://help.airbridge.io/ko/guides/naver-sa - Airbridge, _Actuals Report_ (REST): https://help.airbridge.io/en/references/actuals-report.md
