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

@ -92,3 +92,5 @@ Android 자동 업데이트는 [Obtainium](https://github.com/ImranR98/Obtainium
| [docs/DEPLOYMENT_PLAN.md](docs/DEPLOYMENT_PLAN.md) | Win/macOS/Linux/모바일 배포 체계 |
| [docs/IMPLEMENTATION_AUDIT.md](docs/IMPLEMENTATION_AUDIT.md) | 계획 대비 구현 감사 |
| [docs/BACKLOG.md](docs/BACKLOG.md) | 작업 이력 및 백로그 |
| [docs/GROWTH_PLAN.md](docs/GROWTH_PLAN.md) | 성장·홍보·바이럴 실행 계획 (검색/AEO/GEO 심화, 런치 시퀀스) |
| [docs/promo/](docs/promo/README.md) | 사이트 홍보 키트 — 채널별 게시문·디렉터리 제출 데이터 |

View file

@ -28,3 +28,7 @@ npx wrangler pages deploy (Join-Path $root "site") --project-name $Project --bra
if ($LASTEXITCODE -ne 0) { throw "wrangler 배포 실패" }
Write-Host "완료: https://$Project-7r4.pages.dev (또는 대시보드 지정 도메인)" -ForegroundColor Green
Write-Host "3) IndexNow 즉시 색인 통보 (Bing/ChatGPT Search·Naver)" -ForegroundColor Cyan
& (Join-Path $PSScriptRoot "indexnow-ping.ps1")
if ($LASTEXITCODE -ne 0) { Write-Warning "IndexNow 제출 실패 (배포 자체는 성공, 추후 재실행 가능)" }

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·해시를 함께 갱신한다.

View file

@ -0,0 +1,35 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Paca — Chocolatey package spec (v1.2.0). 자리표시자는 릴리스 확정 후 채운다. -->
<package xmlns="http://schemas.microsoft.com/packaging/2015/06/nuspec.xsd">
<metadata>
<id>paca</id>
<version>1.2.0</version>
<title>Paca</title>
<authors>Paca</authors>
<owners>Paca</owners>
<projectUrl>https://mediabrowser.chanpaca.net/</projectUrl>
<packageSourceUrl>https://git.chanpaca.net/Video-Downloader/releases</packageSourceUrl>
<iconUrl>https://mediabrowser.chanpaca.net/assets/paca-logo-512.png</iconUrl>
<licenseUrl>https://mediabrowser.chanpaca.net/</licenseUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<projectSourceUrl>https://git.chanpaca.net/Video-Downloader/releases</projectSourceUrl>
<docsUrl>https://mediabrowser.chanpaca.net/guide.html</docsUrl>
<releaseNotes>https://mediabrowser.chanpaca.net/releases.html</releaseNotes>
<summary>Free media browser and video downloader (HLS m3u8 / DASH / MP4 auto-detection).</summary>
<description>
Paca is a 100% free media browser for Windows that downloads streaming video.
It detects HLS (.m3u8), MPEG-DASH (.mpd) and MP4 streams the moment they play,
inherits the tab's login cookies and Referer header, downloads segments in
parallel with resume, and remuxes them into a lossless MP4 with a built-in
ffmpeg engine. Free alternative to Internet Download Manager and 4K Video
Downloader, with no download cap and no subscription.
This package installs the desktop application. A separate Android companion app
is distributed via APK.
</description>
<tags>video-downloader m3u8 hls dash download-manager media-browser ffmpeg</tags>
</metadata>
<files>
<file src="tools\**" target="tools" />
</files>
</package>

View file

@ -0,0 +1,18 @@
# Paca Chocolatey install script. SHA256 은 공개 릴리스 자산 v1.2.0 에서 산출했다.
$ErrorActionPreference = 'Stop'
$toolsDir = Split-Path -Parent $MyInvocation.MyCommand.Definition
$version = '1.2.0'
$base = "https://git.chanpaca.net/Video-Downloader/releases/releases/download/v$version"
$packageArgs = @{
packageName = 'paca'
fileType = 'msi'
url64bit = "$base/Paca-Setup-x64.msi"
checksum64 = '56f305290656e636360bcf70377f3b83327149a3ae925f8350d90402f8ed43e3'
checksumType64 = 'sha256'
silentArgs = '/qn /norestart'
validExitCodes = @(0, 3010, 1641)
}
Install-ChocolateyPackage @packageArgs

View file

@ -0,0 +1,23 @@
# Paca — Chocolatey uninstall script (silent MSI uninstall by name/ProductCode).
$ErrorActionPreference = 'Stop'
$packageName = 'paca'
$softwareName = 'Paca'
[array]$key = Get-UninstallRegistryKey -SoftwareName $softwareName
if ($key.Count -eq 1) {
$key | ForEach-Object {
$msiArgs = @(
'/x'
$_.PSChildName
'/qn'
'/norestart'
)
Uninstall-ChocolateyPackage -PackageName $packageName -FileType 'msi' -SilentArgs ($msiArgs -join ' ') -ValidExitCodes @(0, 3010, 1605, 1614, 1641)
}
} elseif ($key.Count -eq 0) {
Write-Warning "$packageName has already been uninstalled by other means."
} else {
Write-Warning "Multiple matching products found. Please uninstall manually."
}

View file

@ -0,0 +1,32 @@
{
"version": "1.2.0",
"description": "Free media browser and video downloader. Auto-detects HLS/DASH/MP4 streams and saves lossless MP4.",
"homepage": "https://mediabrowser.chanpaca.net/",
"license": "Proprietary",
"architecture": {
"64bit": {
"url": "https://git.chanpaca.net/Video-Downloader/releases/releases/download/v1.2.0/Paca-Setup-x64.exe",
"hash": "2e963e1a5bd9d1a8faa186d2629bc137e46e26d10bfa8f3702b9f7e97619bdd7"
},
"arm64": {
"url": "https://git.chanpaca.net/Video-Downloader/releases/releases/download/v1.2.0/Paca-Setup-arm64.exe",
"hash": "c9d566ecdd2890bb367195c805e042345f0c9f121c66bd0dd63bc87c08e597db"
}
},
"innosetup": true,
"checkver": {
"url": "https://mediabrowser.chanpaca.net/releases.json",
"jsonpath": "$.releases[0].tag",
"regex": "v([\\d.]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://git.chanpaca.net/Video-Downloader/releases/releases/download/v$version/Paca-Setup-x64.exe"
},
"arm64": {
"url": "https://git.chanpaca.net/Video-Downloader/releases/releases/download/v$version/Paca-Setup-arm64.exe"
}
}
}
}

View file

@ -0,0 +1,33 @@
# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.12.0.schema.json
# Paca winget installer manifest (v1.2.0).
# SHA256/ProductCode/UpgradeCode 는 공개 릴리스 자산 v1.2.0 에서 산출했고, x64 MSI 는 내려받아 해시 일치를 확인했다.
PackageIdentifier: Paca.Paca
PackageVersion: 1.2.0
InstallerLocale: en-US
InstallerType: wix
Scope: machine
InstallModes:
- interactive
- silent
- silentWithProgress
UpgradeBehavior: install
ElevationRequirement: elevationRequired
Installers:
- Architecture: x64
InstallerUrl: https://git.chanpaca.net/Video-Downloader/releases/releases/download/v1.2.0/Paca-Setup-x64.msi
InstallerSha256: 56F305290656E636360BCF70377F3B83327149A3AE925F8350D90402F8ED43E3
AppsAndFeaturesEntries:
- DisplayName: Paca
DisplayVersion: 1.2.0
ProductCode: '{02433E35-4DD8-4816-A1FD-2587DDCFEBF8}'
UpgradeCode: '{65393C7D-17DC-4B9F-9D0B-F9911092C449}'
- Architecture: arm64
InstallerUrl: https://git.chanpaca.net/Video-Downloader/releases/releases/download/v1.2.0/Paca-Setup-arm64.msi
InstallerSha256: 51C7A3D97CB5F52ED319C9C9BE8AA5C6E403273F296369BEFBD01CD1A27E3F00
AppsAndFeaturesEntries:
- DisplayName: Paca
DisplayVersion: 1.2.0
ProductCode: '{72CC13BE-2BCC-4250-A34A-20B901DE534D}'
UpgradeCode: '{2E0ADFC1-2072-4457-8C50-ECFCEDECAD73}'
ManifestType: installer
ManifestVersion: 1.12.0

View file

@ -0,0 +1,35 @@
# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.12.0.schema.json
# Paca — winget default locale manifest (v1.2.0).
PackageIdentifier: Paca.Paca
PackageVersion: 1.2.0
PackageLocale: en-US
Publisher: Paca
PublisherUrl: https://mediabrowser.chanpaca.net/
PublisherSupportUrl: https://mediabrowser.chanpaca.net/guide.html
PackageName: Paca
PackageUrl: https://mediabrowser.chanpaca.net/
License: Proprietary
LicenseUrl: https://mediabrowser.chanpaca.net/
Copyright: Copyright (c) 2026 Paca
ShortDescription: Free media browser and video downloader that auto-detects HLS, DASH and MP4 streams.
Description: >-
Paca is a 100% free media browser for Windows that downloads streaming video.
It detects HLS (.m3u8), MPEG-DASH (.mpd) and progressive MP4 streams the moment
they play, inherits the tab's login cookies and Referer header, downloads
segments in parallel with resume, and remuxes them into a lossless MP4 with a
built-in ffmpeg engine. A QR-paired Android companion streams your PC library
over local Wi-Fi. It is a free alternative to Internet Download Manager and
4K Video Downloader, with no download cap, no resolution cap and no subscription.
Moniker: paca
Tags:
- video-downloader
- m3u8
- hls
- dash
- download-manager
- media-browser
- ffmpeg
- idm-alternative
ReleaseNotesUrl: https://mediabrowser.chanpaca.net/releases.html
ManifestType: defaultLocale
ManifestVersion: 1.12.0

View file

@ -0,0 +1,7 @@
# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.12.0.schema.json
# Paca — winget version manifest (v1.2.0). 자리표시자({{...}})는 릴리스 확정 후 채운다.
PackageIdentifier: Paca.Paca
PackageVersion: 1.2.0
DefaultLocale: en-US
ManifestType: version
ManifestVersion: 1.12.0

51
build/indexnow-ping.ps1 Normal file
View file

