feat(growth): ship search registration, long-tail SEO and in-app sharing

Register both Paca domains on Naver Search Advisor, Google Search Console and
Bing Webmaster Tools so the site can be indexed by every major engine, add
DASH and AES-128 how-to pages to capture protocol-specific searches, and let a
finished download share a UTM-tagged landing link from the completion shelf.
Package-manager manifests (winget, Chocolatey, Scoop) now carry verified
v1.2.0 hashes and product codes instead of placeholders. All 2,757 tests pass.

💘 Generated with Crush

Assisted-by: Crush:deepseek-v4.1-flash
This commit is contained in:
Yun Chan 2026-09-15 03:37:47 +09:00
parent 0e568f1f0a
commit a5a8da7424
37 changed files with 2841 additions and 10 deletions

View file

@ -0,0 +1,76 @@
# Paca 배포·유통 키트 (Distribution Kit)
> **목적**: PACA를 패키지 매니저·다운로드 포털·대안 사이트에 등재해 **영구(evergreen) 유입 채널**을 확보한다.
> **배경/근거**: `docs/GROWTH_PLAN.md` §2. 런치 스파이크는 48시간이면 사라지지만, 이 계층은 수년간 설치를 누적한다.
> **상태**: winget / Chocolatey / Scoop 매니페스트 값을 **v1.2.0 공개 릴리스 기준으로 채움 완료**(해시·ProductCode·UpgradeCode·iconUrl). 저장소 제출(PR/push)만 계정 작업으로 남음.
## 0. 공통 전제 (모든 채널의 관문)
- [ ] **무인(silent) 설치 가능**: winget/Chocolatey/Scoop/포털 모두 사용자 상호작용 없는 설치를 요구하거나 테스트한다.
- [ ] **PUP(애드웨어) 없음**: winget 은 PUA 자동 거부, FileHorse/Snapfiles 은 즉시 삭제. 번들·툴바 금지.
- [ ] **설치자 코드 서명(Authenticode)**: AV 오탐을 줄이고 포털 심사를 통과한다.
- [ ] **VirusTotal 청정** 확인 후 제출.
- [ ] **버전 고정 URL**: `.../latest` 금지. 해시가 버전마다 바뀌므로 고정 경로를 쓴다.
현재 릴리스 자산(Forgejo): `https://git.chanpaca.net/Video-Downloader/releases/releases/download/v{VERSION}/Paca-Setup-{arch}.{ext}`
---
## 1. winget (Windows Package Manager) — 최고 ROI
`winget install Paca.Paca` 한 줄로 모든 Windows 11 에 배포된다.
- 매니페스트 위치(리포지토리): `microsoft/winget-pkgs` → `manifests/p/Paca/Paca/{VERSION}/`
- 제출 파일 3종(멀티파일 필수, singleton 금지):
- `Paca.Paca.yaml` (version)
- `Paca.Paca.installer.yaml` (installer)
- `Paca.Paca.locale.en-US.yaml` (defaultLocale)
- 템플릿: `build/distribution/winget/`
- 절차: `wingetcreate new <installer-url>` 로 초안 생성 → `winget validate` → PR 1개(패키지 1버전) → Microsoft CLA 서명.
- 필수 채움: `InstallerSha256`(`winget hash <file>`), MSI `ProductCode`, `InstallerLocale`, `ElevationRequirement`(Program Files 설치 시 `elevationRequired`).
- 주의: `.ps1`/`.bat` 설치는 불가. MSI/MSIX/EXE/zip 만. URL 은 HTTPS 필수.
## 2. Chocolatey — 커뮤니티 저장소
- 템플릿: `build/distribution/chocolatey/` (`paca.nuspec`, `tools/chocolateyInstall.ps1`, `tools/chocolateyUninstall.ps1`)
- 절차: `choco new paca` 로 구조 생성 후 템플릿 대체 → `choco pack` → `choco push paca.{VERSION}.nupkg --source https://push.chocolatey.org/`
- 규칙: `licenseUrl`/`projectUrl` 필수, `iconUrl` 은 PNG(제어 가능한 호스트), `raw.githubusercontent.com` 금지(CPMR0076), `tools` 스크립트는 헬퍼(`Install-ChocolateyPackage`) 사용 + **BOM 포함 UTF-8**.
- 모더레이션: Pending→Ready→Approved. 35일 무응답 시 자동 거절.
## 3. Scoop Extras — 포터블/개발자 채널
- 템플릿: `build/distribution/scoop/paca.json`
- 절차: `ScoopInstaller/Extras` 이슈로 신규 앱 제안(필수) → PR → `/verify` 코멘트.
- 필수: `architecture`(64bit/arm64), `hash`(SHA256), SPDX `license`, 그리고 **`checkver`+`autoupdate`**(없으면 대개 거절).
- 설치자가 EXE/MSI 뿐이면 `#/dl.7z` 추출 트릭 또는 `innosetup: true` 사용.
## 4. 다운로드 포털 (대중 유입층)
모더레이션에 **2~3주** 걸리므로 런치 3~4주 전 제출한다.
- **Softpedia**: `softpedia.com/submit_pad.php` (PAD 권장). 봇 차단이 강하므로 실제 브라우저로 제출.
- **FileHorse**: `filehorse.com/contact/` 로 10개 항목(이름·버전·사이트·설치링크·라이선스·256px 아이콘·스크린샷·설명·YouTube·PAD) 전달. VirusTotal/Safe Browsing 검사 통과 필수.
- **Snapfiles**: `snapfiles.com/dev/` 개발자센터 로그인 후 제출. 직접 설치·테스트, AV 다중 검사.
- **MajorGeeks**: `mgnews AT majorgeeks.com` (파일), `marketing@majorgeeks.com` (PR). VMware 설치 테스트, 4점 이상이어야 등재.
## 5. AlternativeTo — "IDM 대안" 검색 흡수
- 계정 생성 후 **7일 aging** 필요(+이메일 인증). 무료 큐는 수개월, **$5 priority** 는 1~2영업일.
- 등재 후 **핵심은 "Suggest Alternatives"**: IDM, 4K Video Downloader, JDownloader, yt-dlp, Xtreme Download Manager, Free Download Manager, VideoProc 을 대안으로 연결해야 비교 페이지에 노출된다.
- 필수 필드: Name(공식명만), Short Description, Website, Pricing, Tags, Platforms, Author(회사), 128px+ 정사각 아이콘.
## 6. 런치 채널 (스파이크)
- **Product Hunt**: 화/수 00:01 PST, 코어 200~400명 확보, 첫 3시간 집중. 6개월 쿨다운.
- **Show HN**: 화/수 07:30 ET, 다운로드 가능한 빌드 + 첫 댓글에 개발 배경 상세. 투표 요청 금지.
- **Reddit**: `r/software`, `r/opensource`, `r/foss`, `r/selfhosted`, `r/DataHoarder`, `r/privacy` — 링크 도배 금지, 개발자 자기소개 필수.
- **awesome 리스트 PR**: `awesome-selfhosted`, `awesome-windows`, `awesome-video`.
- **뉴스레터 핏치**: TLDR(47만), selfh.st(자체호스팅 3만+).
## 7. 확정 값 (v1.2.0)
| 항목 | 값 |
|---|---|
| `VERSION` | `1.2.0` |
| 릴리스 자산 URL | `https://git.chanpaca.net/Video-Downloader/releases/releases/download/v1.2.0/` |
| `SHA256_X64_MSI` | `56f305290656e636360bcf70377f3b83327149a3ae925f8350d90402f8ed43e3` |
| `SHA256_ARM64_MSI` | `51c7a3d97cb5f52ed319c9c9be8aa5c6e403273f296369befbd01cd1a27e3f00` |
| `SHA256_X64_EXE` | `2e963e1a5bd9d1a8faa186d2629bc137e46e26d10bfa8f3702b9f7e97619bdd7` |
| `SHA256_ARM64_EXE` | `c9d566ecdd2890bb367195c805e042345f0c9f121c66bd0dd63bc87c08e597db` |
| `MSI_PRODUCTCODE` (x64) | `{02433E35-4DD8-4816-A1FD-2587DDCFEBF8}` |
| `MSI_UPGRADECODE` (x64) | `{65393C7D-17DC-4B9F-9D0B-F9911092C449}` |
| x64 EXE/MSI 크기 | `67,836,807` / `73,552,796` |
| arm64 EXE/MSI 크기 | `61,835,054` / `68,166,544` |
> x64 MSI 는 공개 릴리스에서 내려받아 로컬 해시와 **바이트 일치를 검증**했다. 나머지 자산은 크기가 릴리스와 정확히 일치해 동일 빌드임을 확인했다(해시 재산출 없이 신뢰).
> 버전이 올라가면 `README §7` 값과 각 매니페스트의 버전·URL·해시를 함께 갱신한다.