# 외부 서비스 연결하기

애널리틱스, 광고, 매출, 스토어, SNS 서비스 계정을 allob 에 연결해요. 무엇을 보려면 어떤 서비스를 연결해야 하는지, 키는 어디서 어떻게 받는지 allob 이 단계별로 알려 줘요. 키를 넣으면 allob 이 그 서비스에 접속해 키를 확인하고, 그 안의 앱·프로젝트 목록을 가져와요.

연결은 웹 메뉴 **연결**에 모여요. 분류마다 서비스와 연결된 계정이 보여요. 내 컴퓨터로 꺼내 쓰는 키·서류와 승인을 기다리는 요청은 따로 [금고](/docs/vault)에 있어요.

![연결 화면 — 분류마다 서비스와 연결된 계정, 연결을 누르면 옆에 에이전트에게 맡기는 프롬프트 복사와 직접 입력](/docs/img/connections.png)

## 에이전트에게 맡기기

:::prompt
allob path view 로 지금 할 일에 어떤 연결이 필요한지 확인하고, 연결할 서비스마다 allob connection guide <서비스> 로 키 발급 방법을 정리해 줘.
내가 직접 해야 하는 일(로그인, 키 발급)은 순서대로 알려 주고, 키를 받으면 allob connection add 로 연결해 줘.
:::

:::info
비밀번호 입력이나 로그인 허락처럼 서비스 계정에 직접 들어가는 일은 사람이 해야 해요. 에이전트는 어디서 무엇을 누를지 안내하고, 받은 키를 연결하는 일을 맡아요.
:::

## 필요한 연결 확인하기

```sh
allob path view
```

연결이 필요한 할 일이면 `allob step view` 가 "이 할 일엔 App Store Connect 연결이 필요해요"처럼 알려 주고, `allob connection guide <서비스>` 로 발급 방법을 보여 줘요. 웹에서는 연결 화면에서 바로 연결해요. 연결 화면은 분류(애널리틱스, 광고, 매출, 스토어, SNS)마다 무엇이 연결됐는지 보여 줘요. 애널리틱스는 allob 이 이벤트를 직접 받아서 연결 없이 늘 준비돼 있어요. Google Analytics 는 같이 보고 싶을 때만 연결해요.

## API 키로 연결하기

```sh
allob connection guide revenuecat        # 키를 어디서 어떤 권한으로 받는지, 입력할 항목, 다음 명령
allob connection add revenuecat --product diary
```

터미널에서 실행하면 필요한 항목을 하나씩 물어봐요. 비밀 값은 화면에 보이지 않아요. 파일로 넘길 수도 있어요.

```sh
allob connection add appstore --fields @asc.json
# asc.json: {"issuerId":"…","keyId":"ABCDE12345","privateKey":"@AuthKey_ABCDE12345.p8"}
```

값이 `@경로` 면 그 파일을 읽어서 보내요(.p8 키 파일 등). 값이 `@clipboard` 면 클립보드에서 읽어요. 서비스 화면의 복사 단추로 키를 복사한 바로 뒤에 실행하면 키가 화면·명령 기록·파일 어디에도 남지 않아요.

```sh
echo '{"apiKey":"@clipboard"}' | allob connection add revenuecat --product diary --fields -
```

`--fields -` 는 입력할 값을 표준 입력으로 받아요. 이렇게 하면 macOS·Linux 셸과 Windows PowerShell 에서 같은 한 줄이 돼요(Windows PowerShell 5.1 은 명령 인자 안의 큰따옴표를 지워요). Windows PowerShell 5.1 은 파이프로 영문만 넘기니, 키 파일은 경로에 한글이 없는 폴더에 두세요. 클립보드는 macOS 는 `pbpaste`, Windows 는 `Get-Clipboard`, Linux 는 `wl-paste`·`xclip`·`xsel` 중 있는 것으로 읽어요. 클립보드 내용이 그 키 모양이 아니면 서버로 보내지 않고 멈춰요. 연결한 뒤에는 다른 글자를 복사해 두면 키가 클립보드에 남지 않아요.