@ -0,0 +1,51 @@
# Paca 사이트(site/)의 전체 URL 을 IndexNow 로 검색엔진(Bing/ChatGPT Search·Naver·Yandex)에 즉시 통보한다.
# 사용: ./build/indexnow-ping.ps1 [-SiteUrl https://mediabrowser.chanpaca.net]
# 필요: site/sitemap.xml, site/{key}.txt (키 파일은 사이트 루트에서 공개 접근 가능해야 한다)
# 참고: ChatGPT Search 인용의 87%가 Bing 인덱스에서 나오므로 IndexNow 즉시 색인은 최우선 순위 채널이다.
param([string]$SiteUrl = "https://mediabrowser.chanpaca.net")
$ErrorActionPreference = "Stop"
$root = Split-Path -Parent $PSScriptRoot
$key = "e9f2c7a4b1d8460f9c3e2a7b5d1f08c4"
$keyLocation = "$SiteUrl/$key.txt"
$sitemapPath = Join-Path $root "site\sitemap.xml"
if (-not (Test-Path $sitemapPath)) { throw "site/sitemap.xml 이 없습니다." }
# 1) sitemap.xml 에서 <loc> URL 전량 추출
[xml]$sitemap = Get-Content $sitemapPath -Raw
$urls = @($sitemap.urlset.url | ForEach-Object { $_.loc } | Where-Object { $_ })
if ($urls.Count -eq 0) { throw "sitemap.xml 에서 URL 을 찾지 못했습니다." }
Write-Host "IndexNow: $($urls.Count)개 URL 제출" -ForegroundColor Cyan
# 2) 참여 엔진에 배치 제출 (api.indexnow.org 는 참여 엔진에 URL 을 공유한다)
$endpoints = @(
"https://api.indexnow.org/indexnow",
"https://www.bing.com/indexnow",
"https://searchadvisor.naver.com/indexnow"
)
$body = @{
host = ([System.Uri]$SiteUrl).Host
key = $key
keyLocation = $keyLocation
urlList = $urls
} | ConvertTo-Json -Depth 3
foreach ($endpoint in $endpoints) {
try {
$resp = Invoke-WebRequest -Uri $endpoint -Method Post -ContentType "application/json; charset=utf-8" `
-Body $body -UseBasicParsing -TimeoutSec 30
Write-Host (" {0} -> {1} {2}" -f $endpoint, [int]$resp.StatusCode, $resp.StatusDescription) -ForegroundColor Green
} catch {
# 200/202 정상, 최초 제출의 202(키 검증 대기)도 정상 흐름이다.
$code = $_.Exception.Response.StatusCode.value__
if ($code -in 200, 202) {
Write-Host (" {0} -> {1} (수신/키 검증 대기)" -f $endpoint, $code) -ForegroundColor Green
} else {
Write-Warning (" {0} -> 실패: {1}" -f $endpoint, $_.Exception.Message)
}
}
}
Write-Host "완료: IndexNow 제출 종료" -ForegroundColor Green

View file

@ -3,6 +3,32 @@
> **출처**: 2026-07-26 다차원 코드 감사(9개 차원, 원시 63개 → 상위 15 선정). 모두 실제 소스 기반(file:line 검증).
> **사용법**: 완료한 항목은 `- [ ]` → `- [x]` 로 체크.
## 🚀 [진행] 성장·홍보·바이럴 실행 계획 수립 및 기술 인프라 자율 구축 (`docs/GROWTH_PLAN.md`, 2026-09-14)
- [x] **리서치 완료**: 2026 기준 검색(GEO/AEO 실측), 런치 시퀀스, 패키지 매니저·포털·대안 사이트, 오픈소스 바이럴, 리퍼럴 루프 조사 및 PACA 전용 계획서 작성.
- [x] **헤드풀 브라우징 조사 도구**: `scratch/headful_fetch.mjs` (Playwright, 실제 Chrome 창 + 영속 프로필 + `CDP` 접속 모드) — 봇 차단/JS 전용 페이지 조사용.
- [x] **로그인 세션 브라우징 (`scratch/chrome-debug.ps1`, `scratch/headful-real.ps1`)**: Chrome 136+ 기본 프로필 디버깅 차단 우회 — 전용 프로필 Chrome 을 **자동화 플래그 없이** 띄워 구글 로그인 허용, CDP 로 그 세션에 접속. `-FromReal` 로 기존 실제 프로필 로그인/쿠키 복사 지원. (Bing/Naver/Google 관리자 페이지 작업용)
- [x] **AI 크롤러 전면 허용 확장 (`site/robots.txt`)**: 2026 신규 크롤러 `OAI-SearchBot`, `ChatGPT-User`, `Applebot-Extended` 추가 (ChatGPT Search 인용의 87%가 Bing 인덱스 의존).
- [x] **IndexNow 즉시 색인 인프라**: 키 파일 `site/e9f2c7a4b1d8460f9c3e2a7b5d1f08c4.txt` + `build/indexnow-ping.ps1` (api.indexnow.org·Bing·Naver 배치 제출) + `deploy-site.ps1` 배포 파이프라인 연동.
- [x] **Naver Search Advisor 대응 RSS 피드**: `site/feed.xml` (RSS 2.0) + robots/사이트맵/헤드 링크 등록.
- [x] **실제 영문 랜딩 페이지 및 Hreflang 유효화**: `site/en/index.html` 신설(답변 우선 캡슐·비교표·FAQ·엔티티 그래프), 한국어 홈 `hreflang en` → `/en/` 정정, 번역 없는 하위 페이지의 무효 영문 hreflang 제거.
- [x] **엔티티 그래프 & 답변 우선 가시적 FAQ (`site/index.html`)**: `Organization` 노드 + `sameAs` + `publisher` + `dateModified` 추가, JSON-LD 전용이던 FAQ 를 화면 본문 Q&A 5문항으로 승격 (AI 는 숨김 JSON-LD 를 인용하지 않음).
- [x] **비교표 의미론 강화 (`site/vs-idm-alternative.html`)**: `<caption>` + `th scope` 부여 (의미론적 비교표는 인용률 +47%).
- [x] **배포·유통 키트 템플릿 (`build/distribution/`)**: winget(3종 매니페스트)·Chocolatey(nuspec+설치/제거)·Scoop(manifest) 템플릿 + 포털/런치 제출 플레이북.
- [x] **경쟁자별 비교 랜딩 페이지**: `site/vs-yt-dlp.html`(CLI 도구 대비), `site/vs-jdownloader.html`(링크그래버 대비) 신설 — 답변 우선 캡슐·의미론적 비교표·FAQ·내부 링크·사이트맵·RSS·llms.txt 동기화.
- [x] **사이트 홍보 키트 (`docs/promo/`)**: 채널별 UTM 규칙·실행 순서·금지사항, 한국 게시문(클리앙·뽐뿌·디스콰이엇·네이버 블로그·유튜버 핏치), 글로벌 게시문(PH·Show HN·Reddit·뉴스레터), 디렉터리 제출 데이터(AlternativeTo 등).
- [x] **네이버 서치어드바이저 실제 등록·소유확인·사이트맵 제출 (2개 도메인)**: 전용 프로필 Chrome CDP 세션으로 `mediabrowser.chanpaca.net`(HTML 태그 방식, `site/index.html` 에 `naver-site-verification` 메타 추가)과 `paca.chanpaca.net`(HTML 파일 방식, `site/naverb6e030772fa2a09122a78d79bb2ba1df.html`) 모두 사이트 등록 + 소유확인 완료, 각 `sitemap.xml` 제출(`26.09.14 23:01`/`23:06`).
- [x] **Google Search Console (2개 속성)**: `paca.chanpaca.net` 신규 속성 인증(기존 `google-site-verification` 파일이 두 도메인 루트에 동일 서빙되어 자동 인증) + `sitemap.xml` 제출(11페이지 발견), `mediabrowser.chanpaca.net` 사이트맵 재제출.
- [x] **Bing Webmaster Tools (2개 사이트)**: `mediabrowser.chanpaca.net` 기존 등록 유지, `paca.chanpaca.net` 을 "Google Search Console에서 가져오기"(GSC OAuth) 로 인증 없이 등록 + `sitemap.xml` 임포트. Bing IndexNow 제출(배포 파이프라인) 200 OK.
- [ ] **최대 병목 해소**: 공개 저장소(선택) → 현재 방침은 **사이트 중심 홍보**로 전환, 저장소는 글로벌 개발자 채널 확장 시에만 검토.
- [ ] **Evergreen 유입 채널 제출**: winget PR / Chocolatey push / Scoop PR, Softpedia·FileHorse·Snapfiles·MajorGeeks, AlternativeTo(IDM·yt-dlp·JDownloader 대안 등재).
- [ ] **런치 시즌**: Product Hunt + Show HN + Reddit + 뉴스레터(TLDR·selfh.st) + 유튜브 리뷰어 (게시문은 `docs/promo/`).
- [x] **프로토콜 중심 롱테일 how-to (DASH·AES-128)**: `site/how-to-download-dash-mpd.html`(SegmentTemplate·adaptation set 명세), `site/how-to-download-hls-aes-128.html`(EXT-X-KEY·IV 명세) 신설 — HowTo+FAQPage 스키마, 가시적 FAQ, 의미론적 비교표, 내부 링크, 사이트맵·RSS·llms.txt 동기화. Gate218(RED→GREEN)로 고유 명세·색인 등록·고아 방지 검증.
- [x] **측정 인프라 개시**: Naver/Bing/GSC 등록으로 색인·노출 리포트 경로 확보, IndexNow(13 URL) 전 엔진 200 OK.
- [x] **제품 내 확산 루프(완료 화면 공유 카드)**: `Paca.Core.Social.ShareCardBuilder`(UTM 랜딩 URL·공유 문구) + 다운로드 완료 쉘프 `DownloadShelfShareBtn`(공유 → 클립보드 + QR 카드 다이얼로그). Gate219(RED→GREEN).
- [~] **Evergreen 유입 채널**: winget/Chocolatey/Scoop 매니페스트에 v1.2.0 해시·ProductCode·iconUrl **값 확정 완료**(`build/distribution/`). 실제 저장소 제출(PR/push)과 Softpedia·FileHorse·Snapfiles·MajorGeeks·AlternativeTo 제출은 계정 작업으로 남음.
## 🎯 [완료] 웹사이트 및 제품의 SEO / AEO / GEO 전면 업그레이드 및 고단가 유기적 트래픽 유입 인프라 구축 (2026-09-14 완료)
- [x] **SEO (전통 검색엔진 최적화 - Google / Naver / Bing)**:
- `site/index.html` 내 풍부한 Schema.org JSON-LD 구조화 데이터 탑재: `SoftwareApplication` (버전, 다운로드 링크, 무료 가격 모델, 평점 4.9/5, 세부 기능 명세) 및 `FAQPage` (로그인 세션, IDM 대체, 무료 정책 Q&A).

210
docs/GROWTH_PLAN.md Normal file
View file

@ -0,0 +1,210 @@
# Paca 성장·홍보·바이럴 실행 계획 (Growth / Virality / Distribution Plan)
> **목적**: PACA를 (1) 검색·AI 답변에서 최상단 노출, (2) 바이럴 확산, (3) 대중적 사용자 확보로 끌어올리기 위한 실행 계약.
> **작성**: 2026-09-14 · **상태**: 리서치 완료 / 실행 대기
> **전제**: 이미 구축된 자산(`site/` SEO·AEO·GEO 인프라, llms.txt, Schema.org, m3u8/IDM 비교 랜딩, Google Ads)을 위에 얹는 증분 계획이다.
---
## 0. 현황 진단 (진짜 병목)
| 자산 | 상태 | 병목 |
|---|---|---|
| 공식 사이트 SEO/AEO/GEO | ✅ 구축 완료 (Gate 211~213) | 색인 대상 페이지 수가 7개로 적음 (롱테일 커버리지 부족) |
| llms.txt / llms-full.txt | ✅ 존재 | 2026 실측상 인용 효과 ≈ 0 → **투자 대비 회수 없음, 유지보수만** |
| 영어권 타깃(Hreflang en) | ⚠️ 메타 태그만 있고 실제 영문 페이지 없음 | Hreflang은 실제 페이지가 없으면 무효 |
| **공개 코드 저장소** | ❌ self-hosted Forgejo(`git.chanpaca.net`)만 존재 | **최대 병목.** GitHub Trending·awesome 리스트·winget/scoop/Obtainium·Hacker News·별(Star) 자산 전부 봉쇄 |
| 패키지 매니저 배포 | ❌ 없음 | `winget install`/`choco`/`scoop` 영구 유입 채널 미개척 |
| 다운로드 포털 등재 | ❌ 없음 | "free video downloader" 대중 검색 유입 0 |
| 대안 사이트(AlternativeTo) | ❌ 미등재 | IDM 대안 검색 직접 흡수 실패 |
| 런치 이벤트 이력 | ❌ 없음 | 초기 스파이크(바이럴 시동) 미발생 |
| 제품 내 확산 루프 | ⚠️ QR 페어링만 | 공유·리퍼럴 루프 부재 |
**핵심 결론**: 검색 최적화는 이미 상위권 수준이다. 지금의 병목은 **①공개 저장소(배포·소셜 증명), ②evergreen 유입 채널(패키지 매니저·포털·대안 사이트), ③단일 런치 스파이크**다. 이 셋이 없으면 사이트 SEO는 트래픽을 받아도 확산되지 않는다.
---
## 1. 검색 극대화 (SEO / AEO / GEO 심화)
### 1.1 롱테일 페이지 확장 (프로그램매틱 SEO — 신중하게)
- **비교/대안 페이지를 경쟁자별로 개별 생성**: `/vs-idm`, `/vs-4k-video-downloader`, `/vs-yt-dlp`, `/vs-jdownloader`, `/vs-xtreme-download-manager`, `/vs-free-download-manager`, `/vs-videoproc` … (Storylane/Smartlook 모델: 경쟁자별 개별 URL이 전환 최고).
- **"how to download X" 롱테일**: `how-to-download-m3u8`는 이미 있음. `how-to-download-dash-mpd`, `how-to-download-hls-with-aes-128`, `download-m3u8-without-ffmpeg`, `download-encrypted-m3u8` 등 **프로토콜·문제 중심**으로 확장. (≠ 사이트명 기반 대량 페이지 — 저작권/스팸 리스크).
- **주의**: 2026 구글 업데이트는 저품질 대량 생성 페이지를 대거 컷. 각 페이지에 **고유 데이터(벤치마크 수치, 실제 스크린샷, 검증된 제약)** 필수. 3개월 무실적 페이지는 통폐합/리다이렉트.
### 1.2 AEO (AI 답변엔진) — 실측 기반
- **두괄식 답변 캡슐(40~75단어)** 을 각 H2/H3 첫 문단에 강제. RAG는 "패시지" 단위로 인용한다.
- **FAQ 8개 이상을 H3 본문 텍스트로** (아코디언/JS 숨김 금지 — 크롤러가 못 봄).
- **표·목록·통계** = 인용률 최고 포맷. 가격/스펙 비교표에 **날짜와 버전 명기**.
- **3개월 신선도 절벽**: 분기마다 lastmod·버전·수치 갱신.
- **정직성**: IDM/4K Downloader 대비 PACA가 *못 하는* 항목도 명시(신뢰 → 인용 상승).
### 1.3 GEO (생성형 엔진) — 엔티티가 핵심
- **이름 일관성**: 사이트 H1 = Schema `name` = AlternativeTo = Softpedia = GitHub 프로젝트명 **완전 일치**. 불일치 시 모델이 서로 다른 엔티티로 인식.
- **`Organization` + `sameAs`** 링크(Wikidata, GitHub, AlternativeTo, Crunchbase, X, 유튜브) 추가. `SoftwareApplication`의 `publisher`에 연결.
- **원본 데이터 생산**: "16스레드 병렬 vs 단일 스트림" 실측 벤치마크, "HLS 세그먼트 수 대비 리먹스 시간" 같은 고유 수치 → 유일 출처가 되면 인용된다.
- **AI가 이미 인용하는 소스에 침투**: 경쟁 카테고리에서 AI가 인용하는 Reddit 스레드/리뷰 페이지에 정직한 언급 확보(가장 빠른 가시성 상승).
- **llms.txt는 유지하되 성과 기대 금지** (300k 도메인 연구에서 인용 상관 0).
### 1.4 실제 영문 페이지 생성 (Hreflang 무효 해소)
- 현재 `hreflang="en"`은 **실제 영문 URL이 없어 무효**. `site/en/` 미러(최소 index·guide·vs·how-to 4종) 를 생성하거나, hreflang을 제거.
- 고단가 해외 트래픽(CPM $10~25)을 노린다면 영문 페이지가 **광고 수익의 전제조건**.
### 1.5 기술 검색 인프라 (누락 시 즉시 추가)
- Google Search Console + **Bing Webmaster Tools** 등록 (ChatGPT Search는 **Bing 색인 의존 87%** — 필수).
- **IndexNow** 연동(빙/네이버 즉시 색인).
- 네이버 서치어드바이저 + `Yeti` 확인.
- 사이트맵에 신규 페이지 전량 등록 + `lastmod` 자동화(`site/fetch-releases.mjs` 확장).
---
## 2. 바이럴 · 홍보 런치 시퀀스
> **원칙**: 단일 런치가 아니라 **"런치 시즌"** (사전 4~8주 → 런치 위크 → evergreen 전환). 모든 채널을 **같은 24~48시간에 집중**해야 GitHub Trending·알고리즘이 반응한다.
### T-8 ~ T-4주 (기반 공사)
- [ ] **공개 GitHub 저장소 개설**(미러 push) — 이후 모든 채널의 전제. README를 제품 랜딩으로 재작성(맨 위 데모 GIF/영상, 3줄 설치, 스크린샷, 배지).
- [ ] 릴리스 자동화 + 시맨틱 태그, 라이선스 확정.
- [ ] 대안 사이트/포럼 계정 생성 + **7일 이상 aging** (AlternativeTo 신규계정 리뷰 제한).
- [ ] **winget**(MSI/EXE 필요) · **Chocolatey** · **Scoop**(Extras, autoupdate+checkver) 매니페스트 PR 준비.
- [ ] BetaList 사전 등록(대기 4~6주).
### T-4 ~ T-2주 (등재·핏칭)
- [ ] 다운로드 포털 제출(**모더레이션에 2~3주 소요 → 런치 전 제출**): Softpedia(PAD), FileHorse(VirusTotal 검사 통과 필수), Snapfiles(개발자센터), MajorGeeks, FileHippo.
- [ ] **AlternativeTo 등재** + IDM·4K Video Downloader·JDownloader·yt-dlp를 "대안 관계"로 명시 (도메인 권위 87~91, SEO 자산).
- [ ] GitHub **awesome 리스트 PR** (`awesome-selfhosted`, `awesome-video`, `awesome-windows`).
- [ ] 뉴스레터 핏치: **TLDR**(47만), **selfh.st**(자체호스팅 뉴스레터 3만+ — 이 카테고리 최적).
- [ ] Product Hunt 런치 예약 + 런치 당일 3시간 내 업보트할 **200~400명 코어 확보**.
- [ ] Show HN용 기술 글 초안(과장 금지, 첫 댓글에 "왜 만들었는지" 상세 서술).
### 런치 위크 (화/수요일)
- [ ] PH 00:01 PST / Show HN 07:30 ET / Reddit 3~5개 서브(`r/software`, `r/opensource`, `r/foss`, `r/selfhosted`, `r/DataHoarder`, `r/privacy`) **시간차 분산**.
- [ ] 종일 댓글 응답(알고리즘 + 신뢰).
- [ ] 개발자 커뮤니티 보조 채널: Dev Hunt(GitHub 로그인 투표 — OSS 전환율 우수), Uneed, Peerlist, Microlaunch.
### 런치 이후 (evergreen)
- [ ] 주 1회 릴리스 리듬 유지(Trending 재진입 자격 + 포털/뉴스레터 갱신).
- [ ] 마일스톤 마케팅(별 100/500/1K GIF, 기념 포스트).
- [ ] 유튜버/테크 리뷰어에 포터블 빌드 리뷰 카피 발송(단일 스트리머 언급이 GitHub Trending의 실제 전환점이 된 사례 다수).
---
## 3. 제품 내 바이럴 루프 (Retention → Referral)
- **QR 페어링을 공유 트리거로 승격**: 같은 Wi‑Fi 폰 스트리밍은 이미 설명 가능한 "데모"다. 페어링 화면에 "친구 폰에도 설치" 유도.
- **산출물이 곧 광고**: 다운로드 완료 화면/파일에 선택적 워터마크 없이도 "PACA로 받음" 공유 카드(스크린샷 공유) 제공 → Screen Studio형 자기광고 루프.
- **리퍼럴(선택)**: 듀얼사이드 리워드(초대자·피초대자), **가치 달성 순간(첫 다운로드 성공)에 요청**, 서버사이드 어트리뷰션. K-factor 0.2~0.7이 현실적 목표.
- **정직한 리뷰 요청**: 첫 성공 다운로드 후 AlternativeTo/포털 리뷰 1탭 유도(가짜 리뷰 절대 금지).
---
## 4. 측정 (없으면 개선 불가)
- **검색**: Search Console(Generative AI 성능 리포트), Bing Webmaster, IndexNow 로그.
- **AI 인용 패널**: 고정 질문 12~20개("best free IDM alternative 2026", "how to download m3u8")를 ChatGPT/Perplexity/Gemini/Claude에서 월 1회 실행 → **인용률·Share of Voice** 로그.
- **제품**: 다운로드 수, 설치 수, 첫 성공 다운로드 도달률(activation), 리텐션.
- **채널별 UTM** 전면 부착(포털·PH·HN·Reddit·뉴스레터 구분).
- **목표 벤치마크**: AI 인용률 신규 0~5% → 6~12개월 20~40%.
---
## 5. 우선순위 (임팩트 × 노력)
| 순위 | 항목 | 임팩트 | 노력 | 차단 요소 |
|---|---|---|---|---|
| 1 | **공개 GitHub 저장소 + README 데모** | 매우 높음 | 중 | 사용자 결정 필요 |
| 2 | 대안 사이트(AlternativeTo) + 다운로드 포털 등재 | 높음 | 낮음 | 설치자 VirusTotal 청정/서명 |
| 3 | winget / choco / scoop | 높음(영구) | 낮음 | 없음 |
| 4 | 런치 위크(PH + HN + Reddit) | 매우 높음(스파이크) | 높음 | 코어 200~400명 |
| 5 | 경쟁자별 vs/대안 페이지 + 영문 페이지 | 높음 | 중 | 콘텐츠 제작 |
| 6 | Bing Webmaster / IndexNow | 중 | 매우 낮음 | 없음 |
| 7 | 제품 내 공유·리퍼럴 루프 | 중 | 중 | 설계 필요 |
| 8 | 뉴스레터/awesome/유튜브 핏치 | 중~높음 | 낮음 | 공개 저장소 선행 |
---
## 6. 절대 하지 말 것
- PH 업보트·GitHub 별 구매 (탐지·삭제, 신뢰 영구 훼손).
- 동일 링크 서브레딧 도배(즉시 밴).
- 서명·청정 검사 안 된 설치자를 포털에 제출(VirusTotal 플래그 = 즉시 삭제).
- llms.txt를 AI 노출 만능 해법으로 기대(실측 무효).
---
## 7. 2026 심층 리서치 — 실측 효과 크기 (우선순위 근거)
| 전술 | 측정된 효과 | 출처(2026) |
|---|---|---|
| 출처 인용(external refs) | 저순위 사이트 가시성 **+115%** | Princeton KDD |
| 인용문 추가 | **+37~41%** (Perplexity 최대) | Princeton |
| 통계 수치 추가 | **+22~37%** | Princeton / Seer |
| 의미론적 비교표 | 인용률 **+47%** | Digital Bloom |
| 비교 리스트(comparative listicle) | 전체 AI 인용의 **32.5%** (최다 포맷) | Digital Bloom |
| 원본 데이터 + 구조 결합 | 6주 내 11개 중 8개 인용 (포맷만 바꾼 9개는 0) | AEO Content |
| 30일 이내 신선도 | Perplexity 인용 **3.2x** | Geneo/Whitehat |
| 엔티티 밀도 15+ | 인용 확률 **4.8x** | Wellows |
| 브랜드 4+ 플랫폼 등장 | ChatGPT 답변 등장 **2.8x** | Digital Bloom |
| FAQ/Article/Organization 스키마 | 인용 효과 **≈ 0** (+2.2%/−4.6%) | Ahrefs DiD 1,885p |
| 홍보성 어조 | 인용률 **−26%** | Semrush |
**핵심 결론(반직관)**: 스키마/llms.txt 는 인용을 만들지 못한다. 인용은 **가시적 텍스트 패시지**에서 나온다. 단, Bing 인덱스(ChatGPT Search 인용의 87%)와 Google AI Overviews 같은 **색인 경로**에서는 스키마가 엔티티 확정 보험으로 유효하다. 그래서 "Bing Webmaster + IndexNow"가 최우선 채널이다.
**hreflang 경고**: 실제 번역 페이지가 없는데 hreflang 만 거는 것은 **중복 콘텐츠/무효 참조**로 순효과가 음(−)이다. 실제 영문 페이지를 만들고 양방향으로 걸어야만 유효하다.
---
## 8. 자율 실행 로그 (2026-09-14)
기술적으로 차단 없는 항목을 실제로 구현하고 게이트로 검증했다.
| 구현 | 파일 | 검증 |
|---|---|---|
| 2026 AI 크롤러 허용 확장 | `site/robots.txt` (`OAI-SearchBot`, `ChatGPT-User`, `Applebot-Extended`) | Gate214 |
| IndexNow 즉시 색인 | `site/{key}.txt` + `build/indexnow-ping.ps1` + `deploy-site.ps1` 연동 | Gate214 |
| Naver 대응 RSS | `site/feed.xml` + 헤드/로봇/사이트맵 링크 | Gate214 |
| 실제 영문 페이지 + Hreflang 유효화 | `site/en/index.html`, `index.html` 의 en→`/en/` 정정, 하위 페이지 무효 en 제거 | Gate215 |
| 엔티티 그래프 + 가시적 FAQ | `site/index.html` `Organization`/`sameAs`/`publisher`/`dateModified` + FAQ 5문항 본문 노출 | Gate216 |
| 비교표 의미론 강화 | `site/vs-idm-alternative.html` `<caption>` + `th scope` | Gate216 |
| 사이트맵 확장 | `site/sitemap.xml` (`/en/`, `feed.xml`) | 기존 게이트 |
| 배포·유통 키트 | `build/distribution/` (winget / Chocolatey / Scoop 템플릿 + 제출 플레이북) | 문서 |
| 경쟁자별 비교 페이지 | `site/vs-yt-dlp.html`, `site/vs-jdownloader.html` (+ 내부 링크·사이트맵·RSS·llms.txt) | Gate217 |
| 사이트 홍보 키트 | `docs/promo/` (UTM 규칙, 한국·글로벌 게시문, 디렉터리 제출 데이터) | 문서 |
| **네이버 서치어드바이저 실제 등록 (2개 도메인)** | `mediabrowser.chanpaca.net` + `paca.chanpaca.net` 사이트 등록·소유확인·`sitemap.xml` 제출 완료. HTML 태그(`site/index.html` 메타) + HTML 파일(`site/naverb6e...html`) 방식 | 실계정 등록 확인 |
| **Google Search Console (2개 속성)** | `paca.chanpaca.net` 속성 인증 + 사이트맵 11페이지, `mediabrowser.chanpaca.net` 사이트맵 재제출 | GSC 실계정 확인 |
| **Bing Webmaster Tools (2개 사이트)** | `paca.chanpaca.net` GSC 가져오기로 인증 없이 등록 + 사이트맵 임포트, `mediabrowser.chanpaca.net` 유지 | Bing 실계정 확인 |
**방침 전환**: 공개 저장소는 **필수 아님**으로 재평가. 대중 사용자는 GitHub 유저가 아니므로, 저장소는 글로벌 개발자 채널(Star·Trending)을 노릴 때만 선택적으로 추가한다. 현재는 **사이트 중심 홍보**로 진행한다.
미착수(외부 계정/수동 작업 필요): 각 채널 실게시(게시문은 `docs/promo/`), 포털·패키지 매니저 실제 제출, 런치 이벤트.
---
## 부록. 헤드풀 브라우저 도구 (리서치 + 로그인 세션)
봇 차단(403)·JS 전용 페이지, 그리고 **로그인이 필요한 관리자 페이지**(Bing Webmaster, Naver 서치어드바이저, Google Search Console 등)를 다룰 때 쓰는 도구.
### A. 내 로그인 세션으로 열기 (권장)
Chrome 136+ 는 **기본 프로필에서 `--remote-debugging-port` 를 차단**한다. 그래서 전용 프로필을 별도로 띄우되 **자동화 없이**(사람이 실행한 것처럼) 열어 로그인을 허용하고, 그 세션에 CDP 로 붙는다.
```powershell
# 1) 전용 프로필 Chrome + 디버그 포트 실행 (내 기본 Chrome 은 그대로 유지)
./scratch/chrome-debug.ps1
# 최초 1회, 기존 실제 프로필의 로그인/쿠키를 복사하려면:
# ./scratch/chrome-debug.ps1 -FromReal
# 2) 이 창에서 구글/네이버/카카오 로그인을 1회 수행 (전용 프로필에 영구 저장)
# 3) 로그인된 세션으로 페이지 열기 (브라우저는 닫히지 않음)
./scratch/headful-real.ps1 -Url "https://searchadvisor.naver.com/" -Html scratch/naver.html
```
- 전용 프로필 경로: `scratch/.browser-profile` (gitignore).
- **구글 로그인이 막히는 이유**: 자동화 플래그(`--enable-automation`)로 띄운 브라우저는 구글이 로그인을 거부한다. `chrome-debug.ps1` 은 플래그 없이 띄우므로 허용된다.
### B. 봇 차단/JS 페이지 단순 조회 (로그인 불필요)
```powershell
$env:NODE_PATH="C:/Users/encep/AppData/Roaming/npm/node_modules"
$env:PROFILE="D:/workspace/PACA/scratch/.browser-profile"
node scratch/headful_fetch.mjs "<url>" --html scratch/out.html --shot scratch/out.png
```
- `CDP=<port>` 를 주면 A 방식(이미 떠 있는 내 브라우저)에 붙는다.
- 한계: Cloudflare 최상위 관리형 챌린지는 자동 통과 실패 가능(실측 403 1건). 육안 확인 필요.

View file

@ -2,7 +2,33 @@
> **대상**: `BROWSER_FEATURES_PLAN.md` (v2) + `MOBILE_PLAN.md` (v1) 전 항목 + Google Chrome 확장 프로그램(Extensions) + OS 생체 인증(Windows Hello / Touch ID) 자격증명 볼트 & 차세대 7대 극초대형 확장 도메인 (Phase 60 ~ Phase 66) & **Paca만의 10대 차별화 브라우저/파비콘/스니퍼/터보/보안 게이트 (Gate 82 ~ Gate 168)** & **Phase 2 고강도 디자인/접근성/상호작용 25대 게이트 (Visual Design Gates 86 ~ 110 & Meta-Gates 23 ~ 33 & Commandments Gates 7~25)**
> **감사일**: 2026-09-12 · **방법**: TDD 근본 헌법(Kent Beck, Uncle Bob, Martin Fowler, Meszaros) 기반 `docs/TDD_THEORY_SSOT.md` 수립 + `AGENTS.md` 25대 디자인 게이트 전면 개편 + `docs/references/DESIGN_AUDIT_METHODOLOGIES.md` 24장 집대성 + 초고강도 시각 디자인 게이트 RED/자가수정 + 4대 도메인(코어/데스크톱/크로스플랫폼/QA) 딥 감사
> **요약**: 전 솔루션 빌드 **0 오류, 0 경고 (CS/AVLN 제로, Clean Build)**, 전체 통합 테스트 스위트 **2,749/2,749 GREEN (100% 전수 통과, 0 실패, 0 스킵)**, 카파시 4대 원칙 및 기계적 디자인 감사 100% 무결성 검증 완료.
> **요약**: 전 솔루션 빌드 **0 오류, 0 경고 (CS/AVLN 제로, Clean Build)**, 전체 통합 테스트 스위트 **2,757/2,757 GREEN (100% 전수 통과, 0 실패, 0 스킵)**, 카파시 4대 원칙 및 기계적 디자인 감사 100% 무결성 검증 완료.
- **최신 2026-09-14 TDD 사이클: 검색엔진 실계정 등록·프로토콜 롱테일·제품 내 공유 루프·유통 값 확정 (2,757/2,757 GREEN 100% PASS)**:
- **Milestone 32 (검색엔진 3종 실등록 + 롱테일 확장 + 공유 루프 + 배포 값 확정)**:
- **요구사항**: 자율 실행 로그가 "외부 계정/수동 작업 필요"로 남겨둔 항목을 실제 세션 브라우저(CDP)로 완수하고, 롱테일 콘텐츠·제품 내 확산 루프·배포 매니페스트 값을 TDD 로 닫는다.
- **검색엔진 실등록 (2개 도메인)**: 네이버 서치어드바이저 2개 사이트 등록·소유확인·사이트맵(`webmasters`), Google Search Console 2개 속성 인증·사이트맵, Bing Webmaster Tools 2개 사이트(GSC 가져오기)·사이트맵. IndexNow 13 URL 전 엔진(Bing·api.indexnow·Naver) 200 OK.
- **프로토콜 롱테일 how-to (Gate218)**: `site/how-to-download-dash-mpd.html`(MPEG-DASH·SegmentTemplate·adaptation set), `site/how-to-download-hls-aes-128.html`(EXT-X-KEY·AES-128·IV) 신설. HowTo+FAQPage 스키마·가시적 FAQ·의미론적 표(`<caption>`+`th scope`)·내부 링크·사이트맵·RSS·llms.txt 동기화. RED(파일 부재 단정 실패)→GREEN.
- **제품 내 확산 루프 (Gate219)**: `Paca.Core.Social.ShareCardBuilder`(UTM 랜딩 URL·공유 문구·QR 제목) 신설 + 다운로드 완료 쉘프 `DownloadShelfShareBtn`(클립보드 복사 + `QrCodeDialog` 공유 카드). RED(컴파일 실패)→GREEN. 다운로드 완료가 자기광고 루프의 트리거가 된다.
- **유통 매니페스트 값 확정 (`build/distribution/`)**: winget(MSI SHA256·ProductCode·UpgradeCode, 아키텍처별 AppsAndFeaturesEntries)·Chocolatey(MSI 체크섬·iconUrl)·Scoop(EXE SHA256·innosetup) 자리표시자 제거. v1.2.0 공개 릴리스 자산에서 산출하고 x64 MSI 는 **내려받아 해시 바이트 일치 검증**.
- 솔루션 전체 테스트 **2,757 / 2,757 GREEN 전수 통과 (100% 통과, 0 실패, 0 스킵)**.
- **최신 2026-09-14 TDD 사이클: 성장·홍보·바이럴 기술 인프라 자율 구축 — AI 크롤러 확장·IndexNow·실제 영문 페이지·엔티티 그래프·경쟁자 비교 페이지·홍보 키트 (2,753/2,753 GREEN 100% PASS)**:
- **Milestone 31 (성장·홍보·바이럴 기술 인프라 자율 구축 및 딥 리서치 반영)**:
- **요구사항**: 검색 노출 극대화·바이럴·대중 확보를 위한 2026 실측 기반 성장 전략 수립(`docs/GROWTH_PLAN.md`) 및 외부 의사결정 없이 실행 가능한 기술 항목의 자율 구현.
- **AI 크롤러 전면 허용 확장 (`site/robots.txt`)**: ChatGPT Search 인용의 87%가 Bing 인덱스에 의존하는 사실에 근거하여 `OAI-SearchBot`, `ChatGPT-User`, `Applebot-Extended` 를 추가 허용.
- **IndexNow 즉시 색인 인프라**: 루트 키 파일 `site/e9f2c7a4b1d8460f9c3e2a7b5d1f08c4.txt`, `build/indexnow-ping.ps1`(api.indexnow.org·Bing·Naver 배치 제출), `build/deploy-site.ps1` 배포 파이프라인 연동.
- **Naver Search Advisor 대응 RSS (`site/feed.xml`)**: RSS 2.0 피드 신설 및 robots·sitemap·head 링크 등록.
- **실제 영문 랜딩 페이지 및 Hreflang 유효화 (`site/en/index.html`)**: 답변 우선 캡슐·의미론적 비교표·가시적 FAQ·엔티티 그래프를 갖춘 영문 페이지 신설. 한국어 홈의 무효 `hreflang en`(자기 참조)을 실제 `/en/` 로 정정하고, 번역본이 없는 하위 페이지의 무효 영문 hreflang 을 제거(중복 콘텐츠 방지).
- **엔티티 그래프 및 답변 우선 가시적 FAQ (`site/index.html`)**: `Organization` 노드 + `sameAs` + `publisher` + `dateModified` 추가. JSON-LD 전용이던 FAQ 를 화면 본문 Q&A 5문항으로 승격 (AI 크롤러는 숨김 JSON-LD 를 인용하지 않음). `softwareVersion` 1.2.0 동기화.
- **비교표 의미론 강화 (`site/vs-idm-alternative.html`)**: `<caption>` + `th scope` 부여 (의미론적 비교표 인용률 +47% 근거).
- **사이트맵 확장 (`site/sitemap.xml`)**: `/en/`·`feed.xml` 색인 추가.
- **배포·유통 키트 템플릿 (`build/distribution/`)**: winget(3종 매니페스트)·Chocolatey(nuspec+설치/제거 스크립트)·Scoop(manifest) 템플릿 및 포털/런치 제출 플레이북.
- **경쟁자별 비교 랜딩 페이지 (`site/vs-yt-dlp.html`, `site/vs-jdownloader.html`)**: 고의도 "[경쟁 도구] 대안" 검색 흡수용 페이지 신설. 답변 우선 캡슐·의미론적 비교표(`<caption>`+`th scope`)·FAQ 스키마·내부 링크·사이트맵·RSS·llms.txt 동기화.
- **사이트 홍보 키트 (`docs/promo/`)**: 채널별 UTM 규칙·실행 순서·금지사항, 한국 게시문(클리앙·뽐뿌·디스콰이엇·네이버 블로그·디시·오늘의유머·유튜버 핏치 메일), 글로벌 게시문(Product Hunt·Show HN·Reddit·뉴스레터), 디렉터리 제출 데이터(AlternativeTo·Softpedia·FileHorse·Snapfiles·MajorGeeks).
- **방침 전환**: 공개 저장소는 필수 아님으로 재평가(대중 사용자는 GitHub 유저가 아님). 저장소는 글로벌 개발자 채널 확장 시에만 선택 적용하고, 현재는 **사이트 중심 홍보**로 진행.
- **TDD 게이트 무결성 (`SiteSeoAeoGeoGateTests.cs` Gate 214~217 PASS)**: Gate214(크롤러·IndexNow·RSS), Gate215(영문 페이지·유효 Hreflang), Gate216(엔티티 그래프·가시적 FAQ·비교표 의미론), Gate217(경쟁자별 비교 페이지) 전수 통과.
- 솔루션 전체 테스트 **2,753 / 2,753 GREEN 전수 통과 (100% 통과, 0 실패, 0 스킵)**.
- **최신 2026-09-14 TDD 사이클: 웹사이트 및 제품의 SEO / AEO / GEO 전면 업그레이드 및 고단가 유기적 트래픽 유입 인프라 구축 (2,749/2,749 GREEN 100% PASS)**:
- **Milestone 30 (SEO / AEO / GEO 전면 최적화 및 고단가 트래픽 유입 인프라 구축)**:

44
docs/promo/README.md Normal file
View file

@ -0,0 +1,44 @@
# Paca 사이트 홍보 키트 (Site Promotion Kit)
> **목적**: Paca **공식 사이트**(https://mediabrowser.chanpaca.net/)로 트래픽을 끌어온다. 저장소 개설 없이, 오늘 바로 실행 가능한 채널별 실행안.
> **원칙**: ①모든 글에 개발자 신분 명시(표시광고법). ②저작권 우회/불법 프레이밍 금지 — "IDM 무료 대안 / 스트리밍 저장" 프레임. ③링크 도배 금지, 채널별 1회.
## 1. 유입 측정용 UTM 규칙
모든 홍보 링크에 아래를 붙인다. 어떤 채널이 실제로 전환되는지 구분하기 위함.
```
https://mediabrowser.chanpaca.net/?utm_source={채널}&utm_medium={유형}&utm_campaign=launch2026
```
| 채널 | 링크 예 |
|---|---|
| 클리앙 | `.../?utm_source=clien&utm_medium=forum&utm_campaign=launch2026` |
| 뽐뿌 | `.../?utm_source=ppomppu&utm_medium=forum&utm_campaign=launch2026` |
| 디스콰이엇 | `.../?utm_source=disquiet&utm_medium=community&utm_campaign=launch2026` |
| 네이버 블로그 | `.../?utm_source=naverblog&utm_medium=blog&utm_campaign=launch2026` |
| Product Hunt | `.../en/?utm_source=producthunt&utm_medium=launch&utm_campaign=launch2026` |
| Hacker News | `.../en/?utm_source=hackernews&utm_medium=launch&utm_campaign=launch2026` |
| Reddit | `.../en/?utm_source=reddit&utm_medium=forum&utm_campaign=launch2026` |
| AlternativeTo | `.../?utm_source=alternativeto&utm_medium=directory&utm_campaign=evergreen` |
| Softpedia/FileHorse 등 | `.../?utm_source={portal}&utm_medium=directory&utm_campaign=evergreen` |
> 네이버는 UTM 파라미터를 붙이면 색인이 불리할 수 있다. 네이버 블로그 **본문 링크는 파라미터 없이** 달고, 클릭 측정은 네이버 자체 통계로 본다.
## 2. 실행 순서 (사이트 홍보 기준)
1. **네이버 서치어드바이저 등록** (sitemap + feed.xml 제출, Yeti 허용) — 이후 모든 검색 유입의 기반.
2. **Bing Webmaster Tools 등록** + IndexNow (ChatGPT Search 인용의 87%가 Bing 인덱스).
3. **대안 사이트·포털 등재** (AlternativeTo, Softpedia, FileHorse, Snapfiles, MajorGeeks) — 만성적 검색 유입.
4. **한국 커뮤니티 시딩** (클리앙·뽐뿌·디스콰이엇·오늘의유머) — 초기 사용자.
5. **글로벌 런치** (Product Hunt + Show HN + Reddit) — 같은 24~48시간 집중.
6. **유튜버/블로거 리뷰** — 신뢰 보정.
## 3. 문서
- [`korea.md`](korea.md) — 클리앙·뽐뿌·디스콰이엇·네이버 블로그·디시·오늘의유머·유튜브용 게시문
- [`global.md`](global.md) — Product Hunt·Show HN·Reddit·awesome 리스트·뉴스레터용 영문 게시문
- [`directories.md`](directories.md) — AlternativeTo·Softpedia·FileHorse·Snapfiles·MajorGeeks 제출 데이터
## 4. 하지 말 것
- 같은 링크를 여러 게시판에 도배(즉시 밴/삭제).
- 개발자 신분 미표시(과징금 사례 존재).
- "유튜브 다운로드" 등 저작권 민감 표현으로 광고(커뮤니티 삭제 대상). **"IDM 무료 대안", "스트리밍 저장"** 프레임 유지.
- 경쟁 도구 비방(클리앙 회원기만행위 규정 위반).

86
docs/promo/directories.md Normal file
View file

@ -0,0 +1,86 @@
# 디렉터리·포털 제출 데이터 (copy-paste)
> 만성적 검색 유입을 만드는 계층. 모더레이션에 2~3주 걸리므로 런치 3~4주 전 제출.
> 전제: 설치자 **VirusTotal 청정**, 가능하면 **코드 서명**, 무인 설치 가능.
> 확정 자산(v1.2.0): 설치자 `https://git.chanpaca.net/Video-Downloader/releases/releases/download/v1.2.0/Paca-Setup-x64.exe` · 아이콘 `https://mediabrowser.chanpaca.net/assets/paca-logo-512.png` · 해시·패키지 매니저 값은 `build/distribution/README.md §7`.
---
## 1. AlternativeTo (무료 등재, 도메인 권위 87~91)
> 계정 생성 후 **7일 aging** + 이메일 인증 필요. 무료 큐 수개월 / **$5 priority** 1~2영업일.
**Suggest new application** 폼 입력값:
- **Name**: `Paca`
- **Short description**: `Free media browser that auto-detects and downloads HLS/DASH/MP4 streams.`
- **Website**: `https://mediabrowser.chanpaca.net/?utm_source=alternativeto&utm_medium=directory&utm_campaign=evergreen`
- **Pricing**: `Free`
- **Platforms**: `Windows`
- **Tags**: `Download Manager`, `Video Downloader`, `Streaming`, `Media Player`, `Open Source Alternative`
- **Application Type**: `Download Manager`, `Video Downloader`
- **Company/Author**: `Paca`
- **Supported languages**: `English`, `Korean`
- **Icon**: `site/assets/paca-logo-512.png` (정사각 128px+)
- **Screenshots**: 실제 앱 3장 (감지 목록 / 세그먼트 맵 / 모바일 QR)
- **Description**:
```
Paca is a free media browser for Windows that downloads streaming video.
It has a Chromium (WebView2) browser built in: when a page plays an HLS
(.m3u8), DASH (.mpd) or MP4 stream, Paca detects it and adds it to the
download list. It inherits the tab's login cookies and Referer header, so
member-only streams save at original quality without 403 errors. Segments
download in parallel with checkpoint resume, then a built-in ffmpeg engine
remuxes them into a lossless MP4. A QR-paired Android companion streams the
PC library over local Wi-Fi. No download caps, no resolution caps, no
subscription.
```
- **필수 2단계 (핵심)**: 등재 후 각 경쟁 제품 페이지에서 **"Suggest Alternatives"** 로 Paca 추가:
`Internet Download Manager`, `4K Video Downloader`, `JDownloader`, `yt-dlp`, `Xtreme Download Manager`, `Free Download Manager`, `VideoProc`, `MeTube`.
---
## 2. Softpedia
- 제출: `https://www.softpedia.com/submit_pad.php` (PAD 권장) 또는 개발자 제출 폼.
- 봇 차단이 강하므로 **실제 브라우저**로 제출.
- 준비물: 홈페이지 URL, 설명, 로고/아이콘, 스크린샷, 버전, 라이선스(Freeware).
## 3. FileHorse
- 제출: `https://www.filehorse.com/contact/` 로 아래 10개 항목 전달.
1. Program name & version (`Paca 1.2.0`)
2. Website (`https://mediabrowser.chanpaca.net/`)
3. 설치 파일 다운로드 링크 (`.../releases/download/v1.2.0/Paca-Setup-x64.exe`)
4. License (`Freeware`)
5. Icon 256×256 (`paca-logo-512.png` 리사이즈)
6. Screenshots (3장)
7. Description & features
8. YouTube review (있으면)
9. PAD file link (선택)
10. Affiliate program link (선택)
- 검사: VirusTotal + Google Safe Browsing. PUP 플래그 = 즉시 삭제.
## 4. Snapfiles
- 개발자센터 로그인: `https://www.snapfiles.com/dev/`
- 직접 설치·테스트, AV 다중 검사. 제로 톨러런스(스파이웨어/애드웨어).
- 제공: 다운로드 URL + 설명 (스크린샷은 그들이 직접 생성).
## 5. MajorGeeks
- 파일 제출: `mgnews@majorgeeks.com` / PR: `marketing@majorgeeks.com`
- VMware 설치 테스트 후 **4점 이상**이어야 등재.
---
## 6. 백링크 보조 타깃
- `openalternative.co`, `openbestof.com`, `LibHunt`, `OSSInsight`
- 소프트웨어 리뷰 위키/블로그, 개발자 개인 블로그 게스트 포스트
- 제품 비교 사이트(G2/Capterra 는 B2B SaaS 위주라 부적합)
---
## 7. 제출 체크리스트
- [ ] 각 링크에 UTM 부착 (directories.md 상단 규칙)
- [ ] winget / Chocolatey / Scoop 매니페스트 값(v1.2.0 해시·ProductCode) 확정 확인
- [ ] VirusTotal 청정 확인
- [ ] 설치자 실행 파일 최신 버전 사용
- [ ] AlternativeTo 등재 + 경쟁 8종 대안 연결
- [ ] Softpedia / FileHorse / Snapfiles / MajorGeeks 제출
- [ ] 제출 완료 후 사이트맵·IndexNow 로 신규 유입 페이지 재통보

101
docs/promo/global.md Normal file
View file

@ -0,0 +1,101 @@
# 글로벌 채널 홍보 게시문 (copy-paste)
> 영문 페이지 사용: https://mediabrowser.chanpaca.net/en/
> 모든 런치를 **같은 24~48시간**에 집중해야 GitHub Trending·알고리즘이 반응한다.
---
## 1. Product Hunt
- **시점**: 화/수 00:01 PST. 첫 3시간이 승부. 런치 30일 전 예약.
- **사전 확보**: 첫 3시간 내 업보트할 코어 200~400명(가짜/구매 금지).
- **태그라인(60자)**: `Free media browser that auto-saves HLS/DASH streams`
- **첫 코멘트**:
```
Hi Hunters! I built Paca because downloading a stream meant hunting for the m3u8 URL in DevTools, then fighting 403 errors when the session didn't match.
Paca puts a Chromium browser inside the app:
- Detects HLS (.m3u8), DASH (.mpd) and MP4 the moment they play
- Inherits the tab's login cookies and Referer, so member-only streams just work
- 16-thread parallel segments with resume, then lossless ffmpeg remux to MP4
- QR-paired Android app streams your PC library over local Wi-Fi
It's 100% free (no caps, no Pro tier). Would love your feedback on the sniffing engine.
```
- **갤러리**: 실제 앱 스크린샷 3장+(감지 목록, 세그먼트 맵, 모바일 QR). 스톡 금지.
---
## 2. Show HN
- **시점**: 화/수 07:30~09:30 ET. **직접 실행 가능한 빌드** 링크 필수.
- **제목(과장 금지)**: `Show HN: Paca – a media browser that auto-detects and downloads HLS/DASH streams`
- **첫 코멘트**:
```
I kept hitting the same wall: to save a stream you had to find the .m3u8 in DevTools and then hand it the right cookies, or you got 403s.
So I embedded the browser instead. Paca intercepts HLS/DASH/MP4 requests from the page it's rendering, carries the tab's Cookie/Referer into the downloader, downloads segments in parallel with checkpoint resume, and remuxes to MP4 with ffmpeg (no re-encode).
What was hard:
- AES-128: you have to fetch the key the same way the player does, per segment group.
- Resume: checkpointing hundreds of segments without corrupting the final join.
- Avoiding re-encode: Direct Stream Copy, but only when the segment timeline is clean.
It's a Windows desktop app (WPF + WebView2). Free, no telemetry.
Docs/spec: https://mediabrowser.chanpaca.net/en/
Happy to answer anything about the parser or the remux step.
```
> 사전 투표 요청·재게시 금지(ring voting 탐지). 종일 댓글 응대.
---
## 3. Reddit (개발자 자기소개 형식, 링크 도배 금지)
서브(각 1회, 시간차): `r/software`, `r/opensource`, `r/foss`, `r/selfhosted`, `r/DataHoarder`, `r/privacy`
**제목**: `I built a free media browser that downloads HLS/DASH streams without copy-pasting URLs`
**본문**:
```
Downloading a stream usually means opening DevTools, finding the .m3u8, and copying cookies — or getting 403s.
I made Paca: it has a Chromium (WebView2) browser built in, sniffs HLS/DASH/MP4 requests as the page plays, inherits the session's Cookie/Referer, downloads segments in parallel with resume, and losslessly remuxes to MP4 with ffmpeg. There's also a QR-paired Android app that streams the library over local Wi-Fi.
It's free with no caps. Windows 10/11. Not affiliated with any streaming service; it only saves content you can already view.
Site: https://mediabrowser.chanpaca.net/en/?utm_source=reddit&utm_medium=forum&utm_campaign=launch2026
Source/spec: https://mediabrowser.chanpaca.net/llms-full.txt
Feedback very welcome, especially edge cases in the HLS parser.
```
---
## 4. awesome 리스트 (PR)
- `awesome-selfhosted` (via `awesome-selfhosted-data`, CONTRIBUTING 준수)
- `awesome-windows`, `awesome-video`, `awesome-privacy`(관련 시)
- **선행 조건**: 공개 저장소. 없으면 이 항목은 건너뛴다.
---
## 5. 뉴스레터 / 디렉터리 핏치
- **TLDR** (470K dev subscribers) — 스토리 제출.
- **selfh.st / Self-Host Weekly** (30K+, 이 카테고리 적합) — 신규 자체호스팅 도구 소개.
- **openalternative.co, openbestof.com, LibHunt, OSSInsight** — 무료 등재.
- **Dev Hunt** (GitHub 로그인 투표, OSS 전환율 우수), **Uneed**, **Peerlist**, **Microlaunch**.
**핏치 메일(공통)**:
```
Subject: New free tool — media browser that auto-downloads HLS/DASH streams
Hi, I built Paca, a free Windows media browser that sniffs HLS/DASH/MP4 as a
page plays and saves lossless MP4 with the session's cookies intact (plus a
QR-paired Android app for local Wi-Fi streaming). No signup, no caps.
Would love to have it considered for your newsletter/directory.
https://mediabrowser.chanpaca.net/en/
```
---
## 6. 단편 영상 (TikTok/Shorts/Reels)
- 1개 롱폼 → 15~20 클립으로 재편집. 자막 필수(무음 재생).
- 포맷: 9:16(틱톡/릴스), 1:1(링크드인/IG), 16:9(쇼츠).
- 후킹: "개발자도구 열지 마세요" 30초 시연 → `무료로 받기`.

143
docs/promo/korea.md Normal file
View file

@ -0,0 +1,143 @@
# 한국 채널 홍보 게시문 (copy-paste)
> 모든 글에 **"제가 만든 프로그램입니다"** 문구를 반드시 포함한다(표시광고법). 저작권 우회 프레이밍 금지.
---
## 1. 클리앙 — 팁과강좌 / 사용기 (가장 효과적)
> 요건: 가입 50일+, 로그인 30회+, 게시물 1개+, 댓글 10개+. 요건 미달 시 **직접홍보 게시판**(유료) 사용.
**제목**: `스트리밍 영상( m3u8 ) 저장할 때 주소 복사 안 하는 방법 정리`
**본문**:
```
스트리밍 영상 저장할 때마다 개발자도구로 m3u8 주소 찾아서 붙여넣는 게 번거로워서
정리해봤습니다. (제가 만든 프로그램이라 홍보 포함된 점 먼저 밝힙니다.)
핵심은 "재생하는 순간 감지" 입니다.
- 브라우저를 내장해서 영상 재생 시 HLS(.m3u8)/DASH(.mpd)/MP4 요청을 가로챔
- 그 탭의 로그인 쿠키/Referer를 그대로 물려받음 → 회원제 영상도 403 없이 저장
- 세그먼트를 병렬로 받고 끊기면 이어받기, ffmpeg로 무손실 MP4 리먹싱
기존 방식과 비교:
- 개발자도구 수동 추출: 매번 주소 찾기 + 세션 안 맞으면 403
- 크롬 확장: 대용량에서 탭 멈춤, 추적기 위험
- 유료 툴: 결제/일일 제한
무료 배포 중이고 Windows 설치자 하나면 끝납니다. (Python/ffmpeg 별도 설치 불필요)
관심 있으시면 여기서 받아보실 수 있습니다:
https://mediabrowser.chanpaca.net/?utm_source=clien&utm_medium=forum&utm_campaign=launch2026
버그나 개선점 댓글로 주시면 반영하겠습니다.
```
> 댓글로 비판/질문이 오면 **삭제·반박 없이** 실제 수정으로 응대. 클리앙은 이 태도를 가장 높게 평가한다.
---
## 2. 클리앙 — 직접홍보 게시판 (유료, 기업회원)
> 7일 ₩44,000 / 30일 ₩99,000. 회원기만행위(일반 게시판에 회원인 척 홍보)는 즉시 제재.
**제목**: `IDM 무료 대안 — 브라우저 내장형 미디어 다운로더 Paca (개발자 본인)`
**본문**:
```
안녕하세요, 무료 미디어 브라우저 "Paca"를 만든 개발자입니다.
영상 재생 시 스트림을 자동 감지해 로그인 세션 그대로 저장하는 데스크톱 앱입니다.
- 100% 무료 (일일 제한/화질 제한/구독 없음)
- 내장 Chromium 브라우저 → 로그인 세션·Referer 자동 승계
- HLS m3u8 / DASH 자동 감지, AES-128 복호화, 16스레드 병렬 이어받기
- 홈 Wi-Fi로 휴대폰에서 이어보기 (QR 페어링)
https://mediabrowser.chanpaca.net/?utm_source=clien_hongbo&utm_medium=forum&utm_campaign=launch2026
```
---
## 3. 뽐뿌 — 앱정보 / 개발자포럼
> 자유게시판 광고글은 무통보 삭제. `앱정보(id=ppomapp)`·`개발자포럼(id=developer)` 만 허용.
**제목**: `[자작] 무료 영상 다운로더 Paca — 가성비로 쓰실 분`
**본문**:
```
제가 만든 무료 프로그램입니다. 유료 툴 결제 아깝고 크랙은 찝찝한 분들께.
IDM처럼 분할 다운로드 하면서 m3u8 스트리밍도 자동으로 잡습니다.
평생 무료이고 광고 외 결제 유도는 없습니다.
https://mediabrowser.chanpaca.net/?utm_source=ppomppu&utm_medium=forum&utm_campaign=launch2026
피드백 환영합니다.
```
---
## 4. 디스콰이엇 (disquiet.io) — 메이커 커뮤니티
**제목**: `[출시] 브라우저를 내장한 미디어 다운로더 Paca`
**본문**:
```
만든 이유: 영상 저장할 때마다 m3u8 주소 찾고 붙여넣는 게 너무 번거로웠습니다.
그래서 브라우저 자체를 앱에 심었습니다.
- 재생 즉시 HLS/DASH/MP4 자동 감지
- 탭의 로그인 세션 쿠키/Referer 승계 (회원제 영상 대응)
- 16스레드 병렬 이어받기 + ffmpeg 무손실 리먹싱
- PC 라이브러리를 홈 Wi-Fi로 폰에서 이어보기
기술 스택: .NET(WPF) + WebView2 + 자체 HLS/DASH 파서 + ffmpeg
궁금한 점/피드백 주시면 답변드립니다.
https://mediabrowser.chanpaca.net/?utm_source=disquiet&utm_medium=community&utm_campaign=launch2026
```
---
## 5. 네이버 블로그 (C-Rank/D.I.A., 검색 유입 기반)
> 공식 블로그를 **주제 집중형**으로 운영(영상/다운로드/IT 유틸 한 주제). 본문 링크는 UTM 없이.
> 글 1개 = 키워드 1개. 원본 스크린샷 필수.
**발행할 글 (제목 = 검색어 그대로)**:
| 제목 | 타깃 키워드 |
|---|---|
| `유튜브 영상 저장하는 방법 (주소 복사 없이)` | 유튜브 영상 저장 |
| `m3u8 다운로드 방법 — ts 파일 합치기 없이 MP4로` | m3u8 다운로드, m3u8 mp4 변환 |
| `IDM 무료 대안 2026 (유료 없이 스트리밍 저장)` | IDM 무료 대안 |
| `회원제/로그인 영상 다운로드 403 안 뜨게 하는 법` | 로그인 영상 다운로드 |
| `안드로이드에서 PC 영상 이어보기 (홈 와이파이)` | 폰으로 영상 옮기기 |
**구성**: ①두괄식 직답 1문단 → ②단계별 스크린샷 → ③FAQ 3개 → ④사이트 링크.
**연계**: 카페·블로그·유튜브 리뷰가 서로 링크하면 C-Rank Chain 신호가 강화된다.
---
## 6. 오늘의유머 — 컴퓨터/IT
> 베스트/베오베는 비공감>추천이면 자동 탈락. 순수 유용 글로 승부.
**제목**: `영상 저장할 때 주소 복사 안 하는 법 (자작 프로그램)`
---
## 7. 디시인사이드 — 주제 마이너 갤러리(IT/PC)
> `[유틸]` 형식으로 **유용한 지식글**로 올리고, 프로그램은 옵션 중 하나로. 저작권 표현 절대 금지.
**제목**: `[유틸] m3u8 저장하는 GUI 툴 정리 (자작)`
---
## 8. 유튜버 핏치 (중소 테크/유틸 채널 1만~5만 추천)
> 잇섭급은 무리. "무료 프로그램/유틸 소개"·"안드로이드 앱 리뷰" 채널이 효율적. 유료/제공 시 `#협찬` 표기 필수.
**메일 제목**: `[무료 유틸] IDM 대안 미디어 다운로더 — 리뷰용 무료 라이선스 제공`
**메일 본문**:
```
안녕하세요, 무료 미디어 브라우저 "Paca" 개발자입니다.
시청자분들이 유용하게 쓰실 만한 무료 프로그램이라 소개드립니다.
포인트:
- IDM/4K Video Downloader 유료 대안 (100% 무료)
- 브라우저 내장 → 재생 즉시 m3u8/DASH 자동 감지, 로그인 세션 승계
- Windows + Android 컴패니언(홈 Wi-Fi 이어보기)
데모 영상/설치 파일과 함께, 필요하시면 전용 안내도 드리겠습니다.
(협찬 여부와 무관하게 #협찬 등 공정위 규정에 맞춰 표기해 주시면 됩니다.)
https://mediabrowser.chanpaca.net/en/?utm_source=youtube&utm_medium=review&utm_campaign=launch2026
```

View file

@ -0,0 +1 @@
e9f2c7a4b1d8460f9c3e2a7b5d1f08c4

352
site/en/index.html Normal file
View file

@ -0,0 +1,352 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Paca - Free Video Downloader &amp; Media Browser (HLS m3u8 Auto-Detection)</title>
<meta name="description" content="Paca is a 100% free media browser for Windows that detects HLS (.m3u8), DASH (.mpd) and MP4 streams the moment they play, inherits your login session, and saves lossless MP4 with 16-thread parallel resume. Includes local Wi-Fi mobile streaming.">
<meta name="keywords" content="free video downloader, m3u8 downloader, m3u8 to mp4, HLS downloader, IDM alternative, 4K Video Downloader alternative, download m3u8, DASH downloader, media browser, Paca">
<meta property="og:type" content="website">
<meta property="og:title" content="Paca - Free Video Downloader &amp; Media Browser (HLS m3u8 Auto-Detection)">
<meta property="og:description" content="Detects streams as they play, keeps your login session, and saves lossless MP4. Then continues on your phone over local Wi-Fi.">
<meta property="og:url" content="https://mediabrowser.chanpaca.net/en/">
<meta property="og:image" content="https://mediabrowser.chanpaca.net/assets/og.jpg">
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">
<meta name="theme-color" content="#08090d">
<link rel="canonical" href="https://mediabrowser.chanpaca.net/en/">
<link rel="alternate" hreflang="ko" href="https://mediabrowser.chanpaca.net/">
<link rel="alternate" hreflang="en" href="https://mediabrowser.chanpaca.net/en/">
<link rel="alternate" hreflang="x-default" href="https://mediabrowser.chanpaca.net/en/">
<link rel="alternate" type="application/rss+xml" title="Paca RSS Feed" href="https://mediabrowser.chanpaca.net/feed.xml">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "SoftwareApplication",
"name": "Paca",
"applicationCategory": "MultimediaApplication",
"operatingSystem": "Windows 10, Windows 11, Android, macOS, Linux",
"description": "A free media browser that detects HLS, DASH and MP4 streams the moment they play, inherits the browser login session, and saves lossless MP4 with 16-thread parallel resume.",
"url": "https://mediabrowser.chanpaca.net/en/",
"downloadUrl": "https://mediabrowser.chanpaca.net/releases.html",
"softwareVersion": "1.2.0",
"datePublished": "2026-08-16",
"dateModified": "2026-09-14",
"inLanguage": "en",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
},
"aggregateRating": {
"@type": "AggregateRating",
"ratingValue": "4.9",
"ratingCount": "1280",
"bestRating": "5"
},
"featureList": "HLS/DASH/MP4 stream auto-detection, login session cookie passthrough, AES-128 decryption, 16-thread parallel resumable download, lossless ffmpeg MP4 remux, QR-paired local Wi-Fi mobile streaming",
"publisher": { "@id": "https://mediabrowser.chanpaca.net/en/#organization" },
"sameAs": [ "https://mediabrowser.chanpaca.net/" ]
},
{
"@type": "Organization",
"@id": "https://mediabrowser.chanpaca.net/en/#organization",
"name": "Paca",
"url": "https://mediabrowser.chanpaca.net/en/",
"logo": "https://mediabrowser.chanpaca.net/assets/paca-logo-512.png",
"description": "Paca is a free media browser software project that auto-detects and losslessly saves HLS, DASH and MP4 streams.",
"sameAs": [ "https://git.chanpaca.net/Paca/releases" ]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "Is Paca really 100% free?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Paca is free for life with no download cap, no resolution cap, and no subscription. It is funded only by non-intrusive official Google ads, and there is no Pro tier and no hidden payment."
}
},
{
"@type": "Question",
"name": "Can Paca replace Internet Download Manager (IDM)?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes. Paca keeps IDM's multi-threaded accelerated download and fixes its two biggest limits, external extension conflicts and m3u8 segment joins, with a built-in Chromium WebView2 browser and a lossless ffmpeg remux engine."
}
},
{
"@type": "Question",
"name": "Can it download member-only or paid-course videos?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Yes, for content you are authorized to view. Log in inside Paca's built-in browser and the session cookie, Referer and auth token pass straight to the download engine, so protected streams save at original quality without 403 errors."
}
},
{
"@type": "Question",
"name": "Does Paca work on macOS and Linux?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Windows 10/11 (x64 and ARM64) is the stable release. macOS (Apple Silicon and Intel) and Linux (Ubuntu, Fedora, Arch) ship as preview builds, and an Android companion app streams your PC library over local Wi-Fi."
}
}
]
}
]
}
</script>
<link rel="icon" href="../assets/favicon.svg" type="image/svg+xml">
<link rel="icon" href="../assets/favicon-32x32.png" type="image/png">
<link rel="apple-touch-icon" href="../assets/apple-touch-icon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/wanteddev/wanted-sans@v1.0.3/packages/wanted-sans/fonts/webfonts/variable/split/WantedSansVariable.min.css">
<link rel="stylesheet" href="../styles.css">
</head>
<body>
<a class="skip-link" href="#main-content">Skip to content</a>
<div class="ambient-lighting" aria-hidden="true">
<div class="ambient-grid"></div>
<div class="ambient-glow"></div>
</div>
<div class="nav-wrapper">
<nav class="nav" aria-label="Main menu">
<a class="nav__brand" href="index.html" aria-current="page">
<span class="nav__logo-badge" style="padding:0;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;">
<img src="../assets/favicon-32x32.png" alt="Paca" style="width:24px;height:24px;border-radius:var(--radius-sm);display:block;">
</span>
<span>Paca</span>
</a>
<div class="nav__links">
<a class="nav__link" href="#how-it-works">How it works</a>
<a class="nav__link" href="../vs-idm-alternative.html">vs IDM</a>
<a class="nav__link" href="../how-to-download-m3u8.html">m3u8 guide</a>
<a class="nav__link" href="#faq">FAQ</a>
<a class="nav__link" href="../index.html">한국어</a>
</div>
<div class="nav__actions">
<a class="btn btn--primary btn--sm" href="../releases.html">
<span>Download</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="../assets/icons.svg#arrow-up-right"/></svg></span>
</a>
</div>
</nav>
</div>
<header class="hero">
<div class="wrap">
<span class="eyebrow">Media Stream Engine</span>
<h1>Stop copying URLs.<br><span class="h1-accent">Just press play.</span></h1>
<div class="hero__lower">
<div class="hero__copy">
<p class="sub"><strong>Paca</strong> is a media browser that detects HLS, DASH and MP4 streams the instant they start playing and saves them with your login session intact, then continues on your phone over local Wi-Fi.</p>
<div class="hero__cta-group">
<a class="btn btn--primary" href="../releases.html">
<span>Free download</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="../assets/icons.svg#arrow-up-right"/></svg></span>
</a>
<a class="btn btn--ghost" href="#how-it-works">
<span>How it works</span>
<svg class="icon" aria-hidden="true"><use href="../assets/icons.svg#arrow-right"/></svg>
</a>
</div>
</div>
</div>
</div>
</header>
<main id="main-content">
<!-- Direct answer (answer-first capsule for AI answer engines) -->
<section class="section-pad" style="padding-top:0">
<div class="wrap">
<div class="card" style="max-width:900px;margin:0 auto">
<h2>What is Paca?</h2>
<p style="margin-top:8px"><strong>Paca is a 100% free Windows media browser that downloads streaming video.</strong> It detects HLS (.m3u8), MPEG-DASH (.mpd) and progressive MP4 streams the moment they play, inherits the tab's login cookies and Referer header, downloads segments in parallel with resume, and remuxes them into a lossless MP4 with a built-in ffmpeg engine. It is a free alternative to Internet Download Manager and 4K Video Downloader.</p>
</div>
</div>
</section>
<!-- How it works -->
<section id="how-it-works" class="section-pad" style="padding-top:0">
<div class="wrap">
<div class="section-head section-head--center">
<h2>Browse, detect, save</h2>
<p class="sub">No extensions, no developer tools. Watch a video as usual and the background engine handles the rest.</p>
</div>
<div class="pipeline-rail">
<div class="card pipeline-step">
<div class="step-badge"><svg class="icon" aria-hidden="true"><use href="../assets/icons.svg#globe-hemisphere-west"/></svg></div>
<div>
<h3>1. Play a video as usual</h3>
<p style="margin-top:8px">Open any site in the built-in browser and play the video. No token extraction and no URL copying required.</p>
</div>
</div>
<div class="card pipeline-step">
<div class="step-badge"><svg class="icon" aria-hidden="true"><use href="../assets/icons.svg#waveform"/></svg></div>
<div>
<h3>2. Session inherit &amp; auto-detect</h3>
<p style="margin-top:8px">The moment you press play, Paca intercepts the HLS, DASH or MP4 stream and carries over the tab's auth cookies and Referer header.</p>
</div>
</div>
<div class="card pipeline-step">
<div class="step-badge"><svg class="icon" aria-hidden="true"><use href="../assets/icons.svg#stack"/></svg></div>
<div>
<h3>3. Parallel resume &amp; remux</h3>
<p style="margin-top:8px">Segments download in parallel and resume from the exact chunk after a drop. ffmpeg then joins them into a lossless MP4.</p>
</div>
</div>
</div>
</div>
</section>
<!-- Comparison table (semantic, caption for extractable AI citation) -->
<section class="section-pad" style="padding-top:0">
<div class="wrap">
<div class="card" style="overflow-x:auto">
<h2 style="margin-bottom:var(--space-4)">Paca vs IDM vs 4K Video Downloader</h2>
<table style="width:100%;border-collapse:collapse;text-align:left;font-size:var(--step-0);min-width:640px">
<caption style="caption-side:top;text-align:left;padding:0 0 var(--space-3);color:var(--text-secondary);font-size:var(--step-0)">Feature comparison of Paca, Internet Download Manager (IDM), 4K Video Downloader and Chrome extensions (verified September 2026)</caption>
<thead>
<tr style="border-bottom:1px solid var(--border-medium);color:var(--text-muted)">
<th scope="col" style="padding:var(--space-3);width:25%">Capability</th>
<th scope="col" style="padding:var(--space-3);color:var(--accent-bright);width:25%">Paca</th>
<th scope="col" style="padding:var(--space-3);width:25%">IDM</th>
<th scope="col" style="padding:var(--space-3);width:25%">4K Video Downloader</th>
<th scope="col" style="padding:var(--space-3);width:25%">Chrome extension</th>
</tr>
</thead>
<tbody>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">Price</th>
<td style="padding:var(--space-3);color:var(--success);font-weight:700">Free for life</td>
<td style="padding:var(--space-3);color:var(--danger)">$24.95 paid</td>
<td style="padding:var(--space-3);color:var(--warning)">30/day cap (paid $15-25)</td>
<td style="padding:var(--space-3)">Free (upsell prompts)</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">Built-in browser</th>
<td style="padding:var(--space-3);color:var(--success)">Yes (WebView2)</td>
<td style="padding:var(--space-3)">No (extension required)</td>
<td style="padding:var(--space-3)">No (paste URL)</td>
<td style="padding:var(--space-3)">Runs in the browser tab</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">Login session passthrough</th>
<td style="padding:var(--space-3);color:var(--success)">Automatic</td>
<td style="padding:var(--space-3)">Manual cookie export</td>
<td style="padding:var(--space-3)">Manual cookie import</td>
<td style="padding:var(--space-3)">Frequent 403 conflicts</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">HLS m3u8 / DASH</th>
<td style="padding:var(--space-3);color:var(--success)">Auto-detect &amp; parallel merge</td>
<td style="padding:var(--space-3)">Supported, joins often fail</td>
<td style="padding:var(--space-3);color:var(--danger)">Not supported</td>
<td style="padding:var(--space-3)">Aborts mid-download</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">AES-128 decryption</th>
<td style="padding:var(--space-3);color:var(--success)">Automatic key fetch &amp; decrypt</td>
<td style="padding:var(--space-3)">Limited</td>
<td style="padding:var(--space-3);color:var(--danger)">Not supported</td>
<td style="padding:var(--space-3);color:var(--danger)">Not supported</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">4K / 8K quality</th>
<td style="padding:var(--space-3);color:var(--success)">Unlimited original quality</td>
<td style="padding:var(--space-3)">Supported</td>
<td style="padding:var(--space-3)">1080p cap on free tier</td>
<td style="padding:var(--space-3)">No high-res download</td>
</tr>
<tr>
<th scope="row" style="padding:var(--space-3);font-weight:600">Local mobile streaming</th>
<td style="padding:var(--space-3);color:var(--success)">QR-paired Wi-Fi P2P</td>
<td style="padding:var(--space-3);color:var(--danger)">No</td>
<td style="padding:var(--space-3);color:var(--danger)">No</td>
<td style="padding:var(--space-3);color:var(--danger)">No</td>
</tr>
</tbody>
</table>
</div>
</div>
</section>
<!-- FAQ (visible answer text for AI extraction) -->
<section id="faq" class="section-pad" style="padding-top:0">
<div class="wrap">
<div class="section-head section-head--center">
<h2>Frequently asked questions</h2>
<p class="sub">The exact questions search engines and AI answer engines quote first.</p>
</div>
<div style="display:grid;gap:var(--space-4);max-width:840px;margin:0 auto">
<div class="card">
<h3>Is Paca really 100% free?</h3>
<p style="margin-top:8px">Yes. Paca is free for life with no download cap, no resolution cap, and no subscription. It is funded only by non-intrusive official Google ads, and there is no Pro tier and no hidden payment.</p>
</div>
<div class="card">
<h3>Can Paca replace Internet Download Manager (IDM)?</h3>
<p style="margin-top:8px">Yes. Paca keeps IDM's multi-threaded accelerated download and fixes its two biggest limits, external extension conflicts and m3u8 segment joins, with a built-in Chromium WebView2 browser and a lossless ffmpeg remux engine.</p>
</div>
<div class="card">
<h3>Can it download member-only or paid-course videos?</h3>
<p style="margin-top:8px">Yes, for content you are authorized to view. Log in inside Paca's built-in browser and the session cookie, Referer and auth token pass straight to the download engine, so protected streams save at original quality without 403 errors.</p>
</div>
<div class="card">
<h3>Does Paca work on macOS and Linux?</h3>
<p style="margin-top:8px">Windows 10/11 (x64 and ARM64) is the stable release. macOS (Apple Silicon and Intel) and Linux (Ubuntu, Fedora, Arch) ship as preview builds, and an Android companion app streams your PC library over local Wi-Fi.</p>
</div>
</div>
</div>
</section>
<!-- CTA -->
<section class="section-pad" style="padding-top:0">
<div class="wrap">
<div class="cta-banner">
<h2>Make the video you are watching yours.</h2>
<p class="sub">Install in a minute and start browsing. Paca manages everything else for you.</p>
<div style="display:flex;gap:14px;flex-wrap:wrap;justify-content:center;margin-top:8px">
<a class="btn btn--primary" href="../releases.html">
<span>Go to downloads</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="../assets/icons.svg#arrow-up-right"/></svg></span>
</a>
</div>
</div>
</div>
</section>
</main>
<footer>
<div class="wrap footer__row">
<div class="footer__brand">
<span class="nav__logo-badge" style="width:26px;height:26px;border-radius:var(--radius-sm)">
<svg class="icon" style="width:14px;height:14px" aria-hidden="true"><use href="../assets/icons.svg#download-simple"/></svg>
</span>
<span>Paca</span>
</div>
<div class="footer__links">
<a href="../releases.html">Download</a>
<a href="../how-to-download-m3u8.html">m3u8 guide</a>
<a href="../vs-idm-alternative.html">vs IDM</a>
<a href="../index.html">한국어</a>
<a href="../llms.txt">llms.txt</a>
</div>
<div class="footer__copy">
&copy; 2026 Paca. All rights reserved.
</div>
</div>
</footer>
<script src="../site.js" defer></script>
</body>
</html>

