feat(ads/seo/release): v1.2.0 with live Google Ads, isolated ad profile, ads.txt, and SEO/AEO/GEO optimization
This commit is contained in:
parent
a88aafa1e5
commit
0e568f1f0a
975 changed files with 130593 additions and 16783 deletions
|
|
@ -1,4 +1,4 @@
|
|||
# Video Downloader — 멀티플랫폼 배포 체계 계획서 (v1)
|
||||
# Video Downloader — 멀티플랫폼 배포 체계 계획서 (v1)
|
||||
|
||||
> **범위**: Windows · macOS · Linux 데스크톱 + Android · iOS 모바일의 **빌드→서명→패키징→배포→업데이트** 전 체계.
|
||||
> GitHub Releases 를 단일 배포 소스로, GitHub Actions 로 전 아티팩트 자동 빌드.
|
||||
|
|
@ -40,11 +40,11 @@ GitHub Actions 대신(또는 보완으로) **사용자 소유 빌드머신 2대*
|
|||
|
||||
| 제품 | 플랫폼 | 아티팩트 | 채널 | 서명 |
|
||||
|---|---|---|---|---|
|
||||
| **App (WPF+WebView2)** — 주력 | Windows x64 | `VideoDownloader-Setup-x64.exe` (Inno, 기존) | GitHub Releases | Authenticode (선택, 후순위) |
|
||||
| | Windows arm64 | `VideoDownloader-Setup-arm64.exe` (기존) | 〃 | 〃 |
|
||||
| **App (Avalonia 셸)** — 크로스플랫폼 이관 | Linux x64/arm64 | `videodownloader-linux-x64.tar.gz` (기본) + `.AppImage` + `.deb` | GitHub Releases | (GPG 서명 선택) |
|
||||
| | macOS x64/arm64 | `VideoDownloader-<arch>.dmg` (+ `.app` in DMG) | GitHub Releases | Developer ID + 공증 필수 |
|
||||
| **Mobile (MAUI)** | Android | `VideoDownloader-<ver>-arm64.apk` | GitHub Releases + Obtainium | Keystore (CI 시크릿) |
|
||||
| **App (WPF+WebView2)** — 주력 | Windows x64 | `Paca-Setup-x64.exe` (Inno, 기존) | GitHub Releases | Authenticode (선택, 후순위) |
|
||||
| | Windows arm64 | `Paca-Setup-arm64.exe` (기존) | 〃 | 〃 |
|
||||
| **App (Avalonia 셸)** — 크로스플랫폼 이관 | Linux x64/arm64 | `Paca-linux-x64.tar.gz` (기본) + `.AppImage` + `.deb` | GitHub Releases | (GPG 서명 선택) |
|
||||
| | macOS x64/arm64 | `Paca-<arch>.dmg` (+ `.app` in DMG) | GitHub Releases | Developer ID + 공증 필수 |
|
||||
| **Mobile (MAUI)** | Android | `Paca-<ver>-arm64.apk` | GitHub Releases + Obtainium | Keystore (CI 시크릿) |
|
||||
| | Android (Play, 선택) | `.aab` | Google Play (추출코드 없는 빌드) | Play App Signing |
|
||||
| | iOS | `.ipa` | TestFlight → App Store | Apple 배포 인증서 |
|
||||
| **Server / 웹 컴패니언** | 데스크톱 앱에 내장 | 별도 배포 없음 (앱이 Kestrel 서빙) | — | 앱 서명에 포함 |
|
||||
|
|
@ -156,7 +156,7 @@ jobs:
|
|||
|
||||
## 5-bis. CI/CD 현행 채널 — Forgejo Actions 자체 러너 (2026-08-17 가동)
|
||||
|
||||
저장소가 자체 Forgejo(`https://git.chanpaca.net/Video-Downloader/client`)로 이관되고 org 러너 3대가
|
||||
저장소가 자체 Forgejo(`https://git.chanpaca.net/Paca/client`)로 이관되고 org 러너 3대가
|
||||
등록되어, §5(GitHub) 대신 **자체 러너로 전 아티팩트를 빌드·배포**한다. §5 는 저장소 GitHub 공개 시
|
||||
백업 채널로 유지(`.github/workflows/release.yml` 존치).
|
||||
|
||||
|
|
@ -175,19 +175,19 @@ jobs:
|
|||
- **리허설**: workflow_dispatch → `ci-rehearsal` draft prerelease 로 태그 없이 전 파이프라인 검증.
|
||||
- **시크릿**: `RELEASE_TOKEN`(Forgejo PAT, `write:repository`) — 릴리스 생성·자산 업로드. 체크아웃은 잡
|
||||
자동 토큰(`github.token`). `ANDROID_KEYSTORE/ALIAS/PASS` 등록 전까지 APK 는 디버그 서명.
|
||||
- **업로드 대상**: 공개 배포 저장소 **`Video-Downloader/releases`**(워크플로 env `RELEASE_REPO`).
|
||||
- **업로드 대상**: 공개 배포 저장소 **`Paca/releases`**(워크플로 env `RELEASE_REPO`).
|
||||
소스 저장소(client)는 비공개라 자산 익명 다운로드가 불가해 분리했다. draft 는 익명에게 보이지
|
||||
않으므로 "빌드 → draft → QA → 수동 Publish" 흐름은 그대로다. Publish 하면 §5-ter 사이트가 노출한다.
|
||||
- **머신 전제**: win = SDK 8/10 + `maui-android` 워크로드 + JDK 17 + Inno Setup 6 ·
|
||||
linux/mac = `~/.dotnet` SDK 8.0.424 + 10.0.400 (§0.5).
|
||||
- **갭**: §6 자동 업데이트 v1(`UpdateChecker`)은 GitHub Releases API 를 폴링하므로 GitHub 공개 전까지
|
||||
미동작 — Forgejo Releases API(`/repos/{owner}/{repo}/releases/latest`, 동일 형태) 대응은 후속 항목.
|
||||
대상은 공개 저장소 `Video-Downloader/releases` 가 되어야 한다.
|
||||
대상은 공개 저장소 `Paca/releases` 가 되어야 한다.
|
||||
|
||||
## 5-ter. 배포 사이트 — MEDIABROWSER (Cloudflare Pages, 2026-08-18 가동)
|
||||
## 5-ter. 배포 사이트 — Paca (Cloudflare Pages, 2026-08-18 가동)
|
||||
|
||||
제품 배포명은 **MEDIABROWSER** 로 하고, 프로모션/다운로드/사용 안내 3페이지 정적 사이트를
|
||||
Cloudflare Pages 에 올렸다. **https://mediabrowser-7r4.pages.dev** (mediabrowser 서브도메인 선점으로
|
||||
제품 배포명은 **Paca** 로 하고, 프로모션/다운로드/사용 안내 3페이지 정적 사이트를
|
||||
Cloudflare Pages 에 올렸다. **https://Paca-7r4.pages.dev** (Paca 서브도메인 선점으로
|
||||
접미 부여 — 커스텀 도메인 연결은 후속).
|
||||
|
||||
- **소스**: `site/` — `index.html`(프로모션: 라이트 글래스모피즘 + CSS scroll-driven 패럴랙스,
|
||||
|
|
@ -197,16 +197,16 @@ Cloudflare Pages 에 올렸다. **https://mediabrowser-7r4.pages.dev** (mediabro
|
|||
`site/fetch-releases.mjs` 가 공개 저장소 릴리스를 `site/releases.json`(git 무시)으로 굽는다.
|
||||
published 릴리스만 포함(draft 제외), 최신판 강조 + 이전 버전 접힘 + OS 자동 감지 권장 표시.
|
||||
- **배포**: `./build/deploy-site.ps1` — .env 의 `CLOUDFLARE_API_TOKEN/ACCOUNT_ID` 로
|
||||
`wrangler pages deploy site --project-name mediabrowser`. **자동화(2026-08-18)**: 공개 releases
|
||||
`wrangler pages deploy site --project-name Paca`. **자동화(2026-08-18)**: 공개 releases
|
||||
저장소의 `.forgejo/workflows/site-deploy.yml` 이 릴리스 Publish 이벤트에서 사이트를 자동 재배포한다
|
||||
(시크릿: CLIENT_TOKEN=client 읽기 PAT, CLOUDFLARE_API_TOKEN/ACCOUNT_ID).
|
||||
- **개명 완료(2026-08-18)**: 설치자 `MediaBrowser-Setup-<arch>.exe` · tar.gz `mediabrowser-<rid>` ·
|
||||
APK `MediaBrowser-<ver>-arm64.apk` · 앱 타이틀/모바일 표시명 MediaBrowser · obtainium.json 공개 저장소 URL.
|
||||
AppId(GUID)·실행 파일명(VideoDownloader.exe)·데이터 경로는 유지(업그레이드·사용자 데이터 호환).
|
||||
- **커스텀 도메인(2026-08-18 완료)**: **https://mediabrowser.chanpaca.net** — Pages 프로젝트 도메인 등록 +
|
||||
DNS CNAME(`mediabrowser` → `mediabrowser-7r4.pages.dev`, 프록시 ON, 대시보드에서 추가). og:url 도 정식
|
||||
도메인 기준으로 갱신. 참고: API 토큰(CLOUDFLARE_API_TOKEN)에는 Zone DNS 편집 권한이 없다 —
|
||||
DNS 자동화가 필요해지면 토큰에 `Zone → DNS → Edit` 권한을 추가할 것.
|
||||
- **개명 완료(2026-08-18)**: 설치자 `Paca-Setup-<arch>.exe` · tar.gz `Paca-<rid>` ·
|
||||
APK `Paca-<ver>-arm64.apk` · 앱 타이틀/모바일 표시명 Paca · obtainium.json 공개 저장소 URL.
|
||||
AppId(GUID)·실행 파일명(Paca.exe)·데이터 경로는 유지(업그레이드·사용자 데이터 호환).
|
||||
- **커스텀 도메인(2026-08-18 완료)**: **https://Paca.chanpaca.net** — Pages 프로젝트 도메인 등록 +
|
||||
DNS CNAME(`Paca` → `Paca-7r4.pages.dev`, 프록시 ON). og:url 도 정식
|
||||
도메인 기준으로 갱신. **API 토큰 통합(2026-08-18)**: `CLOUDFLARE_API_TOKEN`에 `Account → Cloudflare Pages → Edit`,
|
||||
`Zone → DNS → Edit`(`chanpaca.net`), `Zone → Zone → Read` 권한을 통합하여 Pages 배포 및 DNS 조회가 API로 일원화됨.
|
||||
|
||||
## 6. 업데이트 체계
|
||||
|
||||
|
|
@ -242,14 +242,14 @@ Cloudflare Pages 에 올렸다. **https://mediabrowser-7r4.pages.dev** (mediabro
|
|||
`.env.example`(빈 값 템플릿)뿐 — 공개해도 유출 없음.
|
||||
|
||||
```powershell
|
||||
gh repo create <owner>/videodownloader --public --source . --push # 또는 --private 로 시작
|
||||
gh repo create <owner>/Paca --public --source . --push # 또는 --private 로 시작
|
||||
git tag v1.0.0 && git push origin v1.0.0 # → release.yml 자동 실행(Draft)
|
||||
```
|
||||
|
||||
공개 후 마무리 3가지:
|
||||
1. `build/obtainium.json` · README 의 `<owner>/<repo>` 치환
|
||||
2. (선택) Android 서명: 시크릿 `ANDROID_KEYSTORE`(base64)/`ANDROID_KEY_ALIAS`/`ANDROID_KEY_PASS` 등록
|
||||
3. 설정창 "앱 업데이트"에 `owner/videodownloader` 입력 → D6 v1 폴링 활성
|
||||
3. 설정창 "앱 업데이트"에 `owner/Paca` 입력 → D6 v1 폴링 활성
|
||||
|
||||
### D4 — macOS 서명·공증 (Apple Developer Program 가입 후)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue