"zip을 올리면 Chrome이 들여다봐. 어떤 날은 두 시간 만에 올라가고, 어떤 날은 일주일이 걸려. 이 lesson은 대시보드가 뭘 달라고 하는지, 제출이 어디서 막히는지, 그리고 심사자가 진짜로 읽는 개인정보 처리방침이 어떤 건지에 대한 얘기야."
Dashboard 설정
chrome.google.com/webstore/devconsole. 일회성 설정:
- Developer registration을 끝내고 current dashboard가 표시하는 signup fee를 내. Release instruction에 금액을 hardcode하지 마. Account나 지역 요구는 바뀔 수 있어.
- Developer email 검증 (Google이 표준 email loop 통해 검증).
- Monetize 계획 있으면 payment profile 추가 (free extension은 건너뛰기 가능).
Dashboard가 extension list. 각 새 extension이 만들고 zip upload 하는 새 "Item".
Listing field
Extension 당 채울 것:
- 제목 — user가 검색 결과에서 보게 될 이름이야. 최대 45 자. 무슨 물건인지까지 담는 게 좋아. 'ClipDeck' 보다는 'ClipDeck — save text clips' 가 낫지.
- Summary — 한 줄 pitch. 최대 132 자. 검색-결과 subhead.
- Description — long-form. Markdown 비슷. 뭘 하는지, 뭘 안 하는지, 누구 위한 건지.
- Category — Productivity / Communication / Developer Tools 등. 가장 정확한 거 선택. reviewer가 틀리면 re-categorize.
- 언어 — 등록 정보의 기준 언어야. 나중에 Web Store의 번역 기능으로 늘리거나, manifest의
_locales폴더로 직접 다국어를 붙일 수 있어. - Visibility — Public / Unlisted / Private (Google Workspace only). Submission 전 선택. 나중에 변경 가능하지만 각 변경이 review 재trigger.
- Permission justification — manifest가 선언하는 각 permission에, 왜인지 한 문단 설명. Reviewer가 이거 read. 모호한 답 ('feature 위해 필요')가 hold. specific 한 거 ('downloads가 popup에서 trigger 되는 Export Clips feature에 사용')가 통과.
Privacy Policy URL
user 데이터를 다루는 extension 이라면 전부 있어야 해. chrome.storage.local만 써도 마찬가지고. 최소한 이 정도는 담아야 말이 돼:
- Extension이 뭘 collect 하는지 (clip text / source URL / source title).
- 그 data가 어디 사는지 (user 머신에 local, chrome.storage.local에).
- 어디든 transmit 되는지 (true 면 "안 됨" 이 완전 받아들일 만한 답).
- User가 어떻게 제어하는지 (export, delete, uninstall이 모든 것 제거).
정책 문서는 내가 관리하는 도메인에 올려 둬 (GitHub Pages 로도 충분해). 솔직하게 쓴 두 문단이면 돼. Chrome 심사자가 보고 싶은 건 사실이지 GDPR 상용구가 아니거든. 남의 템플릿을 갖다 붙이지 마. 심사자는 알아봐.
Single Purpose Policy
Chrome이 여러 무관 feature bundle 하는 extension 거부. 'ClipDeck — save text clips, browse them in a side panel' 가 한 목적, 네 interface (popup / panel / hotkey / omnibox). 'ClipDeck Plus — save clips AND generate passwords AND auto-translate' 가 세 목적. 세 extension으로 ship.
판단이 가끔 fuzzy. Clip도 export 하는 clip-saver는 fine (export가 clip lifecycle 일부). Email도 읽는 clip-saver는 안 됨 (email이 다른 domain). 헷갈리면, 목적 한 문장으로 쓰고 물어 봐: user가 그 문장에서 모든 feature 기대할까? Yes 면 fine. 놀랄 거면 split.
Review process
Submission이 자동화 체크 먼저 (분 안에), 다음 human review (시간에서 일까지). 자동화 체크: manifest validation / malware scanning / permission consistency. Human review: description read, screenshot click, extension install, exercise. 뭐든 불명확하면 원하는 것 설명하는 note와 submission hold. dashboard에서 응답하고 re-submit.
흔한 hold:
- 권한 설명이 두루뭉술할 때 — 심사자가 이 권한이 왜 필요한지 끝내 알 수 없거든.
- Privacy policy mismatch — manifest가 policy가 언급 안 하는 거 collect.
- Description이 behavior와 mismatch — 동작 안 하는 기술된 feature, 또는 기술 안 된 동작하는 feature.
- Trademark 이름 — permission 없이 title에 'Chrome' / 'Google' / 유명 trademark 사용.
- Spam-like wording — description의 keyword 채우기 ('best fastest most amazing clip saver').
Update cadence
각 update가 fresh review. Patch가 보통 시간 안에 통과. permission 변경이 더 깊은 look trigger. 매 upload 마다 manifest version bump — Chrome이 같은 version의 re-upload 거부. Semver 느슨하게 사용: 1.0.0, 1.0.1, 1.1.0 등.