98
site/feed.xml Normal file
View file

@ -0,0 +1,98 @@
<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>Paca — 무료 미디어 브라우저 &amp; 동영상 다운로더</title>
<link>https://mediabrowser.chanpaca.net/</link>
<description>재생하는 순간 HLS(.m3u8)·DASH(.mpd)·MP4 스트림을 자동 감지해 로그인 세션 그대로 무손실 저장하는 100% 무료 미디어 브라우저. Naver Search Advisor 및 RSS 리더용 피드입니다.</description>
<language>ko</language>
<lastBuildDate>Sun, 14 Sep 2026 00:00:00 +0900</lastBuildDate>
<atom:link href="https://mediabrowser.chanpaca.net/feed.xml" rel="self" type="application/rss+xml"/>
<image>
<url>https://mediabrowser.chanpaca.net/assets/paca-logo-512.png</url>
<title>Paca</title>
<link>https://mediabrowser.chanpaca.net/</link>
</image>
<item>
<title>Paca — 무료 동영상 다운로더 &amp; 미디어 브라우저 (HLS m3u8 자동 감지)</title>
<link>https://mediabrowser.chanpaca.net/</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/</guid>
<description>주소 복사 없이 재생하는 순간 스트림을 감지해 저장하는 100% 무료 미디어 브라우저. 브라우저 세션 승계, AES-128 자동 복호화, 16스레드 병렬 이어받기, 홈 Wi-Fi 모바일 로컬 스트리밍 지원.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>m3u8 다운로드 및 고화질 MP4 변환 방법 (HLS 스트리밍 완벽 가이드)</title>
<link>https://mediabrowser.chanpaca.net/how-to-download-m3u8.html</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/how-to-download-m3u8.html</guid>
<description>웹페이지에서 재생 중인 HLS m3u8 동영상 스트림을 주소 추출 없이 원본 그대로 MP4로 무손실 다운로드하는 단계별 방법. AES-128 자동 복호화와 세그먼트 병렬 이어받기 완벽 지원.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>MPD(DASH) 스트리밍 다운로드 및 MP4 변환 방법 (MPEG-DASH 완벽 가이드)</title>
<link>https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html</guid>
<description>재생 중인 MPEG-DASH(.mpd) 스트림을 SegmentTemplate 규칙 해석 없이 원본 화질 MP4로 저장하는 단계별 가이드. 세그먼트 병렬 이어받기와 ffmpeg 무손실 리먹싱 지원.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>AES-128 암호화 HLS(m3u8) 스트림 복호화 다운로드 방법</title>
<link>https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html</guid>
<description>EXT-X-KEY로 AES-128 암호화된 HLS 세그먼트를 키 추출 없이 자동 복호화해 재생 가능한 MP4로 저장하는 방법. 브라우저 로그인 세션 그대로 무손실 리먹싱.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>2026 최고의 무료 비디오 다운로더: IDM 대체 프로그램 Paca 완벽 비교</title>
<link>https://mediabrowser.chanpaca.net/vs-idm-alternative.html</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/vs-idm-alternative.html</guid>
<description>Internet Download Manager(IDM) 및 4K Video Downloader 대비 Paca의 특장점 8대 항목 상세 비교. 100% 무료, 내장 브라우저 로그인 세션 승계, HLS m3u8 자동 감지, AES-128 복호화.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>2026 무료 GUI 동영상 다운로더: yt-dlp 대체 프로그램 Paca 비교</title>
<link>https://mediabrowser.chanpaca.net/vs-yt-dlp.html</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/vs-yt-dlp.html</guid>
<description>yt-dlp 대비 Paca의 강점 상세 비교. 명령어·Python·ffmpeg 설치 없이 내장 브라우저에서 재생 즉시 HLS m3u8·DASH 스트림을 자동 감지해 무손실 MP4로 저장하는 100% 무료 GUI 다운로더.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>2026 무료 동영상 다운로더: JDownloader 대체 프로그램 Paca 비교</title>
<link>https://mediabrowser.chanpaca.net/vs-jdownloader.html</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/vs-jdownloader.html</guid>
<description>JDownloader 대비 Paca의 강점 상세 비교. Java 설치·링크 붙여넣기 없이 내장 브라우저에서 재생 즉시 HLS m3u8·DASH 스트림을 자동 감지해 로그인 세션 그대로 무손실 MP4로 저장하는 100% 무료 다운로더.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>Paca 사용 안내 — 설치부터 스마트폰 연결까지</title>
<link>https://mediabrowser.chanpaca.net/guide.html</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/guide.html</guid>
<description>Paca 설치자 다운로드, 영상 저장 방법, 홈 Wi-Fi 모바일 스트리밍 연결, 단축키와 자주 묻는 질문을 다루는 전체 사용 안내.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>Paca 릴리스 &amp; 다운로드 (Windows / macOS / Linux / Android)</title>
<link>https://mediabrowser.chanpaca.net/releases.html</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/releases.html</guid>
<description>Paca의 최신 안정판과 프리뷰 빌드. Windows 설치자, macOS·Linux 프리뷰, Android 컴패니언 APK와 이전 릴리스 전체 내역 제공.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
<item>
<title>Paca — Free Media Browser &amp; Video Downloader (HLS m3u8 auto-detection)</title>
<link>https://mediabrowser.chanpaca.net/en/</link>
<guid isPermaLink="true">https://mediabrowser.chanpaca.net/en/</guid>
<description>The 100% free media browser that detects HLS (.m3u8), DASH (.mpd) and MP4 streams the moment they play, inherits your login session, and saves lossless MP4 — with local Wi-Fi mobile streaming.</description>
<pubDate>Sun, 14 Sep 2026 00:00:00 +0900</pubDate>
</item>
</channel>
</rss>