## 키 발급까지 에이전트에게 맡기기

브라우저를 다룰 수 있는 코딩 에이전트라면 서비스 콘솔에서 키를 만들고 연결하는 일까지 맡길 수 있어요. 웹의 연결 화면에서 서비스마다 "프롬프트 복사"를 눌러도 같은 글이 복사돼요. 로그인·2단계 인증·권한 허락·결제는 에이전트가 멈추고 사람에게 넘겨요. 키는 복사 단추와 `@clipboard`, 내려받은 키 파일은 `@경로`로 넘겨서 대화에 남지 않아요. 제품에 연결하려면 `<product>` 를 제품 이름으로 바꿔요.

### Meta Ads (system user token)

:::prompt
allob 에 Meta Ads (system user token) 연결해 줘. 브라우저를 다룰 수 있으면 아래 순서대로 직접 하고, 못 하면 단계마다 내가 할 일을 알려 줘.

꼭 지킬 것
- 키·비밀 값은 대화·터미널 출력·파일 어디에도 출력하거나 붙여 넣지 마. 화면에서 읽어 옮겨 적지도 마.
- 로그인, 2단계 인증, 권한 허락, 결제 화면이 나오면 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘. 내가 끝냈다고 하면 이어서 해.
- allob CLI 가 없으면 먼저 설치해: curl -fsSL https://allob.app/install.sh | sh (Windows PowerShell: irm https://allob.app/install.ps1 | iex). 로그인 전이면 allob auth login 해.

순서
1. Meta 비즈니스 설정 › 시스템 사용자에서 시스템 사용자를 골라요(없으면 추가해요).
   열 주소: https://business.facebook.com/settings/system-users
2. '자산 할당'으로 이 제품의 광고 계정을 주고, ads_read 권한으로 토큰을 만들어요. allob에서 광고를 켜고 끄려면 ads_management 권한도 같이 골라요. 만료는 '없음(Never)'을 골라요.
3. 토큰 옆 복사 단추를 눌러요. 토큰 글자를 읽거나 적지 않아요.
4. 연결해(macOS·Linux 셸과 Windows PowerShell 모두 이 한 줄):
   echo '{"accessToken":"@clipboard"}' | allob connection add meta-ads-key --fields -
   - "@clipboard": 서비스 화면의 복사 단추를 누른 바로 뒤에 실행해. CLI 가 클립보드에서 키를 읽고 값은 보여 주지 않아.
   - 연결되면 다른 글자를 하나 복사해서 키가 클립보드에 남지 않게 해.
   - 실패하면 오류 글만 보고 고쳐. 키를 새로 만들어야 했다면, 콘솔에서 키를 지우기 전에 먼저 나에게 물어봐. 지울 수 있는 건 이번에 네가 만든 키뿐이야.
5. 제품마다 쓸 광고 계정 은 나중에 골라(allob path view 에 남은 일이 나와).
6. 마지막으로 allob connection list 로 연결됐는지 확인하고 알려 줘.
:::

### Meta Conversions API

:::prompt
allob 에 Meta Conversions API 연결해 줘. 브라우저를 다룰 수 있으면 아래 순서대로 직접 하고, 못 하면 단계마다 내가 할 일을 알려 줘.

꼭 지킬 것
- 키·비밀 값은 대화·터미널 출력·파일 어디에도 출력하거나 붙여 넣지 마. 화면에서 읽어 옮겨 적지도 마.
- 로그인, 2단계 인증, 권한 허락, 결제 화면이 나오면 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘. 내가 끝냈다고 하면 이어서 해.
- allob CLI 가 없으면 먼저 설치해: curl -fsSL https://allob.app/install.sh | sh (Windows PowerShell: irm https://allob.app/install.ps1 | iex). 로그인 전이면 allob auth login 해.

순서
1. 이벤트 관리자에서 이 제품의 데이터 세트(픽셀)를 골라요.
   열 주소: https://business.facebook.com/events_manager2
