크롬 확장 프로그램 Chrome Web Store에 배포하는 방법
크롬 확장 프로그램을 Chrome Web Store에 배포한 과정을 개발자 등록부터 심사 통과까지 정리했어요.
1. 개발자 계정 등록
Chrome Web Store Developer Dashboard에 접속해서 개발자 등록을 해요.
- Google 계정으로 로그인
- 등록비 $5 결제 (최초 1회, 환불 불가)
- 개발자 이름, 이메일, 웹사이트 등 프로필 작성
개인 계정과 그룹(조직) 계정 중 선택할 수 있어요. 개인 프로젝트라면 개인 계정으로 충분해요.
한국에서 등록할 때: 국가/지역 선택에서 한국이 없거나 결제가 진행되지 않는 경우가 있어요. 이때는 국가를 미국(United States)으로 선택하고 ZIP 코드에 10001 (뉴욕)을 입력하면 등록이 가능해요. 다만 실제와 다른 국가·주소를 넣는 거라, 나중에 신원 확인이나 정산 과정에서 문제가 될 수 있어요.
2. 빌드 및 ZIP 파일 준비
배포할 확장 프로그램을 ZIP 파일로 패키징해요. 빌드 도구에 따라 다르지만, 대부분 빌드 후 output 폴더를 압축하면 돼요.
# WXT 사용 시
npm run zip
# 직접 압축 시
cd dist && zip -r ../extension.zip .
ZIP에 포함되어야 하는 필수 파일:
manifest.json- 아이콘 파일들
- HTML, JS, CSS 등 빌드 결과물
주의: node_modules, 소스 맵, .git 등 불필요한 파일은 빼야 해요.
3. 스토어 등록 정보 준비
업로드 전에 미리 준비해 두면 빨라요.
필수 항목
| 항목 | 규격 |
|---|---|
| 확장 프로그램 아이콘 | 128x128 PNG |
| 스크린샷 | 최소 1장, 1280x800 또는 640x400 PNG/JPG |
| 작은 프로모션 타일 | 440x280. 홈, 카테고리 페이지, 검색 결과에 쓰여요 |
| 설명 | 최대 132자 (요약), 상세 설명 별도 |
| 카테고리 | Developer Tools, Productivity 등 선택 |
| 언어 | 기본 언어 선택 |
선택 항목
- 마키 프로모션 이미지 (1400x560) - 마키 영역에 소개되려면 필요
- 홈페이지 URL
- 지원 URL
- 개인정보처리방침 URL (사용자 데이터를 다루면 필수)
4. Dashboard에서 업로드
- Developer Dashboard에서 "새 항목" 클릭
- ZIP 파일 업로드
- 업로드 완료 후 탭별로 정보 입력:
- 스토어 등록정보: 설명, 스크린샷, 카테고리
- 개인정보 보호 관행: 권한 사용 목적 설명
- 배포: 공개 범위, 지역 설정
공개 범위 설정
- 공개: 누구나 검색하고 설치 가능
- 일부 공개: 링크가 있는 사람만 설치 가능 (검색에 노출되지 않음)
- 비공개: 지정한 사용자만 설치 가능 (테스트 용도)
처음이라면 일부 공개로 먼저 올려서 확인한 뒤 공개로 바꾸는 방법도 있어요.
5. 권한 정당화
manifest.json에 선언한 권한(permissions)마다 왜 필요한지 설명해야 해요. 이 부분을 대충 쓰면 심사에서 거절될 수 있어요.
예시:
| 권한 | 정당화 |
|---|---|
storage | 사용자 설정(API 키, 테마)을 로컬에 저장하기 위해 필요 |
activeTab | 현재 탭의 URL에서 정보를 추출하기 위해 필요 |
host_permissions | 외부 API 호출을 위해 필요 |
핵심 원칙: 실제로 사용하는 권한만 선언하세요. 쓰지 않는 권한이 있으면 거절될 수 있어요.
6. 심사 제출
모든 정보를 입력했으면 "심사를 위해 제출" 버튼을 클릭해요.
심사 기간
- Chrome 문서 기준으로 대부분 며칠 안에 끝나지만, 몇 주까지 걸릴 수도 있어요
- 넓은 호스트 권한(예:
<all_urls>)이나 민감한 실행 권한을 요청하거나, 코드가 많거나 읽기 어려우면 더 오래 걸려요 - 새 개발자, 새 확장 프로그램, 코드가 크게 바뀐 업데이트도 더 꼼꼼히 봐요
거절 사유 예시
심사에서 자주 거절되는 이유들:
- 불필요한 권한 요청 - 사용하지 않는 권한이 manifest에 있는 경우
- 설명 부족 - 확장 프로그램이 뭘 하는지 명확하지 않은 경우
- 개인정보처리방침 누락 - 사용자 데이터를 다루는데 방침이 없는 경우
- 단일 목적 위반 - 하나의 확장이 관련 없는 여러 기능을 포함하는 경우
거절되면 사유와 함께 안내가 오고, 수정해서 다시 제출하면 돼요.
7. 업데이트 배포
이미 등록된 확장 프로그램은 이렇게 업데이트해요.
manifest.json의version을 올림- 새 ZIP 파일 빌드
- Dashboard에서 "패키지" 탭 → "새 패키지 업로드"
- 다시 심사 제출
업데이트도 심사를 거쳐요. 기존 사용자에게는 심사 통과 후 자동으로 업데이트돼요.
팁
- manifest.json의 version은 반드시 올려야 해요. 같은 버전으로는 업로드할 수 없어요.
- 스크린샷은 실제 동작 화면을 캡처하세요. 목업이나 텍스트만 있는 이미지는 거절될 수 있어요.
- 개인정보 관련 권한을 쓴다면 개인정보처리방침 페이지를 미리 만들어 두세요. GitHub Pages나 Notion 페이지로도 충분해요.
- Chrome Web Store API를 사용하면 CI/CD에서 자동 배포도 할 수 있어요.
chrome-webstore-upload같은 npm 패키지를 쓰면 돼요.
마무리
한 번 등록한 뒤로는 version 올리기 → ZIP 업로드 → 심사 제출을 반복하면 돼요. 심사에서는 필요한 권한만 요청하고, 각 권한을 왜 쓰는지 설명하는 것이 중요했어요.