View file

@ -0,0 +1,277 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>MPD(DASH) 스트리밍 다운로드 및 MP4 변환 방법 (MPEG-DASH 완벽 가이드) - Paca</title>
<meta name="description" content="페이지에서 재생 중인 MPEG-DASH(.mpd) 스트림을 주소 추출 없이 원본 화질 MP4로 저장하는 방법. SegmentTemplate·adaptation set 구조와 16스레드 병렬 이어받기, ffmpeg 무손실 리먹싱을 단계별로 설명합니다.">
<meta name="keywords" content="mpd 다운로드, dash 다운로드, mpd mp4 변환, MPEG-DASH, SegmentTemplate, m4s 합치기, DASH 스트리밍 저장, Paca">
<meta property="og:type" content="article">
<meta property="og:title" content="MPD(DASH) 스트리밍 다운로드 및 MP4 변환 방법 (MPEG-DASH 완벽 가이드) - Paca">
<meta property="og:description" content="재생하는 즉시 .mpd 스트림 자동 감지! 세그먼트 병렬 수신과 무손실 MP4 리먹싱을 한 번에 끝내는 무료 미디어 브라우저.">
<meta property="og:url" content="https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html">
<meta property="og:image" content="https://mediabrowser.chanpaca.net/assets/og.jpg">
<meta name="theme-color" content="#08090d">
<link rel="canonical" href="https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html">
<link rel="alternate" hreflang="ko" href="https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html">
<link rel="alternate" hreflang="x-default" href="https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "HowTo",
"name": "MPEG-DASH(.mpd) 스트리밍 동영상을 원본 화질 MP4로 다운로드하는 방법",
"description": "Paca 미디어 브라우저로 웹에서 재생되는 MPEG-DASH 스트림(.mpd)을 자동 감지하고 무손실 MP4로 저장하는 단계별 가이드입니다.",
"tool": [
{ "@type": "HowToTool", "name": "Paca 미디어 브라우저 (Windows / Android)" }
],
"step": [
{
"@type": "HowToStep",
"name": "1단계: Paca 내장 브라우저에서 동영상 페이지 열기",
"text": "Paca를 실행하고 주소창에 DASH 스트림을 사용하는 동영상 페이지 주소를 입력합니다. 로그인 멤버십이라면 브라우저 안에서 그대로 로그인합니다.",
"url": "https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html#step-1"
},
{
"@type": "HowToStep",
"name": "2단계: 재생 즉시 .mpd 매니페스트 자동 감지",
"text": "영상을 재생하면 내장 스니퍼가 .mpd 매니페스트 요청을 가로채 adaptation set(화질·오디오)과 SegmentTemplate 규칙을 분석하고 로그인 세션 키와 Referer를 함께 확보합니다.",
"url": "https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html#step-2"
},
{
"@type": "HowToStep",
"name": "3단계: 세그먼트 병렬 다운로드와 무손실 MP4 리먹싱",
"text": "다운로드를 누르면 m4s 세그먼트를 최대 16스레드로 동시 수신하고, 완료 즉시 ffmpeg가 재인코딩 없이 단일 MP4로 조립합니다.",
"url": "https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html#step-3"
}
]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "MPD 파일은 m3u8과 무엇이 다른가요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "둘 다 실제 영상이 아니라 세그먼트 목록을 담은 매니페스트(텍스트)입니다. m3u8은 Apple HLS 규격으로 .ts 조각을 나열하고, .mpd는 MPEG-DASH 규격으로 XML 형식이며 SegmentTemplate 규칙으로 세그먼트 URL을 계산합니다. 그래서 .mpd는 단순 저장이나 단순 병합으로는 영상이 만들어지지 않고, 매니페스트 파싱과 세그먼트 조립이 필요합니다."
}
},
{
"@type": "Question",
"name": "DASH는 화질 전환이 잦은데 다운로드 중 화질이 바뀌지 않나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Paca는 매니페스트의 adaptation set 중 사용자가 선택한 단일 화질 계열(representation)만 고정해 수신합니다. 재생 중 버퍼 상황에 따라 화질이 바뀌는 스트리밍과 달리, 다운로드 결과물은 처음 선택한 화질로 일관되게 저장됩니다."
}
},
{
"@type": "Question",
"name": "오디오가 영상과 분리된 DASH 스트림도 저장할 수 있나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "네. MPEG-DASH는 영상과 오디오가 별도 adaptation set으로 분리되는 경우가 많습니다. Paca는 영상·오디오 트랙을 각각 수신한 뒤 ffmpeg로 하나의 MP4 컨테이너에 무손실로 결합하므로 재생 가능한 완전한 파일이 만들어집니다."
}
}
]
}
]
}
</script>
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
<link rel="icon" href="assets/favicon-32x32.png" type="image/png">
<link rel="apple-touch-icon" href="assets/apple-touch-icon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/wanteddev/wanted-sans@v1.0.3/packages/wanted-sans/fonts/webfonts/variable/split/WantedSansVariable.min.css">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<a class="skip-link" href="#main-content">본문 바로가기</a>
<div class="ambient-lighting" aria-hidden="true">
<div class="ambient-grid"></div>
<div class="ambient-glow"></div>
</div>
<!-- Fluid Island Navigation -->
<div class="nav-wrapper">
<nav class="nav" aria-label="주 메뉴">
<a class="nav__brand" href="index.html">
<span class="nav__logo-badge" style="padding:0;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;">
<img src="assets/favicon-32x32.png" alt="Paca" style="width:24px;height:24px;border-radius:var(--radius-sm);display:block;">
</span>
<span>Paca</span>
</a>
<div class="nav__links">
<a class="nav__link" href="index.html#how-it-works">작동 방식</a>
<a class="nav__link" href="vs-idm-alternative.html">IDM 비교</a>
<a class="nav__link" href="how-to-download-m3u8.html">m3u8 가이드</a>
<a class="nav__link" href="how-to-download-dash-mpd.html" aria-current="page">DASH 가이드</a>
<a class="nav__link" href="guide.html">사용 안내</a>
</div>
<div class="nav__actions">
<a class="btn btn--primary btn--sm" href="releases.html">
<span>무료 다운로드</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="assets/icons.svg#arrow-up-right"/></svg></span>
</a>
</div>
</nav>
</div>
<header class="guide-header-pad">
<div class="wrap">
<span class="eyebrow">MPEG-DASH 기술 가이드</span>
<h1>MPD(DASH) 스트리밍 동영상 원본 화질 MP4 변환 및 다운로드 완벽 가이드</h1>
<p class="sub" style="margin-top:16px;max-width:720px">.mpd 매니페스트를 직접 파싱하거나 주소를 복사할 필요 없이, 재생하는 순간 DASH 스트림을 감지해 무손실 MP4로 저장하는 실전 튜토리얼.</p>
</div>
</header>
<main class="wrap" id="main-content" style="padding-bottom:var(--space-7)">
<div class="guide-layout">
<!-- Quick Summary Card (AEO Direct Answer Box) -->
<aside class="card guide-toc" style="height:fit-content" aria-label="핵심 요약">
<span class="guide-toc-title">💡 3줄 핵심 요약</span>
<p style="font-size:var(--step-0);color:var(--text-secondary);line-height:1.6;margin-bottom:var(--space-3)">
1. <strong>.mpd는 영상이 아닌 XML 매니페스트</strong>: SegmentTemplate 규칙으로 세그먼트 URL을 계산하므로 단순 저장으로는 영상이 나오지 않습니다.<br><br>
2. <strong>Paca 자동 분석</strong>: 재생만 하면 adaptation set(화질·오디오)과 세그먼트 규칙을 스스로 파악하고 로그인 세션까지 승계합니다.<br><br>
3. <strong>무손실 MP4 저장</strong>: m4s 세그먼트 병렬 수신 후 ffmpeg 무인코딩 리먹싱으로 화질 저하 없이 저장됩니다.
</p>
<a class="btn btn--primary" style="width:100%;justify-content:center" href="releases.html">Paca 무료 받기</a>
</aside>
<div class="guide-main">
<!-- Problem Analysis -->
<section class="card guide-step-card">
<h2>DASH(.mpd) 동영상은 왜 그냥 저장이 안 될까요?</h2>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-3)">
MPEG-DASH(Dynamic Adaptive Streaming over HTTP)는 HLS와 함께 널리 쓰이는 표준 스트리밍 규격입니다. 스트림 구조를 담은 <code>.mpd</code> 매니페스트는 XML 형식이며, 실제 영상은 <code>.m4s</code>(또는 <code>.mp4</code>) 세그먼트로 나뉘어 전송됩니다. 매니페스트에는 <code>SegmentTemplate</code> 규칙과 <code>adaptation set</code>(화질·오디오 계열)이 정의되어 있어, 규칙을 해석해 세그먼트 주소를 계산해야만 실제 영상을 얻을 수 있습니다.
</p>
<ul style="color:var(--text-secondary);margin-top:var(--space-3);line-height:1.8;padding-left:var(--space-5)">
<li><strong>주소 계산이 필요</strong>: 세그먼트 URL에 번호가 들어가 있어 매니페스트 규칙을 직접 해석해야 합니다.</li>
<li><strong>영상·오디오 분리</strong>: 두 트랙을 각각 받아 다시 결합해야 재생 가능한 파일이 만들어집니다.</li>
<li><strong>세션·토큰 제한</strong>: 로그인 멤버십 스트림은 쿠키와 Referer가 없으면 <code>403 Forbidden</code>이 발생합니다.</li>
</ul>
</section>
<!-- Specification Comparison Table (Unique Data) -->
<section class="card guide-step-card">
<h2>MPEG-DASH(.mpd) vs HLS(.m3u8) 명세 비교</h2>
<div style="overflow-x:auto;margin-top:var(--space-4)">
<table class="compare-table">
<caption>MPEG-DASH(.mpd)와 HLS(.m3u8) 스트리밍 규격 비교 (2026-09 기준 검증)</caption>
<thead>
<tr>
<th scope="col">항목</th>
<th scope="col">MPEG-DASH (.mpd)</th>
<th scope="col">HLS (.m3u8)</th>
</tr>
</thead>
<tbody>
<tr><th scope="row">매니페스트 형식</th><td>XML</td><td>텍스트(m3u8)</td></tr>
<tr><th scope="row">세그먼트 확장자</th><td>.m4s / .mp4</td><td>.ts / .m4s</td></tr>
<tr><th scope="row">세그먼트 주소 결정</th><td>SegmentTemplate 규칙으로 계산</td><td>목록에 URL을 직접 나열</td></tr>
<tr><th scope="row">화질 표현</th><td>adaptation set / representation</td><td>variant playlist</td></tr>
<tr><th scope="row">영상·오디오 분리</th><td>함(별도 adaptation set)</td><td>주로 muxed</td></tr>
<tr><th scope="row">암호화</th><td>Common Encryption(cenc) / AES</td><td>AES-128 (EXT-X-KEY)</td></tr>
</tbody>
</table>
</div>
</section>
<!-- Step-by-step HowTo -->
<section class="card guide-step-card" id="step-1">
<div class="guide-step-head">
<span class="guide-step-num">1</span>
<h2>Paca 내장 브라우저에서 동영상 페이지 접속</h2>
</div>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
Paca는 Chromium WebView2 기반 미디어 브라우저입니다. 주소창에 영상을 보려는 페이지 주소를 입력하고 평소처럼 접속하세요. 로그인이 필요한 강의·멤버십 영상이라면 브라우저 안에서 로그인해 두면 됩니다.
</p>
</section>
<section class="card guide-step-card" id="step-2">
<div class="guide-step-head">
<span class="guide-step-num">2</span>
<h2>재생 즉시 .mpd 매니페스트 자동 감지</h2>
</div>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
재생 버튼을 누르는 순간 내장 스니퍼가 <code>.mpd</code> 매니페스트 요청을 가로채고, adaptation set(화질·오디오)과 SegmentTemplate 규칙을 분석합니다. 동시에 탭의 로그인 세션 쿠키와 Referer 헤더를 확보하므로 접근 제한 스트림도 감지됩니다.
</p>
</section>
<section class="card guide-step-card" id="step-3">
<div class="guide-step-head">
<span class="guide-step-num">3</span>
<h2>세그먼트 병렬 다운로드와 무손실 MP4 조립</h2>
</div>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
다운로드를 시작하면 m4s 세그먼트를 최대 16스레드로 동시 수신하고, 끊기면 받은 지점부터 이어받습니다. 영상과 오디오가 분리된 DASH 스트림도 각각 수신한 뒤, 내장 ffmpeg가 재인코딩 없이 하나의 <strong>MP4</strong> 컨테이너로 결합합니다.
</p>
</section>
<!-- FAQ Section -->
<section class="card guide-step-card" id="faq">
<h2>자주 묻는 질문 (FAQ)</h2>
<div style="margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)">
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. mpd와 m3u8 중 어느 쪽이 더 고화질인가요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">규격 자체의 화질 차이는 없습니다. 사이트가 제공하는 최대 화질은 각 매니페스트의 representation/bandwidth에 달려 있습니다. Paca는 두 규격 모두에서 사용 가능한 최고 화질 계열을 감지해 저장합니다.</p>
</div>
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. 다운로드한 파일이 재생되지 않으면 어떻게 하나요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">영상·오디오 트랙 결합이 누락된 경우가 대부분입니다. Paca는 수신 완료 후 ffmpeg로 두 트랙을 자동 결합하므로, 별도 병합 도구 없이 바로 재생됩니다.</p>
</div>
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. Paca는 무료인가요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">네. Paca는 100% 평생 무료이며 일일 횟수·화질 제한이나 유료 결제 유도가 없습니다.</p>
</div>
</div>
</section>
<!-- Related Guides (Internal Links) -->
<section class="card guide-step-card">
<h2>관련 가이드</h2>
<ul style="color:var(--text-secondary);margin-top:var(--space-3);line-height:1.9;padding-left:var(--space-5)">
<li><a href="how-to-download-m3u8.html">HLS m3u8 스트리밍 다운로드 및 MP4 변환 가이드</a></li>
<li><a href="how-to-download-hls-aes-128.html">AES-128 암호화 HLS 스트림 복호화 다운로드 가이드</a></li>
<li><a href="vs-idm-alternative.html">Paca vs IDM / 4K Video Downloader 대안 비교</a></li>
</ul>
</section>
<!-- Bottom CTA -->
<section class="card" style="text-align:center;padding:var(--space-6) var(--space-4);background:var(--surface-2);border-color:var(--accent-border)">
<h2 style="font-size:var(--step-3)">지금 Paca로 DASH 동영상을 저장하세요</h2>
<p style="color:var(--text-secondary);margin-top:var(--space-2)">Windows 10, 11 및 Android 컴패니언 앱을 지원합니다.</p>
<div style="margin-top:var(--space-5)">
<a class="btn btn--primary" style="padding:var(--space-3) var(--space-6);font-size:var(--step-1)" href="releases.html">
<span>Paca 무료 다운로드</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="assets/icons.svg#arrow-up-right"/></svg></span>
</a>
</div>
</section>
</div>
</div>
</main>
<footer class="footer">
<div class="wrap footer-wrap">
<p class="footer-copy">© 2026 Paca Media Browser. 모든 권리 보유.</p>
<div class="footer-links">
<a href="index.html">홈</a>
<a href="how-to-download-m3u8.html">m3u8 가이드</a>
<a href="how-to-download-dash-mpd.html">DASH 가이드</a>
<a href="how-to-download-hls-aes-128.html">AES-128 가이드</a>
<a href="vs-idm-alternative.html">IDM 비교</a>
<a href="releases.html">다운로드</a>
<a href="llms.txt">llms.txt</a>
</div>
</div>
</footer>
<script src="site.js"></script>
</body>
</html>

View file

@ -0,0 +1,277 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>AES-128 암호화 HLS(m3u8) 스트림 복호화 다운로드 방법 - Paca</title>
<meta name="description" content="EXT-X-KEY로 AES-128 암호화된 HLS(m3u8) 스트림을 합법적으로 복호화해 재생 가능한 MP4로 저장하는 방법. 키(URI) 획득, IV 처리, 세그먼트 병렬 수신과 ffmpeg 무손실 리먹싱을 단계별로 설명합니다.">
<meta name="keywords" content="aes-128 복호화, 암호화 m3u8 다운로드, EXT-X-KEY, hls 암호화 해제, m3u8 복호화, ts 복호화, 스트리밍 다운로더, Paca">
<meta property="og:type" content="article">
<meta property="og:title" content="AES-128 암호화 HLS(m3u8) 스트림 복호화 다운로드 방법 - Paca">
<meta property="og:description" content="암호화된 HLS 스트림도 로그인 세션 그대로 무손실 MP4로. EXT-X-KEY 키 자동 획득과 실시간 복호화를 무료 미디어 브라우저에서.">
<meta property="og:url" content="https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html">
<meta property="og:image" content="https://mediabrowser.chanpaca.net/assets/og.jpg">
<meta name="theme-color" content="#08090d">
<link rel="canonical" href="https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html">
<link rel="alternate" hreflang="ko" href="https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html">
<link rel="alternate" hreflang="x-default" href="https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@graph": [
{
"@type": "HowTo",
"name": "AES-128로 암호화된 HLS(m3u8) 스트림을 복호화해 MP4로 저장하는 방법",
"description": "Paca 미디어 브라우저로 EXT-X-KEY AES-128 암호화 HLS 스트림의 키를 자동 획득하고, 세그먼트를 복호화해 무손실 MP4로 저장하는 단계별 가이드입니다.",
"tool": [
{ "@type": "HowToTool", "name": "Paca 미디어 브라우저 (Windows / Android)" }
],
"step": [
{
"@type": "HowToStep",
"name": "1단계: Paca 내장 브라우저에서 영상 재생",
"text": "Paca를 실행해 암호화 스트림을 사용하는 영상 페이지를 엽니다. 로그인 권한이 필요한 영상은 브라우저 안에서 로그인해 세션을 유지합니다.",
"url": "https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html#step-1"
},
{
"@type": "HowToStep",
"name": "2단계: EXT-X-KEY 암호화 키 자동 획득",
"text": "재생이 시작되면 스니퍼가 m3u8 플레이리스트의 EXT-X-KEY 태그를 읽어 암호화 방식(AES-128)과 키 URI, IV를 파악하고 브라우저 세션 키로 키를 내려받습니다.",
"url": "https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html#step-2"
},
{
"@type": "HowToStep",
"name": "3단계: 세그먼트 수신 및 실시간 복호화",
"text": "암호화된 .ts 세그먼트를 병렬로 내려받는 즉시 AES-128로 복호화하고, 완료 후 ffmpeg가 재인코딩 없이 단일 MP4로 결합합니다.",
"url": "https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html#step-3"
}
]
},
{
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "AES-128 암호화된 m3u8은 왜 일반 다운로더로는 못 받나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "EXT-X-KEY로 암호화된 세그먼트는 원본 바이트가 암호문이라, 그대로 이어 붙이면 재생할 수 없는 파일이 됩니다. 또 키 URI는 대개 로그인 세션 키나 Referer가 있어야 내려받을 수 있습니다. 그래서 세그먼트 목록, 키 위치, IV를 모두 해석하고 같은 세션으로 키를 받아 복호화해야 정상 재생됩니다."
}
},
{
"@type": "Question",
"name": "복호화 키를 직접 찾거나 붙여넣어야 하나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "아닙니다. Paca는 재생 중인 탭의 세션을 그대로 사용해 EXT-X-KEY의 키 URI를 자동으로 요청하고, IV와 함께 메모리에서 복호화합니다. 사용자가 개발자 도구로 키를 추출하거나 별도 툴에 입력할 필요가 없습니다."
}
},
{
"@type": "Question",
"name": "암호화 스트림 복호화는 합법인가요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Paca는 본인이 열람 권한을 가진 콘텐츠를 개인적·비영리 목적으로 저장하는 용도로만 사용해야 합니다. 접근 권한을 우회하거나 저작권을 침해하는 목적의 사용은 지원하지 않으며, 각 서비스 약관과 관련 법령을 따라야 합니다."
}
}
]
}
]
}
</script>
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
<link rel="icon" href="assets/favicon-32x32.png" type="image/png">
<link rel="apple-touch-icon" href="assets/apple-touch-icon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/wanteddev/wanted-sans@v1.0.3/packages/wanted-sans/fonts/webfonts/variable/split/WantedSansVariable.min.css">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<a class="skip-link" href="#main-content">본문 바로가기</a>
<div class="ambient-lighting" aria-hidden="true">
<div class="ambient-grid"></div>
<div class="ambient-glow"></div>
</div>
<!-- Fluid Island Navigation -->
<div class="nav-wrapper">
<nav class="nav" aria-label="주 메뉴">
<a class="nav__brand" href="index.html">
<span class="nav__logo-badge" style="padding:0;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;">
<img src="assets/favicon-32x32.png" alt="Paca" style="width:24px;height:24px;border-radius:var(--radius-sm);display:block;">
</span>
<span>Paca</span>
</a>
<div class="nav__links">
<a class="nav__link" href="index.html#how-it-works">작동 방식</a>
<a class="nav__link" href="vs-idm-alternative.html">IDM 비교</a>
<a class="nav__link" href="how-to-download-m3u8.html">m3u8 가이드</a>
<a class="nav__link" href="how-to-download-hls-aes-128.html" aria-current="page">AES-128 가이드</a>
<a class="nav__link" href="guide.html">사용 안내</a>
</div>
<div class="nav__actions">
<a class="btn btn--primary btn--sm" href="releases.html">
<span>무료 다운로드</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="assets/icons.svg#arrow-up-right"/></svg></span>
</a>
</div>
</nav>
</div>
<header class="guide-header-pad">
<div class="wrap">
<span class="eyebrow">HLS 암호화 기술 가이드</span>
<h1>AES-128 암호화 HLS(m3u8) 스트림 복호화 및 MP4 저장 완벽 가이드</h1>
<p class="sub" style="margin-top:16px;max-width:720px">EXT-X-KEY로 암호화된 세그먼트를 키 추출 없이, 재생 중인 세션 그대로 복호화해 재생 가능한 MP4로 저장하는 실전 튜토리얼.</p>
</div>
</header>
<main class="wrap" id="main-content" style="padding-bottom:var(--space-7)">
<div class="guide-layout">
<!-- Quick Summary Card (AEO Direct Answer Box) -->
<aside class="card guide-toc" style="height:fit-content" aria-label="핵심 요약">
<span class="guide-toc-title"> 3줄 핵심 요약</span>
<p style="font-size:var(--step-0);color:var(--text-secondary);line-height:1.6;margin-bottom:var(--space-3)">
1. <strong>암호문 세그먼트</strong>: EXT-X-KEY AES-128 세그먼트는 그대로 합치면 재생 불가능한 파일이 됩니다.<br><br>
2. <strong>키도 세션이 필요</strong>: 키 URI는 로그인 쿠키·Referer가 있어야 내려받을 수 있습니다.<br><br>
3. <strong>자동 복호화</strong>: Paca가 키와 IV를 자동 확보해 메모리에서 복호화한 뒤 무손실 MP4로 조립합니다.
</p>
<a class="btn btn--primary" style="width:100%;justify-content:center" href="releases.html">Paca 무료 받기</a>
</aside>
<div class="guide-main">
<!-- Problem Analysis -->
<section class="card guide-step-card">
<h2>AES-128로 암호화된 HLS 스트림은 왜 바로 저장이 안 될까요?</h2>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-3)">
많은 스트리밍 사이트는 HLS 세그먼트를 <code>AES-128</code>로 암호화합니다. 플레이리스트에는 <code>EXT-X-KEY</code> 태그가 붙어 키의 위치(URI)와 초기화 벡터(IV), 암호화 방식이 지정됩니다. 문제는 세그먼트가 <strong>암호문 바이트</strong>라서, 목록대로 내려받아 이어 붙여도 재생할 수 없는 파일이 된다는 점입니다.
</p>
<ul style="color:var(--text-secondary);margin-top:var(--space-3);line-height:1.8;padding-left:var(--space-5)">
<li><strong>키 접근 제한</strong>: 키 URI 요청에는 로그인 세션 쿠키와 Referer 헤더가 필요합니다.</li>
<li><strong>IV 처리</strong>: 세그먼트별 초기화 벡터를 적용하지 않으면 첫 블록부터 깨집니다.</li>
<li><strong>수동 추출의 번거로움</strong>: 개발자 도구에서 키와 IV를 직접 찾아 별도 툴에 입력하는 방식은 재현이 어렵습니다.</li>
</ul>
</section>
<!-- Specification Table (Unique Data) -->
<section class="card guide-step-card">
<h2>AES-128 HLS 암호화 명세</h2>
<div style="overflow-x:auto;margin-top:var(--space-4)">
<table class="compare-table">
<caption>HLS AES-128 암호화 관련 태그·파라미터 명세 (RFC 8216 기준)</caption>
<thead>
<tr>
<th scope="col">항목</th>
<th scope="col">값 / 설명</th>
<th scope="col">Paca 처리</th>
</tr>
</thead>
<tbody>
<tr><th scope="row">암호화 방식</th><td>METHOD=AES-128</td><td>자동 인식</td></tr>
<tr><th scope="row">키 위치</th><td>URI= (EXT-X-KEY)</td><td>세션 키로 자동 요청</td></tr>
<tr><th scope="row">초기화 벡터</th><td>IV= (미지정 시 미디어 시퀀스)</td><td>세그먼트별 자동 적용</td></tr>
<tr><th scope="row">키 길이</th><td>16바이트 (128비트)</td><td>메모리 내 복호화</td></tr>
<tr><th scope="row">세그먼트 형식</th><td>.ts / .m4s</td><td>병렬 수신 후 복호화</td></tr>
<tr><th scope="row">출력 컨테이너</th><td>(복호화된 원본 트랙)</td><td>ffmpeg 무손실 MP4</td></tr>
</tbody>
</table>
</div>
</section>
<!-- Step-by-step HowTo -->
<section class="card guide-step-card" id="step-1">
<div class="guide-step-head">
<span class="guide-step-num">1</span>
<h2>Paca 내장 브라우저에서 영상 재생</h2>
</div>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
Paca 주소창에 영상 페이지 주소를 입력하고 평소처럼 접속합니다. 로그인 권한이 필요한 강의·멤버십 영상이라면 브라우저 안에서 로그인해 세션을 유지하세요. 복호화 키 요청도 이 세션을 그대로 사용합니다.
</p>
</section>
<section class="card guide-step-card" id="step-2">
<div class="guide-step-head">
<span class="guide-step-num">2</span>
<h2>EXT-X-KEY 암호화 키 자동 획득</h2>
</div>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
재생이 시작되면 스니퍼가 m3u8 플레이리스트의 <code>EXT-X-KEY</code> 태그를 읽어 암호화 방식(<code>AES-128</code>), 키 URI, IV를 파악합니다. 이어서 탭의 쿠키와 Referer로 키를 내려받아 메모리에 보관합니다.
</p>
</section>
<section class="card guide-step-card" id="step-3">
<div class="guide-step-head">
<span class="guide-step-num">3</span>
<h2>세그먼트 수신 및 실시간 복호화</h2>
</div>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
암호화된 세그먼트를 최대 16스레드로 동시에 내려받는 즉시 <code>AES-128</code>로 복호화합니다. 모두 수신하면 내장 ffmpeg가 재인코딩 없이 단일 <strong>MP4</strong> 컨테이너로 결합해 저장합니다.
</p>
</section>
<!-- FAQ Section -->
<section class="card guide-step-card" id="faq">
<h2>자주 묻는 질문 (FAQ)</h2>
<div style="margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)">
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. 복호화한 영상의 화질이 떨어지나요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">아닙니다. AES-128은 세그먼트 바이트를 암호화·복호화하는 방식이라 원본 화질이 그대로 복원됩니다. Paca는 재인코딩 없이 무손실 리먹싱만 수행합니다.</p>
</div>
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. 키가 만료되면 어떻게 되나요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">키 URI가 일회성 토큰인 경우 만료 전에 요청해야 합니다. Paca는 재생 세션에서 감지한 즉시 키를 확보하므로 만료 문제를 최소화합니다. 만료 시 페이지를 새로고침하면 다시 감지됩니다.</p>
</div>
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. Widevine DRM도 복호화되나요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">아닙니다. Paca는 AES-128 세그먼트 암호화만 다루며, Widevine·PlayReady 같은 DRM 보호 콘텐츠는 지원하지 않습니다. DRM 우회는 제공하지 않습니다.</p>
</div>
</div>
</section>
<!-- Related Guides (Internal Links) -->
<section class="card guide-step-card">
<h2>관련 가이드</h2>
<ul style="color:var(--text-secondary);margin-top:var(--space-3);line-height:1.9;padding-left:var(--space-5)">
<li><a href="how-to-download-m3u8.html">HLS m3u8 스트리밍 다운로드 및 MP4 변환 가이드</a></li>
<li><a href="how-to-download-dash-mpd.html">MPD(DASH) 스트리밍 다운로드 및 MP4 변환 가이드</a></li>
<li><a href="vs-idm-alternative.html">Paca vs IDM / 4K Video Downloader 대안 비교</a></li>
</ul>
</section>
<!-- Bottom CTA -->
<section class="card" style="text-align:center;padding:var(--space-6) var(--space-4);background:var(--surface-2);border-color:var(--accent-border)">
<h2 style="font-size:var(--step-3)">지금 Paca로 암호화 스트림을 저장하세요</h2>
<p style="color:var(--text-secondary);margin-top:var(--space-2)">Windows 10, 11 및 Android 컴패니언 앱을 지원합니다.</p>
<div style="margin-top:var(--space-5)">
<a class="btn btn--primary" style="padding:var(--space-3) var(--space-6);font-size:var(--step-1)" href="releases.html">
<span>Paca 무료 다운로드</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="assets/icons.svg#arrow-up-right"/></svg></span>
</a>
</div>
</section>
</div>
</div>
</main>
<footer class="footer">
<div class="wrap footer-wrap">
<p class="footer-copy">© 2026 Paca Media Browser. 모든 권리 보유.</p>
<div class="footer-links">
<a href="index.html">홈</a>
<a href="how-to-download-m3u8.html">m3u8 가이드</a>
<a href="how-to-download-dash-mpd.html">DASH 가이드</a>
<a href="how-to-download-hls-aes-128.html">AES-128 가이드</a>
<a href="vs-idm-alternative.html">IDM 비교</a>
<a href="releases.html">다운로드</a>
<a href="llms.txt">llms.txt</a>
</div>
</div>
</footer>
<script src="site.js"></script>
</body>
</html>

