C.W.K.
Stream
Lesson 03 of 05 · published

Web Store submission — Listing / review / privacy policy

~13 min · web-store, submission, review, privacy-policy

Level 0Extension 입덕
0 XP0/54 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"zip upload. Chrome 이 review. 어떤 날은 2 시간 안에 publish, 다른 날은 일주일 걸림. Lesson 3 가 dashboard 가 요청하는 거, submission 이 hold up 되는 거, reviewer 가 실제로 read 하는 privacy policy."

Dashboard 설정

chrome.google.com/webstore/devconsole. 일회성 설정:

  • 일회성 $5 developer 등록 fee 지불. 취미자와 기업 모두 같은 fee.
  • Developer email 검증 (Google 이 표준 email loop 통해 검증).
  • Monetize 계획 있으면 payment profile 추가 (free extension 은 건너뛰기 가능).

Dashboard 가 extension list; 각 새 extension 이 만들고 zip upload 하는 새 "Item".

Listing field

Extension 당 채울 것:

  • Title — user 가 검색 결과에서 보는 것. 최대 45 자. 기술적: 'ClipDeck — save text clips' 가 'ClipDeck' 보다 나음.
  • Summary — 한 줄 pitch. 최대 132 자. 검색-결과 subhead.
  • Description — long-form. Markdown 비슷. 뭘 하는지, 뭘 안 하는지, 누구 위한 건지.
  • Category — Productivity / Communication / Developer Tools 등. 가장 정확한 거 선택; reviewer 가 틀리면 re-categorize.
  • Language — primary store 언어. 나중에 Web Store 의 번역 시스템 OR manifest 의 _locales 디렉토리 통해 localize 가능.
  • 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 data 처리하는 모든 extension 에 required — chrome.storage.local 포함. 최소 정당한 content:

  • Extension 이 뭘 collect 하는지 (clip text / source URL / source title).
  • 그 data 가 어디 사는지 (user 머신에 local, chrome.storage.local 에).
  • 어디든 transmit 되는지 (true 면 "안 됨" 이 완전 받아들일 만한 답).
  • User 가 어떻게 제어하는지 (export, delete, uninstall 이 모든 것 제거).

제어하는 domain 에 정책 host (GitHub Pages 가 fine 동작). 정직한 영어 두 문단이 충분 — Chrome reviewer 가 truth 원함, GDPR boilerplate 아님. Template paste 안 함; reviewer 가 알아챔.

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:

  • 모호한 permission 정당화 — reviewer 가 permission 왜 필요한지 알 수 없음.
  • 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 등.

정직한 description + tight permission 정당화 + 정확한 privacy policy = 빠른 review. 모호하거나 boilerplate 가 hold. Review 가 human read, robot pass 아님; human 위해 작성.
더 이상 못 하는 것. Web Store 가 새 submission 에 MV2 extension 더 이상 받지 안 함 (기존 MV2 extension 도 제거 중). Remote code execution 금지 (eval 없음, remote-host script 없음). User data 판매가 영구 ban 사유. 회색 영역 아님 — 이 list 의 어느 것이든 시도하는 submission 즉시 bounce.

Code

PRIVACY.md — local-only extension 위한 minimum 정직 privacy policy·markdown
# ClipDeck Privacy Policy

*Last updated: 2026-05-16*

ClipDeck is a Chrome extension that saves text clips selected from web pages.
This policy describes what data ClipDeck handles and where that data lives.

## What we collect

When you save a clip, ClipDeck stores the following locally on your device:

- The selected text.
- The URL of the page you were on.
- The page title at the time you saved.
- The timestamp of when you saved.
- (Optional) A small cropped screenshot of the highlighted region.

ClipDeck also tracks a tab-pause state (which tabs you've paused capture on)
and a daily clip count for the toolbar badge.

## Where the data lives

All of the above is stored in `chrome.storage.local`, which is a per-machine,
per-Chrome-profile storage area managed by Chrome. The data never leaves your
machine. ClipDeck does not contact any server, does not call any analytics
service, and does not phone home in any form.

## How you control it

- Open the side panel to view, search, edit, or delete any clip.
- Click 'Export Clips' in the popup to download all clips as a JSON file.
- Click 'Delete' on any clip; a 5-second undo window applies.
- Uninstall ClipDeck from chrome://extensions to remove everything ClipDeck
  ever stored on your machine. There is no data we can or would retain.

## Updates to this policy

If ClipDeck ever changes what it collects or where it sends data, this policy
will be updated and the changelog noted in the ClipDeck release notes.

Questions: contact <your-email@example.com>.
manifest.json — privacy policy 와 listing 매칭하는 description·json
{
  "description": "Save text clips from any page. Search and copy them from a persistent side panel. All data stays on your device."
}

External links

Exercise

실제로 submit 안 해도 dashboard walk: chrome.google.com/webstore/devconsole 열기, publish 원하는 Google 계정으로 sign in, 안 했으면 $5 fee 지불 (또는 건너뛰고 그냥 UI 보기), 'New item' click. clipdeck/ 디렉토리의 zip upload, validation pass 만 보기 — dashboard 가 manifest parse, 선언된 permission list, 정당화 요청. Title / summary / description / category draft 채우기. GitHub Pages 나 제어하는 URL 에 privacy policy host 하고 URL 을 dashboard 에 paste. Submit 안 함; cancel out. Dry-run 이 실제 submission 이 요구할 data 노출, real push 전 prep 가능.
Hint
Dashboard 가 'invalid manifest' 로 zip 거부하면, zip 을 local 에서 열어 manifest.json 이 zip 의 ROOT 인지 확인 (clipdeck/ subdirectory 안 아님). 흔한 zip 실수: content 대신 parent folder zip. Permission 정당화 text box 가 비면, 예상 — 각자 작성해야; privacy policy 의 bullet 을 시작점으로 복사. Privacy policy URL 없으면, PRIVACY.md 를 github repo 에 push 하고 Pages 활성화 — 5 분 걸림, dashboard 가 받는 실제 https URL 줘.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.