2. 설정 → 전환 API → 액세스 토큰 생성을 눌러요.
3. 데이터 세트 ID 를 확인하고(비밀 값이 아니에요) 토큰 옆 복사 단추를 눌러요. 토큰 글자를 읽거나 적지 않아요.
4. 연결해(macOS·Linux 셸과 Windows PowerShell 모두 이 한 줄):
   echo '{"datasetId":"<데이터 세트 ID(픽셀 ID)>","accessToken":"@clipboard"}' | allob connection add meta-capi --product <product> --fields -
   - "@clipboard": 서비스 화면의 복사 단추를 누른 바로 뒤에 실행해. CLI 가 클립보드에서 키를 읽고 값은 보여 주지 않아.
   - 연결되면 다른 글자를 하나 복사해서 키가 클립보드에 남지 않게 해.
   - 실패하면 오류 글만 보고 고쳐. 키를 새로 만들어야 했다면, 콘솔에서 키를 지우기 전에 먼저 나에게 물어봐. 지울 수 있는 건 이번에 네가 만든 키뿐이야.
5. 마지막으로 allob connection list 로 연결됐는지 확인하고 알려 줘.
:::

### TikTok Events API

:::prompt
allob 에 TikTok Events API 연결해 줘. 브라우저를 다룰 수 있으면 아래 순서대로 직접 하고, 못 하면 단계마다 내가 할 일을 알려 줘.

꼭 지킬 것
- 키·비밀 값은 대화·터미널 출력·파일 어디에도 출력하거나 붙여 넣지 마. 화면에서 읽어 옮겨 적지도 마.
- 로그인, 2단계 인증, 권한 허락, 결제 화면이 나오면 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘. 내가 끝냈다고 하면 이어서 해.
- allob CLI 가 없으면 먼저 설치해: curl -fsSL https://allob.app/install.sh | sh (Windows PowerShell: irm https://allob.app/install.ps1 | iex). 로그인 전이면 allob auth login 해.

순서
1. TikTok 이벤트 관리자에서 이 제품의 픽셀을 골라요.
   열 주소: https://ads.tiktok.com/i18n/events_manager
2. 설정 → Events API → 액세스 토큰 생성을 눌러요.
3. 픽셀 ID 를 확인하고(비밀 값이 아니에요) 토큰 옆 복사 단추를 눌러요. 토큰 글자를 읽거나 적지 않아요.
4. 연결해(macOS·Linux 셸과 Windows PowerShell 모두 이 한 줄):
   echo '{"pixelCode":"<픽셀 ID>","accessToken":"@clipboard"}' | allob connection add tiktok-events --product <product> --fields -
   - "@clipboard": 서비스 화면의 복사 단추를 누른 바로 뒤에 실행해. CLI 가 클립보드에서 키를 읽고 값은 보여 주지 않아.
   - 연결되면 다른 글자를 하나 복사해서 키가 클립보드에 남지 않게 해.
   - 실패하면 오류 글만 보고 고쳐. 키를 새로 만들어야 했다면, 콘솔에서 키를 지우기 전에 먼저 나에게 물어봐. 지울 수 있는 건 이번에 네가 만든 키뿐이야.
5. 마지막으로 allob connection list 로 연결됐는지 확인하고 알려 줘.
:::

### GA4 Measurement Protocol

:::prompt
allob 에 GA4 Measurement Protocol 연결해 줘. 브라우저를 다룰 수 있으면 아래 순서대로 직접 하고, 못 하면 단계마다 내가 할 일을 알려 줘.

꼭 지킬 것
- 키·비밀 값은 대화·터미널 출력·파일 어디에도 출력하거나 붙여 넣지 마. 화면에서 읽어 옮겨 적지도 마.
- 로그인, 2단계 인증, 권한 허락, 결제 화면이 나오면 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘. 내가 끝냈다고 하면 이어서 해.
- allob CLI 가 없으면 먼저 설치해: curl -fsSL https://allob.app/install.sh | sh (Windows PowerShell: irm https://allob.app/install.ps1 | iex). 로그인 전이면 allob auth login 해.