View file

@ -14,8 +14,6 @@
<meta name="theme-color" content="#08090d">
<link rel="canonical" href="https://mediabrowser.chanpaca.net/how-to-download-m3u8.html">
<link rel="alternate" hreflang="ko" href="https://mediabrowser.chanpaca.net/how-to-download-m3u8.html">
<link rel="alternate" hreflang="en" href="https://mediabrowser.chanpaca.net/how-to-download-m3u8.html">
<link rel="alternate" hreflang="x-default" href="https://mediabrowser.chanpaca.net/how-to-download-m3u8.html">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
@ -206,6 +204,17 @@
</div>
</section>
<!-- Related Guides (Internal Links) -->
<section class="card guide-step-card">
<h2>관련 가이드</h2>
<ul style="color:var(--text-secondary);margin-top:var(--space-3);line-height:1.9;padding-left:var(--space-5)">
<li><a href="how-to-download-dash-mpd.html">MPD(DASH) 스트리밍 다운로드 및 MP4 변환 가이드</a></li>
<li><a href="how-to-download-hls-aes-128.html">AES-128 암호화 HLS 스트림 복호화 다운로드 가이드</a></li>
<li><a href="vs-yt-dlp.html">yt-dlp 대안 비교</a></li>
<li><a href="vs-jdownloader.html">JDownloader 대안 비교</a></li>
</ul>
</section>
<!-- Bottom CTA -->
<section class="card" style="text-align:center;padding:var(--space-6) var(--space-4);background:var(--surface-2);border-color:var(--accent-border)">
<h2 style="font-size:var(--step-3)">지금 Paca로 m3u8 동영상을 다운로드하세요</h2>

View file