순서
1. GA4 관리 → 데이터 스트림에서 이 제품의 웹 스트림을 골라요.
   열 주소: https://analytics.google.com/
2. Measurement Protocol API 보안 비밀 → 만들기를 누르고 이름은 allob 으로 해요.
3. 측정 ID(G-…)와 비밀 값을 복사해 아래에 붙여 넣어요.
4. 연결해(macOS·Linux 셸과 Windows PowerShell 모두 이 한 줄):
   echo '{"measurementId":"<측정 ID>","apiSecret":"@clipboard"}' | allob connection add ga4-mp --product <product> --fields -
   - "@clipboard": 서비스 화면의 복사 단추를 누른 바로 뒤에 실행해. CLI 가 클립보드에서 키를 읽고 값은 보여 주지 않아.
   - 연결되면 다른 글자를 하나 복사해서 키가 클립보드에 남지 않게 해.
   - 실패하면 오류 글만 보고 고쳐. 키를 새로 만들어야 했다면, 콘솔에서 키를 지우기 전에 먼저 나에게 물어봐. 지울 수 있는 건 이번에 네가 만든 키뿐이야.
5. 마지막으로 allob connection list 로 연결됐는지 확인하고 알려 줘.
:::

### RevenueCat

:::prompt
allob 에 RevenueCat 연결해 줘. 브라우저를 다룰 수 있으면 아래 순서대로 직접 하고, 못 하면 단계마다 내가 할 일을 알려 줘.

꼭 지킬 것
- 키·비밀 값은 대화·터미널 출력·파일 어디에도 출력하거나 붙여 넣지 마. 화면에서 읽어 옮겨 적지도 마.
- 로그인, 2단계 인증, 권한 허락, 결제 화면이 나오면 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘. 내가 끝냈다고 하면 이어서 해.
- allob CLI 가 없으면 먼저 설치해: curl -fsSL https://allob.app/install.sh | sh (Windows PowerShell: irm https://allob.app/install.ps1 | iex). 로그인 전이면 allob auth login 해.

순서
1. RevenueCat 에서 이 앱의 프로젝트를 열어요.
   열 주소: https://app.revenuecat.com/
2. Project settings → API keys → + New secret API key 를 눌러요.
3. 이름은 allob, API 버전은 V2 로 하고 권한을 아래처럼 정해요.
   Charts & metrics: Charts 읽기와 Overview 읽기를 둘 다 켜요(Overview 만으로는 30일 매출을 한 번에 못 읽어요) · Customer information: Read · Project configuration: Read & Write(Write 는 allob 이 상품·권한·오퍼링을 대신 연결할 때 써요. 매출만 볼 거면 Read 로 충분해요)
4. 새 키(sk_ 로 시작해요) 옆의 복사 단추를 눌러요. 키 글자를 읽거나 적지 않아요.
5. 연결해(macOS·Linux 셸과 Windows PowerShell 모두 이 한 줄):
   echo '{"apiKey":"@clipboard"}' | allob connection add revenuecat --product <product> --fields -
   - "@clipboard": 서비스 화면의 복사 단추를 누른 바로 뒤에 실행해. CLI 가 클립보드에서 키를 읽고 값은 보여 주지 않아.
   - 연결되면 다른 글자를 하나 복사해서 키가 클립보드에 남지 않게 해.
   - 실패하면 오류 글만 보고 고쳐. 키를 새로 만들어야 했다면, 콘솔에서 키를 지우기 전에 먼저 나에게 물어봐. 지울 수 있는 건 이번에 네가 만든 키뿐이야.
6. 마지막으로 allob connection list 로 연결됐는지 확인하고 알려 줘.
:::

### Dodo Payments

:::prompt
allob 에 Dodo Payments 연결해 줘. 브라우저를 다룰 수 있으면 아래 순서대로 직접 하고, 못 하면 단계마다 내가 할 일을 알려 줘.

꼭 지킬 것
- 키·비밀 값은 대화·터미널 출력·파일 어디에도 출력하거나 붙여 넣지 마. 화면에서 읽어 옮겨 적지도 마.
- 로그인, 2단계 인증, 권한 허락, 결제 화면이 나오면 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘. 내가 끝냈다고 하면 이어서 해.
- allob CLI 가 없으면 먼저 설치해: curl -fsSL https://allob.app/install.sh | sh (Windows PowerShell: irm https://allob.app/install.ps1 | iex). 로그인 전이면 allob auth login 해.

순서
1. Dodo Payments 에서 Developer → API Keys 를 열어요.
   열 주소: https://app.dodopayments.com/developer/api-keys
2. 위쪽 스위치가 Live 모드인지 확인하고 + Add API Key 를 눌러요.
   테스트용 키는 Test 모드에서 만들고, 아래 환경을 test 로 입력해요.
3. 이름을 allob 으로 정하고, 새 키의 복사 단추를 눌러요. 키 글자를 읽거나 적지 않아요.
4. 연결해(macOS·Linux 셸과 Windows PowerShell 모두 이 한 줄):
   echo '{"apiKey":"@clipboard","mode":"live"}' | allob connection add dodo --fields -
   - "@clipboard": 서비스 화면의 복사 단추를 누른 바로 뒤에 실행해. CLI 가 클립보드에서 키를 읽고 값은 보여 주지 않아.
   - 연결되면 다른 글자를 하나 복사해서 키가 클립보드에 남지 않게 해.
   - 실패하면 오류 글만 보고 고쳐. 키를 새로 만들어야 했다면, 콘솔에서 키를 지우기 전에 먼저 나에게 물어봐. 지울 수 있는 건 이번에 네가 만든 키뿐이야.
5. 제품마다 쓸 Dodo 브랜드 은 나중에 골라(allob path view 에 남은 일이 나와).
6. 마지막으로 allob connection list 로 연결됐는지 확인하고 알려 줘.
:::

### App Store Connect

:::prompt
allob 에 App Store Connect 연결해 줘. 브라우저를 다룰 수 있으면 아래 순서대로 직접 하고, 못 하면 단계마다 내가 할 일을 알려 줘.

꼭 지킬 것
- 키·비밀 값은 대화·터미널 출력·파일 어디에도 출력하거나 붙여 넣지 마. 화면에서 읽어 옮겨 적지도 마.
- 로그인, 2단계 인증, 권한 허락, 결제 화면이 나오면 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘. 내가 끝냈다고 하면 이어서 해.
- allob CLI 가 없으면 먼저 설치해: curl -fsSL https://allob.app/install.sh | sh (Windows PowerShell: irm https://allob.app/install.ps1 | iex). 로그인 전이면 allob auth login 해.

순서
1. App Store Connect 에서 사용자 및 액세스 → 통합 → App Store Connect API 를 열어요.
   열 주소: https://appstoreconnect.apple.com/access/integrations/api
2. 팀 키에서 + 를 누르고, 이름은 allob, 역할(Access)은 Admin 으로 키를 만들어요.
   계정 소유자나 Admin 만 만들 수 있어요. Admin 키 하나로 빌드·심사·판매 보고서·리뷰 읽기와 답글을 다 해요. 만든 키의 역할은 나중에 바꿀 수 없어요.
3. .p8 파일을 내려받고(한 번만 받을 수 있어요) Key ID 와 목록 위의 Issuer ID 를 확인해요. 이 둘은 비밀 값이 아니에요.
4. 연결해(macOS·Linux 셸과 Windows PowerShell 모두 이 한 줄):
   echo '{"issuerId":"<Issuer ID>","keyId":"<Key ID>","privateKey":"@<파일 경로 .p8>"}' | allob connection add appstore --fields -
   - "@<파일 경로>": 내려받은 키 파일 경로야(Windows 도 / 로 적어. Windows 에선 경로에 한글이 없는 폴더에 둬 — PowerShell 5.1 은 파이프로 영문만 넘겨). 연결된 뒤에도 파일은 지우지 말고 그 자리에 두고, 어디에 있는지 나에게 알려 줘.
   - 실패하면 오류 글만 보고 고쳐. 키를 새로 만들어야 했다면, 콘솔에서 키를 지우기 전에 먼저 나에게 물어봐. 지울 수 있는 건 이번에 네가 만든 키뿐이야.
5. 제품마다 쓸 앱 은 나중에 골라(allob path view 에 남은 일이 나와).
6. 마지막으로 allob connection list 로 연결됐는지 확인하고 알려 줘.
:::

### Google Play Console

:::prompt
allob 에 Google Play Console 연결해 줘. 브라우저를 다룰 수 있으면 아래 순서대로 직접 하고, 못 하면 단계마다 내가 할 일을 알려 줘.

꼭 지킬 것
- 키·비밀 값은 대화·터미널 출력·파일 어디에도 출력하거나 붙여 넣지 마. 화면에서 읽어 옮겨 적지도 마.
- 로그인, 2단계 인증, 권한 허락, 결제 화면이 나오면 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘. 내가 끝냈다고 하면 이어서 해.
- allob CLI 가 없으면 먼저 설치해: curl -fsSL https://allob.app/install.sh | sh (Windows PowerShell: irm https://allob.app/install.ps1 | iex). 로그인 전이면 allob auth login 해.

순서
1. Google Cloud 에서 프로젝트를 고르고(없으면 만들고) Google Play Android Developer API 를 켜요.
   열 주소: https://console.cloud.google.com/apis/library/androidpublisher.googleapis.com
2. IAM → 서비스 계정 → 만들기(이름 allob) → 키 → 키 추가 → JSON 을 눌러요.
   열 주소: https://console.cloud.google.com/iam-admin/serviceaccounts
3. Play Console › 사용자 및 권한 › 새 사용자 초대를 열고 서비스 계정 이메일을 입력해 둬. 그다음 멈추고 "여기서 사람에게 넘겨요"라고 알려 줘: 이메일이 서비스 계정과 같은지, 권한이 '앱 출시'·'리뷰에 답글 달기'·'재무 데이터 보기(계정 전체)'인지 내가 보고 초대할게. 내가 끝냈다고 하면 이어서 해.
   초대할 이메일이 allob 에 넣을 서비스 계정과 같은지, 권한이 '앱 출시'·'리뷰에 답글 달기'·'재무 데이터 보기(계정 전체)'인지 보고 초대해요. 리뷰에 답글 달기는 리뷰를 모으고 답할 때, 재무 데이터 보기는 매출을 가져올 때 써요.
   열 주소: https://play.google.com/console/users-and-permissions
4. 연결해(macOS·Linux 셸과 Windows PowerShell 모두 이 한 줄):
   echo '{"serviceAccountJson":"@<파일 경로 .json>"}' | allob connection add googleplay --fields -
   - "@<파일 경로>": 내려받은 키 파일 경로야(Windows 도 / 로 적어. Windows 에선 경로에 한글이 없는 폴더에 둬 — PowerShell 5.1 은 파이프로 영문만 넘겨). 연결된 뒤에도 파일은 지우지 말고 그 자리에 두고, 어디에 있는지 나에게 알려 줘.
   - 실패하면 오류 글만 보고 고쳐. 키를 새로 만들어야 했다면, 콘솔에서 키를 지우기 전에 먼저 나에게 물어봐. 지울 수 있는 건 이번에 네가 만든 키뿐이야.