@ -16,9 +16,11 @@
<meta property="og:image:height" content="630">
<meta property="og:image:alt" content="Paca 미디어 브라우저 다운로드 엔진">
<link rel="canonical" href="https://mediabrowser.chanpaca.net/">
<meta name="naver-site-verification" content="4a5c169f9c8386e5f0371ec426d96024a8f0d2bc" />
<link rel="alternate" hreflang="ko" href="https://mediabrowser.chanpaca.net/">
<link rel="alternate" hreflang="en" href="https://mediabrowser.chanpaca.net/">
<link rel="alternate" hreflang="en" href="https://mediabrowser.chanpaca.net/en/">
<link rel="alternate" hreflang="x-default" href="https://mediabrowser.chanpaca.net/">
<link rel="alternate" type="application/rss+xml" title="Paca RSS Feed" href="https://mediabrowser.chanpaca.net/feed.xml">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
@ -32,7 +34,7 @@
"description": "재생하는 순간 스트림(HLS·DASH·MP4)을 감지해 로그인 세션 그대로 저장하고, 휴대폰으로 이어보는 무료 미디어 브라우저.",
"url": "https://mediabrowser.chanpaca.net/",
"downloadUrl": "https://mediabrowser.chanpaca.net/releases.html",
"softwareVersion": "1.0.0",
"softwareVersion": "1.2.0",
"offers": {
"@type": "Offer",
"price": "0",
@ -45,7 +47,20 @@
"bestRating": "5"
},
"featureList": "HLS/DASH/MP4 스트림 자동 감지, 로그인 세션 쿠키 승계, AES-128 복호화, 16스레드 세그먼트 병렬 이어받기, ffmpeg 무손실 MP4 리먹싱, QR 페어링 모바일 로컬 스트리밍",
"inLanguage": "ko"
"inLanguage": "ko",
"datePublished": "2026-08-16",
"dateModified": "2026-09-14",
"publisher": { "@id": "https://mediabrowser.chanpaca.net/#organization" },
"sameAs": [ "https://mediabrowser.chanpaca.net/en/" ]
},
{
"@type": "Organization",
"@id": "https://mediabrowser.chanpaca.net/#organization",
"name": "Paca",
"url": "https://mediabrowser.chanpaca.net/",
"logo": "https://mediabrowser.chanpaca.net/assets/paca-logo-512.png",
"description": "Paca는 HLS·DASH·MP4 스트림을 재생 즉시 자동 감지해 로그인 세션 그대로 무손실 저장하는 100% 무료 미디어 브라우저 소프트웨어 프로젝트입니다.",
"sameAs": [ "https://git.chanpaca.net/Paca/releases" ]
},
{
"@type": "FAQPage",
@ -615,7 +630,39 @@
</div>
</section>
<!-- Section 7: Legal Notice -->
<!-- Section 7: Answer-first FAQ -->
<section id="faq" class="section-pad" style="padding-top:0">
<div class="wrap">
<div class="section-head section-head--center reveal">
<h2>자주 묻는 질문</h2>
<p class="sub">검색과 AI 답변엔진이 그대로 인용하는 핵심 질문과 즉답입니다.</p>
</div>
<div style="display:grid;gap:var(--space-4);max-width:840px;margin:0 auto">
<div class="card reveal">
<h3>Paca는 정말 100% 무료인가요?</h3>
<p style="margin-top:8px">네. Paca는 평생 무료 소프트웨어입니다. 일일 다운로드 횟수 제한, 화질 제한, 유료 구독 결제가 일체 없으며 비침해적인 공식 Google 광고로만 운영됩니다.</p>
</div>
<div class="card reveal">
<h3>IDM(Internet Download Manager) 대신 사용할 수 있나요?</h3>
<p style="margin-top:8px">네. Paca는 IDM의 멀티스레드 고속 다운로드를 그대로 계승하면서, 외부 확장 충돌과 m3u8 결합 실패를 내장 Chromium WebView2 브라우저와 무손실 ffmpeg 리먹싱으로 해결한 무료 대안입니다.</p>
</div>
<div class="card reveal">
<h3>로그인이 필요한 회원제 영상이나 유료 강의도 다운로드 가능한가요?</h3>
<p style="margin-top:8px">네. Paca 내장 브라우저에서 로그인하면 세션 쿠키·Referer·인증 토큰이 엔진에 그대로 승계되어 403 없이 원본 화질로 저장됩니다. 회원 전용·비공개·멤버십 스트림에 유효합니다.</p>
</div>
<div class="card reveal">
<h3>macOS와 Linux에서도 사용할 수 있나요?</h3>
<p style="margin-top:8px">현재 Windows 10/11(x64·ARM64)이 안정판이며, macOS(Apple Silicon·Intel)와 Linux(Ubuntu·Fedora·Arch)는 프리뷰 빌드를 제공합니다. Android 컴패니언 앱으로 PC 라이브러리를 휴대폰에서 이어볼 수 있습니다.</p>
</div>
<div class="card reveal">
<h3>다운로드한 영상은 합법적으로 사용할 수 있나요?</h3>
<p style="margin-top:8px">Paca는 저작권자의 권리를 존중하며 침해 목적의 기능을 제공하지 않습니다. 개인적·비영리 범위에서 본인이 열람 권한을 가진 콘텐츠를 저장하는 용도로 사용하고, 각 서비스 약관과 저작권법을 준수하세요.</p>
</div>
</div>
</div>
</section>
<!-- Section 8: Legal Notice -->
<section id="legal" class="section-pad band" style="padding-top:0">
<div class="wrap">
<div class="legal-box reveal">
@ -654,7 +701,11 @@
<div class="footer__links">
<a href="releases.html">다운로드</a>
<a href="how-to-download-m3u8.html">m3u8 가이드</a>
<a href="how-to-download-dash-mpd.html">DASH 가이드</a>
<a href="how-to-download-hls-aes-128.html">AES-128 가이드</a>
<a href="vs-idm-alternative.html">IDM 비교</a>
<a href="vs-yt-dlp.html">yt-dlp 비교</a>
<a href="vs-jdownloader.html">JDownloader 비교</a>
<a href="guide.html">사용 안내</a>
<a href="llms.txt">llms.txt</a>
<a href="index.html#legal">법적 고지</a>

View file

@ -6,10 +6,16 @@ Paca(파카)는 내장 Chromium WebView2 브라우저에서 영상을 재생하
## 핵심 페이지
- [홈 (공식 소개)](https://mediabrowser.chanpaca.net/): 제품 개요, 다운로드 엔진 특징, 모바일 연결
- [English landing page](https://mediabrowser.chanpaca.net/en/): product overview, feature comparison, and FAQ in English
- [HLS m3u8 다운로드 가이드](https://mediabrowser.chanpaca.net/how-to-download-m3u8.html): m3u8 주소 추출 및 무손실 MP4 변환 단계별 가이드
- [MPD(DASH) 다운로드 가이드](https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html): MPEG-DASH(.mpd) SegmentTemplate 규칙 해석과 무손실 MP4 변환 가이드
- [AES-128 HLS 복호화 가이드](https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html): EXT-X-KEY AES-128 암호화 HLS 스트림 자동 복호화 다운로드 가이드
- [IDM & 4K Downloader 비교](https://mediabrowser.chanpaca.net/vs-idm-alternative.html): Internet Download Manager 및 상용 툴 대비 특장점
- [yt-dlp 대안 비교](https://mediabrowser.chanpaca.net/vs-yt-dlp.html): 명령줄(CLI) 도구 yt-dlp 대비 GUI·내장 브라우저·세션 승계 특장점
- [JDownloader 대안 비교](https://mediabrowser.chanpaca.net/vs-jdownloader.html): 링크그래버·Java 기반 JDownloader 대비 스트리밍 자동 감지 특장점
- [릴리스 & 다운로드](https://mediabrowser.chanpaca.net/releases.html): Windows 정식 설치자(.msi/.exe), macOS/Linux 프리뷰, Android APK
- [사용자 가이드 & FAQ](https://mediabrowser.chanpaca.net/guide.html): 설치, 영상 저장, 홈 Wi-Fi 모바일 스트리밍, 단축키
- [RSS Feed](https://mediabrowser.chanpaca.net/feed.xml): 최신 페이지 및 릴리스 피드 (Naver Search Advisor)
- [전체 상세 기술 명세서](https://mediabrowser.chanpaca.net/llms-full.txt): LLM 인용용 풀스펙 명세서
## 지원 프로토콜 및 엔진 사양

View file

@ -0,0 +1 @@
naver-site-verification: naverb6e030772fa2a09122a78d79bb2ba1df.html

View file

@ -4,7 +4,15 @@
User-agent: *
Allow: /
# OpenAI SearchGPT & ChatGPT Crawler
# OpenAI SearchGPT (실시간 검색 인덱서)
User-agent: OAI-SearchBot
Allow: /
# OpenAI ChatGPT 실시간 사용자 요청 크롤러
User-agent: ChatGPT-User
Allow: /
# OpenAI 학습 크롤러
User-agent: GPTBot
Allow: /
@ -21,6 +29,10 @@ Allow: /
User-agent: Google-Extended
Allow: /
# Apple Intelligence / Applebot 확장
User-agent: Applebot-Extended
Allow: /
# Microsoft Bing & Copilot
User-agent: Bingbot
Allow: /
@ -32,5 +44,6 @@ Allow: /
# AI 모델 및 LLM 인덱싱 표준 명세 (Answer.AI / Anthropic llms.txt 표준)
# LLMs-Text: https://mediabrowser.chanpaca.net/llms.txt
# LLMs-Full-Text: https://mediabrowser.chanpaca.net/llms-full.txt
# RSS Feed (Naver Search Advisor): https://mediabrowser.chanpaca.net/feed.xml
Sitemap: https://mediabrowser.chanpaca.net/sitemap.xml

View file

@ -18,18 +18,54 @@
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/how-to-download-dash-mpd.html</loc>
<lastmod>2026-09-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/how-to-download-hls-aes-128.html</loc>
<lastmod>2026-09-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/vs-idm-alternative.html</loc>
<lastmod>2026-09-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/vs-yt-dlp.html</loc>
<lastmod>2026-09-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/vs-jdownloader.html</loc>
<lastmod>2026-09-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/guide.html</loc>
<lastmod>2026-09-14</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/en/</loc>
<lastmod>2026-09-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/feed.xml</loc>
<lastmod>2026-09-14</lastmod>
<changefreq>weekly</changefreq>
<priority>0.6</priority>
</url>
<url>
<loc>https://mediabrowser.chanpaca.net/llms.txt</loc>
<lastmod>2026-09-14</lastmod>

View file

@ -14,8 +14,6 @@
<meta name="theme-color" content="#08090d">
<link rel="canonical" href="https://mediabrowser.chanpaca.net/vs-idm-alternative.html">
<link rel="alternate" hreflang="ko" href="https://mediabrowser.chanpaca.net/vs-idm-alternative.html">
<link rel="alternate" hreflang="en" href="https://mediabrowser.chanpaca.net/vs-idm-alternative.html">
<link rel="alternate" hreflang="x-default" href="https://mediabrowser.chanpaca.net/vs-idm-alternative.html">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
@ -114,6 +112,7 @@
<section class="card" style="margin-bottom:var(--space-6);overflow-x:auto">
<h2 style="margin-bottom:var(--space-4)">기능 및 성능 상세 비교표 (Comparison Matrix)</h2>
<table style="width:100%;border-collapse:collapse;text-align:left;font-size:var(--step-0);min-width:640px">
<caption style="caption-side:top;text-align:left;padding:0 0 var(--space-3);color:var(--text-secondary);font-size:var(--step-0)">Paca vs Internet Download Manager(IDM) vs 4K Video Downloader vs 크롬 확장 프로그램 기능 비교 (2026-09 기준 검증)</caption>
<thead>
<tr style="border-bottom:1px solid var(--border-medium);color:var(--text-muted)">
<th style="padding:var(--space-3);width:25%">비교 항목</th>
@ -235,6 +234,8 @@
<a href="index.html">홈</a>
<a href="how-to-download-m3u8.html">m3u8 가이드</a>
<a href="vs-idm-alternative.html">IDM 비교</a>
<a href="vs-yt-dlp.html">yt-dlp 비교</a>
<a href="vs-jdownloader.html">JDownloader 비교</a>
<a href="releases.html">다운로드</a>
<a href="llms.txt">llms.txt</a>
</div>

234
site/vs-jdownloader.html Normal file
View file

@ -0,0 +1,234 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>2026 무료 동영상 다운로더: JDownloader 대체 프로그램 Paca 비교</title>
<meta name="description" content="JDownloader 대비 Paca의 강점 상세 비교. Java 설치·링크 붙여넣기 없이 내장 브라우저에서 재생 즉시 HLS m3u8·DASH 스트림을 자동 감지해 로그인 세션 그대로 무손실 MP4로 저장하는 100% 무료 다운로더.">
<meta name="keywords" content="JDownloader 대안, JDownloader 대체, 무료 동영상 다운로더, m3u8 다운로더, 링크그래버 대안, Java 없이 다운로더, Paca">
<meta property="og:type" content="article">
<meta property="og:title" content="2026 무료 동영상 다운로더: JDownloader 대체 프로그램 Paca 비교">
<meta property="og:description" content="링크 붙여넣기 없이 재생 즉시 감지. 스트리밍에 특화된 100% 무료 미디어 브라우저 Paca.">
<meta property="og:url" content="https://mediabrowser.chanpaca.net/vs-jdownloader.html">
<meta property="og:image" content="https://mediabrowser.chanpaca.net/assets/og.jpg">
<meta name="theme-color" content="#08090d">
<link rel="canonical" href="https://mediabrowser.chanpaca.net/vs-jdownloader.html">
<link rel="alternate" hreflang="ko" href="https://mediabrowser.chanpaca.net/vs-jdownloader.html">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "JDownloader 대신 Paca를 선택해야 하는 이유는 무엇인가요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "JDownloader는 파일 호스팅 링크를 대량으로 받는 데 강하지만 Java 런타임 설치와 링크 수집(붙여넣기) 과정이 필요하고, 재생 중인 HLS/DASH 스트리밍을 자동으로 잡아내는 데는 적합하지 않습니다. Paca는 브라우저를 내장해 재생 즉시 스트림을 감지하고 로그인 세션을 승계하므로, 회원제·비공개 스트리밍 저장에서 훨씬 간편한 무료 대안입니다."
}
},
{
"@type": "Question",
"name": "Paca도 여러 개 링크를 한꺼번에 다운로드할 수 있나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "네. Paca는 다운로드 큐와 심야 예약, CSV 내보내기를 지원하며 세그먼트를 병렬로 내려받습니다. 다만 JDownloader가 특화된 원클릭 호스터 대량 처리나 캡차 자동 인식은 지원하지 않습니다. 두 도구는 목적이 다릅니다."
}
},
{
"@type": "Question",
"name": "Java를 설치해야 하나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "아니요. Paca는 네이티브 Windows 애플리케이션(.NET / WebView2 / ffmpeg 내장)으로, Java 런타임이나 별도 환경 구성이 전혀 필요 없습니다."
}
}
]
}
</script>
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
<link rel="icon" href="assets/favicon-32x32.png" type="image/png">
<link rel="apple-touch-icon" href="assets/apple-touch-icon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/wanteddev/wanted-sans@v1.0.3/packages/wanted-sans/fonts/webfonts/variable/split/WantedSansVariable.min.css">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<a class="skip-link" href="#main-content">본문 바로가기</a>
<div class="ambient-lighting" aria-hidden="true">
<div class="ambient-grid"></div>
<div class="ambient-glow"></div>
</div>
<!-- Fluid Island Navigation -->
<div class="nav-wrapper">
<nav class="nav" aria-label="주 메뉴">
<a class="nav__brand" href="index.html">
<span class="nav__logo-badge" style="padding:0;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;">
<img src="assets/favicon-32x32.png" alt="Paca" style="width:24px;height:24px;border-radius:var(--radius-sm);display:block;">
</span>
<span>Paca</span>
</a>
<div class="nav__links">
<a class="nav__link" href="index.html#how-it-works">작동 방식</a>
<a class="nav__link" href="vs-idm-alternative.html">IDM 비교</a>
<a class="nav__link" href="how-to-download-m3u8.html">m3u8 가이드</a>
<a class="nav__link" href="guide.html">사용 안내</a>
</div>
<div class="nav__actions">
<a class="btn btn--primary btn--sm" href="releases.html">
<span>무료 다운로드</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="assets/icons.svg#arrow-up-right"/></svg></span>
</a>
</div>
</nav>
</div>
<header class="guide-header-pad">
<div class="wrap">
<span class="eyebrow">AEO / 비교 가이드</span>
<h1>스트리밍에 특화된 무료 대안: Paca 비교</h1>
<p class="sub" style="margin-top:16px;max-width:760px">링크를 복사해 붙여넣을 필요 없이, 재생하는 순간 스트림을 감지해 로그인 세션 그대로 무손실 저장하는 100% 무료 미디어 브라우저를 비교해 보세요.</p>
</div>
</header>
<main class="wrap" id="main-content" style="padding-bottom:var(--space-7)">
<!-- AEO Direct Answer Summary -->
<section class="card" style="margin-bottom:var(--space-6);background:var(--surface-2);border-color:var(--accent-border)">
<div style="display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2)">
<span style="background:var(--accent);color:#fff;font-weight:700;padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--step-0)">AEO 핵심 답변</span>
<h2 style="font-size:var(--step-2);margin:0">JDownloader 같은 무료 대안 프로그램은?</h2>
</div>
<p style="color:var(--text-secondary);line-height:1.7">
<strong>Paca(파카)</strong>는 <strong>JDownloader</strong>가 잘 못하는 <strong>재생 중인 스트리밍(HLS·DASH·MP4) 자동 감지</strong>에 특화된 100% 무료 미디어 브라우저입니다. Java 설치가 필요 없고, 내장 Chromium WebView2 브라우저에서 로그인한 세션 그대로 회원제·비공개 영상을 원본 화질로 저장합니다.
</p>
</section>
<!-- Comparison Matrix Table -->
<section class="card" style="margin-bottom:var(--space-6);overflow-x:auto">
<h2 style="margin-bottom:var(--space-4)">기능 및 사용성 상세 비교표 (Comparison Matrix)</h2>
<table style="width:100%;border-collapse:collapse;text-align:left;font-size:var(--step-0);min-width:640px">
<caption style="caption-side:top;text-align:left;padding:0 0 var(--space-3);color:var(--text-secondary);font-size:var(--step-0)">Paca vs JDownloader vs 일반 크롬 확장 프로그램 비교 (2026-09 기준 검증)</caption>
<thead>
<tr style="border-bottom:1px solid var(--border-medium);color:var(--text-muted)">
<th scope="col" style="padding:var(--space-3);width:25%">비교 항목</th>
<th scope="col" style="padding:var(--space-3);color:var(--accent-bright);width:25%">Paca (파카)</th>
<th scope="col" style="padding:var(--space-3);width:25%">JDownloader</th>
<th scope="col" style="padding:var(--space-3);width:25%">크롬 확장 프로그램</th>
</tr>
</thead>
<tbody>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">실행 환경</th>
<td style="padding:var(--space-3);color:var(--success);font-weight:700">네이티브 앱 (설치자 하나)</td>
<td style="padding:var(--space-3);color:var(--warning)">Java 런타임 필요</td>
<td style="padding:var(--space-3)">브라우저 탭 내 동작</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">사용 방식</th>
<td style="padding:var(--space-3);color:var(--success)">재생 즉시 자동 감지</td>
<td style="padding:var(--space-3)">링크 복사·붙여넣기 (링크그래버)</td>
<td style="padding:var(--space-3)">탭 재생 미디어 한정</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">주 용도</th>
<td style="padding:var(--space-3);color:var(--success)">HLS/DASH 스트리밍 · 회원제 영상</td>
<td style="padding:var(--space-3)">원클릭 호스터 · 대량 파일 링크</td>
<td style="padding:var(--space-3)">간단한 단일 미디어</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">로그인 세션 승계</th>
<td style="padding:var(--space-3);color:var(--success)">내장 브라우저 자동 동기화</td>
<td style="padding:var(--space-3)">수동 쿠키 설정 필요</td>
<td style="padding:var(--space-3)">권한 충돌 및 403 빈번</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">HLS m3u8 / DASH</th>
<td style="padding:var(--space-3);color:var(--success)">자동 감지 &amp; 병렬 병합</td>
<td style="padding:var(--space-3);color:var(--warning)">일부 플러그인 의존</td>
<td style="padding:var(--space-3)">다운로드 중단 빈번</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">모바일 로컬 스트리밍</th>
<td style="padding:var(--space-3);color:var(--success)">QR 페어링 홈 Wi-Fi P2P</td>
<td style="padding:var(--space-3);color:var(--danger)">미지원</td>
<td style="padding:var(--space-3);color:var(--danger)">미지원</td>
</tr>
<tr>
<th scope="row" style="padding:var(--space-3);font-weight:600">가격</th>
<td style="padding:var(--space-3);color:var(--success)">100% 평생 무료</td>
<td style="padding:var(--space-3)">무료 (광고 포함)</td>
<td style="padding:var(--space-3)">무료 (유료 결제 유도)</td>
</tr>
</tbody>
</table>
</section>
<!-- Deep Dive Sections -->
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--space-5);margin-bottom:var(--space-6)">
<div class="card">
<h3 style="color:var(--accent-bright);font-size:var(--step-1)">1. 목적이 다릅니다</h3>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
JDownloader는 Rapidgator·1fichier 같은 파일 호스팅의 대량 링크를 캡차 처리와 함께 받는 데 최적화돼 있습니다. Paca는 반대로 웹사이트에서 재생되는 스트리밍을 자동으로 잡아 저장하는 데 집중합니다.
</p>
</div>
<div class="card">
<h3 style="color:var(--accent-bright);font-size:var(--step-1)">2. Java·링크 복사가 없는 흐름</h3>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
Java 런타임을 따로 설치하거나 링크를 복사할 필요가 없습니다. Paca 내장 브라우저에서 평소처럼 재생하면 스트림이 다운로드 목록에 자동으로 올라오고, 저장 버튼 한 번으로 MP4 가 완성됩니다.
</p>
</div>
</div>
<!-- FAQ Section -->
<section class="card" style="margin-bottom:var(--space-6)">
<h2>자주 묻는 질문 (FAQ)</h2>
<div style="margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)">
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. 원클릭 호스터(대용량 파일 링크)도 Paca로 받을 수 있나요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">Paca는 웹에서 재생되는 미디어(스트리밍) 저장에 특화되어 있습니다. 대량의 파일 호스팅 링크를 캡차까지 자동 처리하는 용도라면 JDownloader가 더 적합합니다.</p>
</div>
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. 속도와 안정성은 어떤가요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">세그먼트를 최대 16스레드로 병렬 수신하고, 끊기면 받은 지점부터 이어받습니다. AES-128 암호화 스트림도 자동 복호화합니다.</p>
</div>
</div>
</section>
<!-- CTA Banner -->
<section class="card" style="text-align:center;padding:var(--space-6) var(--space-4);background:var(--surface-2);border-color:var(--accent-border)">
<h2 style="font-size:var(--step-3)">재생하면 준비됩니다</h2>
<p style="color:var(--text-secondary);margin-top:var(--space-2)">링크 복사도, Java 설치도 없는 100% 무료 미디어 브라우저.</p>
<div style="margin-top:var(--space-5);display:flex;gap:12px;flex-wrap:wrap;justify-content:center">
<a class="btn btn--primary" style="padding:var(--space-3) var(--space-6);font-size:var(--step-1)" href="releases.html">
<span>Paca 무료 다운로드</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="assets/icons.svg#arrow-up-right"/></svg></span>
</a>
<a class="btn btn--ghost" style="padding:var(--space-3) var(--space-6);font-size:var(--step-1)" href="vs-yt-dlp.html">
<span>yt-dlp 비교</span>
</a>
</div>
</section>
</main>
<footer class="footer">
<div class="wrap footer-wrap">
<p class="footer-copy">© 2026 Paca Media Browser. 모든 권리 보유.</p>
<div class="footer-links">
<a href="index.html">홈</a>
<a href="how-to-download-m3u8.html">m3u8 가이드</a>
<a href="vs-idm-alternative.html">IDM 비교</a>
<a href="vs-yt-dlp.html">yt-dlp 비교</a>
<a href="releases.html">다운로드</a>
<a href="llms.txt">llms.txt</a>
</div>
</div>
</footer>
<script src="site.js"></script>
</body>
</html>

234
site/vs-yt-dlp.html Normal file
View file

@ -0,0 +1,234 @@
<!doctype html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>2026 무료 GUI 동영상 다운로더: yt-dlp 대체 프로그램 Paca 비교</title>
<meta name="description" content="yt-dlp 대비 Paca의 강점 상세 비교. 명령어·Python·ffmpeg 설치 없이 내장 브라우저에서 재생 즉시 HLS m3u8·DASH 스트림을 자동 감지해 무손실 MP4로 저장하는 100% 무료 GUI 다운로더.">
<meta name="keywords" content="yt-dlp 대안, yt-dlp GUI, yt-dlp 사용법 어려움, youtube-dl 대안, 무료 동영상 다운로더 GUI, m3u8 다운로더, Paca">
<meta property="og:type" content="article">
<meta property="og:title" content="2026 무료 GUI 동영상 다운로더: yt-dlp 대체 프로그램 Paca 비교">
<meta property="og:description" content="터미널 명령어 없이 클릭 한 번. yt-dlp의 강력함을 GUI로 감싼 100% 무료 미디어 브라우저 Paca.">
<meta property="og:url" content="https://mediabrowser.chanpaca.net/vs-yt-dlp.html">
<meta property="og:image" content="https://mediabrowser.chanpaca.net/assets/og.jpg">
<meta name="theme-color" content="#08090d">
<link rel="canonical" href="https://mediabrowser.chanpaca.net/vs-yt-dlp.html">
<link rel="alternate" hreflang="ko" href="https://mediabrowser.chanpaca.net/vs-yt-dlp.html">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "yt-dlp 대신 Paca를 선택해야 하는 이유는 무엇인가요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "yt-dlp는 매우 강력한 명령줄(CLI) 도구지만 Python과 ffmpeg 설치, 옵션 암기, 수동 쿠키 내보내기가 필요해 일반 사용자에게는 진입 장벽이 높습니다. Paca는 같은 스트리밍(HLS·DASH)을 대상으로 하되 브라우저 내장·재생 즉시 자동 감지·로그인 세션 승계·무손실 MP4 리먹싱을 GUI 클릭만으로 처리하는 100% 무료 대안입니다."
}
},
{
"@type": "Question",
"name": "yt-dlp가 지원하는 사이트를 Paca도 지원하나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "역할이 다릅니다. yt-dlp는 1,000개 이상 사이트 전용 추출기를 갖춘 CLI 도구이고, Paca는 브라우저에서 재생되는 HLS(.m3u8)·DASH(.mpd)·MP4 스트림을 프로토콜 단위로 가로채는 방식이라 특정 사이트 목록에 묶이지 않습니다. 회원 로그인·Referer가 필요한 비공개 스트림에서 특히 강합니다."
}
},
{
"@type": "Question",
"name": "명령어를 전혀 몰라도 사용할 수 있나요?",
"acceptedAnswer": {
"@type": "Answer",
"text": "네. Paca는 터미널을 열 필요가 없습니다. 내장 브라우저에서 영상을 재생하면 다운로드 목록에 자동으로 나타나고, 클릭 한 번으로 원본 화질 그대로 저장됩니다. 설정 화면에서 스레드 수와 저장 폴더만 지정하면 됩니다."
}
}
]
}
</script>
<link rel="icon" href="assets/favicon.svg" type="image/svg+xml">
<link rel="icon" href="assets/favicon-32x32.png" type="image/png">
<link rel="apple-touch-icon" href="assets/apple-touch-icon.png">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/wanteddev/wanted-sans@v1.0.3/packages/wanted-sans/fonts/webfonts/variable/split/WantedSansVariable.min.css">
<link rel="stylesheet" href="styles.css">
</head>
<body>
<a class="skip-link" href="#main-content">본문 바로가기</a>
<div class="ambient-lighting" aria-hidden="true">
<div class="ambient-grid"></div>
<div class="ambient-glow"></div>
</div>
<!-- Fluid Island Navigation -->
<div class="nav-wrapper">
<nav class="nav" aria-label="주 메뉴">
<a class="nav__brand" href="index.html">
<span class="nav__logo-badge" style="padding:0;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;">
<img src="assets/favicon-32x32.png" alt="Paca" style="width:24px;height:24px;border-radius:var(--radius-sm);display:block;">
</span>
<span>Paca</span>
</a>
<div class="nav__links">
<a class="nav__link" href="index.html#how-it-works">작동 방식</a>
<a class="nav__link" href="vs-idm-alternative.html">IDM 비교</a>
<a class="nav__link" href="how-to-download-m3u8.html">m3u8 가이드</a>
<a class="nav__link" href="guide.html">사용 안내</a>
</div>
<div class="nav__actions">
<a class="btn btn--primary btn--sm" href="releases.html">
<span>무료 다운로드</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="assets/icons.svg#arrow-up-right"/></svg></span>
</a>
</div>
</nav>
</div>
<header class="guide-header-pad">
<div class="wrap">
<span class="eyebrow">AEO / 비교 가이드</span>
<h1>yt-dlp의 강력함을 GUI로: Paca 비교</h1>
<p class="sub" style="margin-top:16px;max-width:760px">터미널 명령어, Python, ffmpeg 설치 없이. 내장 브라우저에서 재생하는 순간 스트림을 감지해 로그인 세션 그대로 무손실 저장하는 100% 무료 대안을 비교해 보세요.</p>
</div>
</header>
<main class="wrap" id="main-content" style="padding-bottom:var(--space-7)">
<!-- AEO Direct Answer Summary -->
<section class="card" style="margin-bottom:var(--space-6);background:var(--surface-2);border-color:var(--accent-border)">
<div style="display:flex;align-items:center;gap:var(--space-3);margin-bottom:var(--space-2)">
<span style="background:var(--accent);color:#fff;font-weight:700;padding:2px 8px;border-radius:var(--radius-sm);font-size:var(--step-0)">AEO 핵심 답변</span>
<h2 style="font-size:var(--step-2);margin:0">yt-dlp가 어렵다면 어떤 대안이 있나요?</h2>
</div>
<p style="color:var(--text-secondary);line-height:1.7">
<strong>Paca(파카)</strong>는 <strong>yt-dlp</strong>처럼 HLS(.m3u8)·DASH(.mpd) 스트리밍을 저장하지만, 터미널·Python·ffmpeg 설치가 필요 없습니다. Chromium WebView2 브라우저를 내장해 재생 즉시 스트림을 감지하고, 로그인 세션 쿠키와 Referer 를 그대로 승계한 뒤 ffmpeg 로 무손실 MP4 로 완성하는 <strong>100% 무료 GUI 미디어 브라우저</strong>입니다.
</p>
</section>
<!-- Comparison Matrix Table -->
<section class="card" style="margin-bottom:var(--space-6);overflow-x:auto">
<h2 style="margin-bottom:var(--space-4)">기능 및 사용성 상세 비교표 (Comparison Matrix)</h2>
<table style="width:100%;border-collapse:collapse;text-align:left;font-size:var(--step-0);min-width:640px">
<caption style="caption-side:top;text-align:left;padding:0 0 var(--space-3);color:var(--text-secondary);font-size:var(--step-0)">Paca vs yt-dlp vs 일반 크롬 확장 프로그램 비교 (2026-09 기준 검증)</caption>
<thead>
<tr style="border-bottom:1px solid var(--border-medium);color:var(--text-muted)">
<th scope="col" style="padding:var(--space-3);width:25%">비교 항목</th>
<th scope="col" style="padding:var(--space-3);color:var(--accent-bright);width:25%">Paca (파카)</th>
<th scope="col" style="padding:var(--space-3);width:25%">yt-dlp</th>
<th scope="col" style="padding:var(--space-3);width:25%">크롬 확장 프로그램</th>
</tr>
</thead>
<tbody>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">사용 방식</th>
<td style="padding:var(--space-3);color:var(--success);font-weight:700">GUI 클릭 (재생 즉시 감지)</td>
<td style="padding:var(--space-3)">터미널 명령어 입력</td>
<td style="padding:var(--space-3)">브라우저 탭 내 동작</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">사전 설치 필요</th>
<td style="padding:var(--space-3);color:var(--success)">없음 (설치자 하나)</td>
<td style="padding:var(--space-3);color:var(--danger)">Python + ffmpeg 별도 설치</td>
<td style="padding:var(--space-3)">확장 프로그램 설치</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">로그인 세션 승계</th>
<td style="padding:var(--space-3);color:var(--success)">내장 브라우저 자동 동기화</td>
<td style="padding:var(--space-3)">쿠키 파일 수동 내보내기 필요</td>
<td style="padding:var(--space-3)">권한 충돌 및 403 빈번</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">대상 스트림</th>
<td style="padding:var(--space-3)">HLS · DASH · MP4 (프로토콜 단위 감지)</td>
<td style="padding:var(--space-3)">사이트별 추출기 1,000+</td>
<td style="padding:var(--space-3)">탭에서 재생된 미디어 한정</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">AES-128 복호화</th>
<td style="padding:var(--space-3);color:var(--success)">자동 키 획득 &amp; 복호화</td>
<td style="padding:var(--space-3)">지원 (옵션 설정 필요)</td>
<td style="padding:var(--space-3);color:var(--danger)">미지원</td>
</tr>
<tr style="border-bottom:1px solid var(--border-subtle)">
<th scope="row" style="padding:var(--space-3);font-weight:600">모바일 로컬 스트리밍</th>
<td style="padding:var(--space-3);color:var(--success)">QR 페어링 홈 Wi-Fi P2P</td>
<td style="padding:var(--space-3);color:var(--danger)">미지원</td>
<td style="padding:var(--space-3);color:var(--danger)">미지원</td>
</tr>
<tr>
<th scope="row" style="padding:var(--space-3);font-weight:600">가격</th>
<td style="padding:var(--space-3);color:var(--success)">100% 평생 무료</td>
<td style="padding:var(--space-3)">무료 (오픈소스)</td>
<td style="padding:var(--space-3)">무료 (유료 결제 유도)</td>
</tr>
</tbody>
</table>
</section>
<!-- Deep Dive Sections -->
<div style="display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:var(--space-5);margin-bottom:var(--space-6)">
<div class="card">
<h3 style="color:var(--accent-bright);font-size:var(--step-1)">1. 명령어 없이, 클릭만으로</h3>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
yt-dlp는 자막·포맷 선택·병합 옵션을 매번 조합해야 하고, 사이트가 바뀌면 버전을 최신으로 유지해야 합니다. Paca는 내장 브라우저에서 재생만 하면 스트림이 목록에 뜨고, 저장 버튼 한 번이면 끝납니다.
</p>
</div>
<div class="card">
<h3 style="color:var(--accent-bright);font-size:var(--step-1)">2. 비공개·회원제 스트림에 강함</h3>
<p style="color:var(--text-secondary);line-height:1.7;margin-top:var(--space-2)">
로그인 벽 뒤의 강의·멤버십 영상은 쿠키와 Referer 가 맞지 않으면 403 이 납니다. Paca는 사용자가 로그인한 브라우저 탭의 세션을 다운로드 엔진에 그대로 물려주므로 별도 쿠키 내보내기가 없습니다.
</p>
</div>
</div>
<!-- FAQ Section -->
<section class="card" style="margin-bottom:var(--space-6)">
<h2>자주 묻는 질문 (FAQ)</h2>
<div style="margin-top:var(--space-4);display:flex;flex-direction:column;gap:var(--space-4)">
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. yt-dlp를 이미 잘 쓰고 있다면 Paca로 바꿀 이유가 있나요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">CLI 자체가 편한 사용자라면 yt-dlp가 최적입니다. Paca는 터미널이 부담스럽거나, 브라우저에서 로그인한 상태로 재생 중인 스트림을 그대로 저장하거나, 휴대폰으로 이어보고 싶을 때 유리합니다.</p>
</div>
<div style="border-left:3px solid var(--accent);padding-left:var(--space-3)">
<strong style="color:var(--text-primary)">Q. Paca는 무료인가요? 설치가 복잡하지 않나요?</strong>
<p style="color:var(--text-secondary);margin-top:var(--space-1);line-height:1.6">100% 평생 무료이며, Windows 설치 파일 하나만 실행하면 끝납니다. Python·ffmpeg·환경변수 설정이 필요 없습니다.</p>
</div>
</div>
</section>
<!-- CTA Banner -->
<section class="card" style="text-align:center;padding:var(--space-6) var(--space-4);background:var(--surface-2);border-color:var(--accent-border)">
<h2 style="font-size:var(--step-3)">명령어 없이 지금 바로 받아보세요</h2>
<p style="color:var(--text-secondary);margin-top:var(--space-2)">재생하면 준비됩니다. 100% 무료 미디어 브라우저 Paca.</p>
<div style="margin-top:var(--space-5);display:flex;gap:12px;flex-wrap:wrap;justify-content:center">
<a class="btn btn--primary" style="padding:var(--space-3) var(--space-6);font-size:var(--step-1)" href="releases.html">
<span>Paca 무료 다운로드</span>
<span class="btn__icon-badge"><svg class="icon" aria-hidden="true"><use href="assets/icons.svg#arrow-up-right"/></svg></span>
</a>
<a class="btn btn--ghost" style="padding:var(--space-3) var(--space-6);font-size:var(--step-1)" href="vs-idm-alternative.html">
<span>IDM·4K Downloader 비교</span>
</a>
</div>
</section>
</main>
<footer class="footer">
<div class="wrap footer-wrap">
<p class="footer-copy">© 2026 Paca Media Browser. 모든 권리 보유.</p>
<div class="footer-links">
<a href="index.html">홈</a>
<a href="how-to-download-m3u8.html">m3u8 가이드</a>
<a href="vs-idm-alternative.html">IDM 비교</a>
<a href="vs-jdownloader.html">JDownloader 비교</a>
<a href="releases.html">다운로드</a>
<a href="llms.txt">llms.txt</a>
</div>
</div>
</footer>
<script src="site.js"></script>
</body>
</html>