5. 매출도 볼 거면: Play Console › 보고서 다운로드 › 재무를 열고 제목 옆의 'Cloud Storage URI 복사'를 누른 뒤 실행해: allob revenue setup --play-bucket <그 URI(gs://pubsite_…)>(제품 폴더 밖이면 --product <제품> 을 붙여). 서비스 계정이 아직 못 읽는다고 나와도 괜찮아 — 권한이 퍼지는 데 하루쯤 걸릴 수 있고 allob 이 계속 다시 모아.
   열 주소: https://play.google.com/console/
6. 마지막으로 allob connection list 로 연결됐는지 확인하고 알려 줘.
:::

## 로그인으로 연결하기

Google Analytics, AdMob, RevenueCat 처럼 로그인해서 연결하는 서비스는 브라우저에서 직접 허락해야 해요.

```sh
allob connection connect google --open
```

웹의 연결 화면에서 "연결" 버튼을 눌러도 같아요. 허락하고 돌아오면 연결돼요. 구글은 한 번 로그인하면 GA4 속성과 AdMob 앱을 함께 가져와서, 두 서비스가 함께 연결돼요. 지금 사용할 수 있는 로그인 서비스는 `allob auth status` 에 나와요.

RevenueCat 은 로그인과 비밀 키 둘 다 돼요. 로그인을 추천해요. 키를 만들지 않아도 되고, 한 번 로그인하면 볼 수 있는 프로젝트를 모두 가져와서 제품마다 프로젝트를 골라요. 웹에서는 RevenueCat 의 **연결** › **RevenueCat 로그인으로 연결**을 눌러요.

```sh
allob connection connect revenuecat --open
allob connection link crd_abc123 --product diary --resource proj1a2b3c4d   # 이 제품이 쓸 RevenueCat 프로젝트
```

RevenueCat 로그인은 30일 안에 갱신하지 않으면 끊겨요. allob 이 매출을 모을 때마다 갱신하고, 쓰는 제품이 없어도 일주일마다 갱신해서 끊기지 않게 해요. 끊기면 연결 화면에 **다시 연결해 주세요**가 떠요. 다른 RevenueCat 계정으로 다시 연결해서 제품이 고른 프로젝트가 안 보이면, 그 제품 줄에 다시 고르라고 알려 줘요. 고객 정보(구독자 목록 등)를 읽는 권한은 받지 않아요.

## 계정에 연결할까, 제품에 연결할까

- **계정에 하나**: App Store Connect 팀 키, Google Play 서비스 계정, Dodo Payments 키처럼 여러 제품이 같이 쓰는 것. 계정에 한 번 넣고, 제품마다 그 안의 앱을 골라요.

```sh
allob connection link crd_abc123 --product diary --resource 1234567890   # App Store 앱 ID
```

- **제품마다 하나**: RevenueCat 비밀 키처럼 앱마다 키가 다른 것. `--product` 를 붙여서 넣어요. RevenueCat 을 로그인으로 연결하면 계정에 하나이고, 제품마다 프로젝트를 골라요.

이 제품이 쓰는 연결은 `allob connection list`, 계정 전체는 `allob connection list --all` 로 봐요. 다시 확인하려면 `allob connection verify <id>`, 끊으려면 `allob connection remove <id> --yes` 를 실행해요. 끊으면 allob 에 저장된 키를 지워서 되돌릴 수 없어요. 서비스 쪽에서 만든 키나 로그인 허락은 그대로라서, 더 쓰지 않을 거면 그 서비스에서도 지우거나 허락을 끊어 주세요.

## 키 보관

키와 토큰은 계정마다 다른 키로 암호화해서 저장하고, 저장한 뒤에는 화면·CLI 어디에서도 다시 보여 주지 않아요. 로그인으로 연결한 서비스의 토큰은 allob 이 알아서 갱신해요. 내 컴퓨터에 키 사본을 둘 필요가 없어요.

다만 여기 연결은 allob 이 내 대신 쓰는 키예요. 예약 실행(숫자 모으기·확인)과 대신 하기(스토어 제출 등)에 써야 해서 **allob 서버는 이 키를 풀 수 있어요.** 그래서 "allob 도 못 본다"고는 약속하지 않아요. 약속하는 건 이거예요.

- 계정마다 다른 키로 암호화해서 저장해요. 데이터베이스만 새어 나가서는 풀 수 없어요.
- 저장한 값은 다시 내보내지 않아요. 끊으면 allob 에 저장된 값을 지워요(데이터베이스 복구용 기록에는 잠시 남을 수 있어요).
- 서비스에서 받은 권한 안에서만 써요. 키를 만들 때 필요한 권한만 주세요(`allob connection guide <서비스>` 가 권한까지 알려 줘요).

서명 키·APNs 키·사업 서류처럼 내 컴퓨터로 꺼내 쓰는 것은 [금고](/docs/vault)에 넣어요. 키·서류는 PIN·패스키·복구 코드 없이는 allob 서버도 열 수 없어요.

## 연결할 수 있는 서비스

| 서비스 | ID | 연결 방법 | 분류 | 설명 |
|---|---|---|---|---|
| Google Analytics | `google-analytics` | 로그인 · 계정마다 하나 | 애널리틱스 | GA4 방문·전환 숫자를 가져와요. AdMob 과 같은 Google 로그인으로 연결해요. |
| Meta Ads | `meta-ads-key` | API 키 · 계정마다 하나 | 광고 | 광고비와 성과를 읽어 와요. 제품마다 광고 계정을 골라요. 로그인 연결은 나중에 열려요. |
| Meta Pixel | `meta-pixel` | 로그인 · 계정마다 하나 | 광고 | 준비 중 |
| Facebook Page | `meta-page` | 로그인 · 계정마다 하나 | 광고 | 준비 중 |
| Instagram (ads) | `meta-instagram` | 로그인 · 계정마다 하나 | 광고 | 준비 중 |
| Meta Conversions API | `meta-capi` | API 키 · 제품마다 | 광고 | 웹 결제를 Meta 에 Purchase 로 보내요. 브라우저 픽셀과 같은 결제로 묶여요. |
| TikTok Events API | `tiktok-events` | API 키 · 제품마다 | 광고 | 웹 결제를 TikTok 에 CompletePayment 로 보내요. 브라우저 픽셀과 같은 결제로 묶여요. |
| GA4 Measurement Protocol | `ga4-mp` | API 키 · 제품마다 | 광고 | 웹 결제를 Google Analytics 에 거래 ID 와 함께 purchase 로 보내요. |
| RevenueCat | `revenuecat` | API 키 · 제품마다 | 매출 | 앱 하나의 인앱 결제·구독 매출을 가져와요. |
| Dodo Payments | `dodo` | API 키 · 계정마다 하나 | 매출 | Dodo Payments 웹 결제 매출을 가져와요. 제품마다 브랜드를 골라요. |
| AdMob | `admob` | 로그인 · 계정마다 하나 | 매출 | AdMob 광고 수익을 가져와요. Google Analytics 와 같은 Google 로그인으로 연결해요. |
| App Store Connect | `appstore` | API 키 · 계정마다 하나 | 스토어, 매출 | 빌드·TestFlight·심사 상태와 판매 보고서, 리뷰와 평점을 가져와요. 제품마다 앱을 골라요. |
| Google Play Console | `googleplay` | API 키 · 계정마다 하나 | 스토어 | 빌드 업로드·트랙·스토어 등록정보와 리뷰 답글을 관리해요. 제품마다 패키지 이름을 입력해요. |
| Threads | `threads` | 로그인 · 계정 또는 제품 | SNS | Threads 프로필·글·반응을 가져와요. |
| Instagram | `instagram` | 로그인 · 계정 또는 제품 | SNS | Instagram 프로필·글·반응을 가져와요. |
| TikTok | `tiktok` | 로그인 · 계정 또는 제품 | SNS | TikTok 프로필·글·반응을 가져와요. |
| Facebook Page | `facebook` | 로그인 · 계정 또는 제품 | SNS | Facebook 페이지에 글을 올리고, 글의 반응과 댓글을 가져와요. |