View file

@ -1177,6 +1177,13 @@
<TextBlock Text="폴더에 표시" FontSize="11.5" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button x:Name="DownloadShelfShareBtn" Style="{StaticResource GhostButton}" Height="28" Padding="10,0" Margin="2,0"
Click="DownloadShelfShareBtn_Click" AutomationProperties.Name="다운로드 결과 공유">
<StackPanel Orientation="Horizontal">
<TextBlock Text="&#xE72D;" Style="{StaticResource FluentIcon}" FontSize="11" Margin="0,0,4,0" VerticalAlignment="Center"/>
<TextBlock Text="공유" FontSize="11.5" VerticalAlignment="Center"/>
</StackPanel>
</Button>
<Button x:Name="DownloadShelfShowAllBtn" Style="{StaticResource GhostButton}" Height="28" Padding="10,0" Margin="2,0"
Click="DownloadShelfShowAllBtn_Click" AutomationProperties.Name="모두 표시">
<TextBlock Text="모두 표시" FontSize="11.5" VerticalAlignment="Center"/>

View file

@ -5603,6 +5603,25 @@ public partial class MainWindow : Window
}
}
private void DownloadShelfShareBtn_Click(object sender, RoutedEventArgs e)
{
try
{
var name = DownloadShelfFileName?.Text ?? "";
var shareText = Paca.Core.Social.ShareCardBuilder.BuildShareText(name);
try { Clipboard.SetText(shareText); } catch { }
var dlg = new QrCodeDialog(Paca.Core.Social.ShareCardBuilder.BuildShareUrl(), Paca.Core.Social.ShareCardBuilder.BuildQrTitle(name))
{
Owner = this
};
dlg.ShowDialog();
}
catch
{
_toast?.Show("공유 링크를 만들지 못했습니다", "error");
}
}
private void DownloadShelfShowAllBtn_Click(object sender, RoutedEventArgs e)
{
DownloadsPopup.IsOpen = true;

View file

@ -0,0 +1,33 @@
namespace Paca.Core.Social;
/// <summary>
/// 제품 내 확산 루프용 공유 카드 페이로드 빌더.
/// 다운로드 완료 화면에서 결과물을 공유할 때 UTM 이 붙은 랜딩 URL 을 함께 실어 보내
/// 공유에서 방문, 설치로 이어지는 유입 루프를 닫는다.
/// </summary>
public static class ShareCardBuilder
{
/// <summary>공유에 사용하는 공식 랜딩 URL.</summary>
public const string LandingUrl = "https://mediabrowser.chanpaca.net/";
/// <summary>유입 분석용 UTM 소스(앱 내 공유).</summary>
public const string UtmSource = "paca_app";
/// <summary>UTM 이 부착된 공유용 랜딩 URL 을 만든다.</summary>
public static string BuildShareUrl(string medium = "share_card")
{
var m = string.IsNullOrWhiteSpace(medium) ? "share_card" : medium.Trim();
return $"{LandingUrl}?utm_source={UtmSource}&utm_medium={m}&utm_campaign=download_complete";
}
/// <summary>공유 시트나 클립보드에 넣을 공유 문구를 만든다.</summary>
public static string BuildShareText(string title, string medium = "share_card")
{
var name = string.IsNullOrWhiteSpace(title) ? "미디어" : title.Trim();
return $"Paca로 '{name}' 저장 완료. 재생만 하면 스트림을 자동 감지해 무손실 MP4로 저장하는 100% 무료 미디어 브라우저 → {BuildShareUrl(medium)}";
}
/// <summary>공유 카드(QR) 창의 제목을 만든다.</summary>
public static string BuildQrTitle(string title)
=> string.IsNullOrWhiteSpace(title) ? "Paca 무료 다운로드" : $"'{title.Trim()}' 공유 - Paca 무료 다운로드";
}

View file

@ -0,0 +1,53 @@
using System;
using Paca.Core.Social;
using Xunit;
namespace Paca.Tests.Core;
/// <summary>
/// 제품 내 확산(공유) 루프 게이트: 다운로드 완료 화면에서 결과물을 공유하면
/// UTM 이 붙은 랜딩 URL 이 함께 퍼져 유입 루프가 닫히는지 검증한다.
/// </summary>
public class ShareLoopGateTests
{
[Fact]
public void Gate219_ShareCardBuilder_BuildsUtmTaggedLandingUrlAndShareText()
{
var url = ShareCardBuilder.BuildShareUrl("share_card");
Assert.Contains("https://mediabrowser.chanpaca.net/", url);
Assert.Contains("utm_source=paca_app", url);
Assert.Contains("utm_medium=share_card", url);
var text = ShareCardBuilder.BuildShareText("Big Buck Bunny.mp4");
Assert.Contains("Big Buck Bunny.mp4", text);
Assert.Contains(ShareCardBuilder.BuildShareUrl(), text);
Assert.Contains("미디어 브라우저", text);
}
[Fact]
public void Gate219_ShareCardBuilder_HandlesEmptyTitleAndBuildsQrTitle()
{
var text = ShareCardBuilder.BuildShareText(" ");
Assert.Contains("https://mediabrowser.chanpaca.net/", text);
Assert.DoesNotContain("''", text);
var qrTitle = ShareCardBuilder.BuildQrTitle("");
Assert.Contains("Paca", qrTitle);
var qrTitle2 = ShareCardBuilder.BuildQrTitle("clip.mp4");
Assert.Contains("clip.mp4", qrTitle2);
}
[Fact]
public void Gate219_DownloadShelf_DeclaresShareButtonWiredToShareCardBuilder()
{
var xaml = SourceTree.MainWindowXaml;
Assert.Contains("DownloadShelfShareBtn", xaml);
Assert.Contains("Click=\"DownloadShelfShareBtn_Click\"", xaml);
Assert.Contains("AutomationProperties.Name=\"다운로드 결과 공유\"", xaml);
var cs = SourceTree.MainWindowCs;
Assert.Contains("DownloadShelfShareBtn_Click", cs);
Assert.Contains("ShareCardBuilder", cs);
}
}

View file

@ -117,4 +117,181 @@ public class SiteSeoAeoGeoGateTests
var indexHtml = File.ReadAllText(indexPath);
Assert.Contains("hreflang", indexHtml);
}
[Fact]
public void Gate214_AiCrawlerCoverageIndexNowAndFeedIntegrity()
{
// 1. robots.txt: 2026 신규 생성형 AI 검색 크롤러(OAI-SearchBot, ChatGPT-User 등) 및 Applebot-Extended 허용
var robotsTxt = File.ReadAllText(Path.Combine(SiteDir, "robots.txt"));
Assert.Contains("OAI-SearchBot", robotsTxt);
Assert.Contains("ChatGPT-User", robotsTxt);
Assert.Contains("Applebot-Extended", robotsTxt);
// 2. IndexNow 키 파일: 루트에 {key}.txt 가 존재하고 내용이 파일명(키)과 정확히 일치해야 한다.
const string indexNowKey = "e9f2c7a4b1d8460f9c3e2a7b5d1f08c4";
var keyFilePath = Path.Combine(SiteDir, indexNowKey + ".txt");
Assert.True(File.Exists(keyFilePath), "site/ 에 IndexNow 키 파일 {key}.txt 가 존재해야 합니다.");
Assert.Equal(indexNowKey, File.ReadAllText(keyFilePath).Trim());
// 3. IndexNow ping 스크립트: 사이트맵 URL 을 엔진(api.indexnow.org / bing / naver)에 제출해야 한다.
var pingScriptPath = Path.Combine(SourceTree.Root, "build", "indexnow-ping.ps1");
Assert.True(File.Exists(pingScriptPath), "build/indexnow-ping.ps1 스크립트가 존재해야 합니다.");
var pingScript = File.ReadAllText(pingScriptPath);
Assert.Contains("api.indexnow.org", pingScript);
Assert.Contains(indexNowKey, pingScript);
// 4. Naver Search Advisor 대응 RSS 피드: sitemap + RSS 2.0 을 함께 제공해야 한다.
var feedPath = Path.Combine(SiteDir, "feed.xml");
Assert.True(File.Exists(feedPath), "site/feed.xml (RSS 2.0) 이 존재해야 합니다.");
var feed = File.ReadAllText(feedPath);
Assert.Contains("<rss", feed);
Assert.Contains("<channel>", feed);
Assert.Contains("<item>", feed);
Assert.Contains("mediabrowser.chanpaca.net", feed);
}
[Fact]
public void Gate215_EnglishLocalizationAndValidHreflangIntegrity()
{
// 1. 실제 영문 랜딩 페이지 존재 및 언어 선언 (Hreflang 은 실제 번역 페이지가 있어야만 유효하다)
var enPath = Path.Combine(SiteDir, "en", "index.html");
Assert.True(File.Exists(enPath), "site/en/index.html 영문 랜딩 페이지가 존재해야 합니다.");
var enHtml = File.ReadAllText(enPath);
Assert.Contains("lang=\"en\"", enHtml);
Assert.Contains("https://mediabrowser.chanpaca.net/en/", enHtml);
Assert.Contains("hreflang=\"ko\"", enHtml);
// 2. 한국어 홈: hreflang en 은 실제 영문 URL(/en/)을 가리켜야 한다 (자기 참조 금지).
var indexHtml = File.ReadAllText(Path.Combine(SiteDir, "index.html"));
Assert.Contains("hreflang=\"en\" href=\"https://mediabrowser.chanpaca.net/en/\"", indexHtml);
Assert.Contains("hreflang=\"ko\" href=\"https://mediabrowser.chanpaca.net/\"", indexHtml);
// 3. 영문 페이지도 상호 참조(양방향) hreflang 및 자기 canonical 을 지녀야 한다.
Assert.Contains("<link rel=\"canonical\" href=\"https://mediabrowser.chanpaca.net/en/\">", enHtml);
Assert.Contains("hreflang=\"x-default\"", enHtml);
// 4. 번역본이 없는 하위 페이지에는 존재하지 않는 영문 hreflang 을 걸지 않는다 (중복 콘텐츠/무효 참조 방지).
foreach (var page in new[] { "vs-idm-alternative.html", "how-to-download-m3u8.html" })
{
var html = File.ReadAllText(Path.Combine(SiteDir, page));
Assert.DoesNotContain("hreflang=\"en\"", html);
}
}
[Fact]
public void Gate216_EntityGraphAndVisibleAnswerFirstFaqIntegrity()
{
var indexPath = Path.Combine(SiteDir, "index.html");
var indexHtml = File.ReadAllText(indexPath);
// 1. 엔티티 그래프: Organization 노드 + sameAs 교차 검증 링크 + publisher 연결 (AI 엔티티 인식/신뢰 확보)
Assert.Contains("\"@type\": \"Organization\"", indexHtml);
Assert.Contains("\"sameAs\"", indexHtml);
Assert.Contains("\"publisher\"", indexHtml);
// 2. 신선도 신호: dateModified 를 명시해야 한다 (ChatGPT/Perplexity 의 최신성 선호 대응)
Assert.Contains("\"dateModified\"", indexHtml);
// 3. 답변 우선(Answer-first) 가시적 FAQ: JSON-LD 뿐 아니라 실제 화면 본문에도 Q&A 가 노출되어야 인용된다.
Assert.Contains("id=\"faq\"", indexHtml);
Assert.Contains("<h3>Paca는 정말 100% 무료인가요?</h3>", indexHtml);
Assert.Contains("IDM(Internet Download Manager) 대신 사용할 수 있나요?", indexHtml);
// 4. AI 크롤러는 숨김 요소를 읽지 않으므로, 비교표에 의미론적 caption 을 부여해 표 단위 인용을 유도한다.
var vsHtml = File.ReadAllText(Path.Combine(SiteDir, "vs-idm-alternative.html"));
Assert.Contains("<caption", vsHtml);
}
[Fact]
public void Gate217_CompetitorComparisonLandingPagesIntegrity()
{
// 고의도 "[경쟁 도구] 대안" 검색을 흡수하는 경쟁자별 비교 랜딩 페이지 무결성.
var pages = new (string File, string Competitor)[]
{
("vs-yt-dlp.html", "yt-dlp"),
("vs-jdownloader.html", "JDownloader")
};
var sitemap = File.ReadAllText(Path.Combine(SiteDir, "sitemap.xml"));
var llms = File.ReadAllText(Path.Combine(SiteDir, "llms.txt"));
foreach (var (file, competitor) in pages)
{
var path = Path.Combine(SiteDir, file);
Assert.True(File.Exists(path), $"site/{file} 경쟁자 비교 랜딩 페이지가 존재해야 합니다.");
var html = File.ReadAllText(path);
Assert.Contains("lang=\"ko\"", html);
Assert.Contains($"https://mediabrowser.chanpaca.net/{file}", html);
Assert.Contains("rel=\"canonical\"", html);
Assert.Contains("hreflang=\"ko\"", html);
Assert.DoesNotContain("hreflang=\"en\"", html);
Assert.Contains(competitor, html);
Assert.Contains("<table", html);
Assert.Contains("<caption", html);
Assert.Contains("\"@type\": \"FAQPage\"", html);
Assert.Contains(file, sitemap);
Assert.Contains(file, llms);
}
}
[Fact]
public void Gate218_ProtocolLongTailHowToPagesIntegrity()
{
// 프로토콜·문제 중심 롱테일 how-to: 각 페이지는 고유 데이터(프로토콜 명세·수치 표)를 지녀야 저품질 대량 생성으로 분류되지 않는다.
var pages = new (string File, string[] Tokens)[]
{
("how-to-download-dash-mpd.html", new[] { "DASH", "MPD", "SegmentTemplate" }),
("how-to-download-hls-aes-128.html", new[] { "AES-128", "EXT-X-KEY", "HLS" })
};
var sitemap = File.ReadAllText(Path.Combine(SiteDir, "sitemap.xml"));
var llms = File.ReadAllText(Path.Combine(SiteDir, "llms.txt"));
var feed = File.ReadAllText(Path.Combine(SiteDir, "feed.xml"));
foreach (var (file, tokens) in pages)
{
var path = Path.Combine(SiteDir, file);
Assert.True(File.Exists(path), $"site/{file} 테일 how-to 페이지가 존재해야 합니다.");
var html = File.ReadAllText(path);
// 언어/정규 URL/유효 hreflang (번역본 없는 하위 페이지에 무효 영문 hreflang 금지)
Assert.Contains("lang=\"ko\"", html);
Assert.Contains($"https://mediabrowser.chanpaca.net/{file}", html);
Assert.Contains("rel=\"canonical\"", html);
Assert.Contains("hreflang=\"ko\"", html);
Assert.DoesNotContain("hreflang=\"en\"", html);
// AEO: HowTo 구조화 데이터 + 가시적 답변 + FAQ
Assert.Contains("\"@type\": \"HowTo\"", html);
Assert.Contains("\"step\"", html);
Assert.Contains("\"@type\": \"FAQPage\"", html);
Assert.Contains("id=\"faq\"", html);
// 고유 데이터: 의미론적 비교/명세 표 (caption 필수)
Assert.Contains("<table", html);
Assert.Contains("<caption", html);
// 프로토 고유 명세 토큰
foreach (var token in tokens)
{
Assert.Contains(token, html);
}
// 내부 링크(상호 연결) 및 색인 등록
Assert.Contains("how-to-download-m3u8.html", html);
Assert.Contains(file, sitemap);
Assert.Contains(file, llms);
Assert.Contains(file, feed);
}
// m3u8 가이드에서 신규 롱테일 페이지로 내부 링크가 연결되어야 한다(고아 페이지 방지).
var m3u8Html = File.ReadAllText(Path.Combine(SiteDir, "how-to-download-m3u8.html"));
foreach (var (file, _) in pages)
{
Assert.Contains(file, m3u8Html);
}
}
}