S21 Phone
Webzine/ Notebook/ PD 파이프 두 레인 — 공짜 공장 vs 구독 다큐
Notebook · lakme-audio

PD 파이프 두 레인 — 공짜 공장 vs 구독 다큐

기존 `produce_pd.sh`(공짜)와 신규 `produce_doc.sh`(구독 Grok)를 **두 레인으로 분리**한다.

Source · _notebook/86-pd-two-lanes-free-vs-grok_Claude.md Kind · markdown S21 Phone Editorial

date: 2026-08-14
agent: Claude
mark: _Claude
type: standard
status: active


PD 파이프 두 레인 — 공짜 공장 vs 구독 다큐

기존 produce_pd.sh(공짜)와 신규 produce_doc.sh(구독 Grok)를 두 레인으로 분리한다.
꼬리(조립·BGM·자막·TG)만 공유하고, 머리(입력·비주얼·성우)가 다르다.
근거: 83-momentum-2026-08-14_Grok.md · 72-pd-pipeline-standard-v2-lock_Grok.md


0. 한 줄

                    ┌─────────────────────────────────┐
                    │  공용 꼬리 (둘 다 같이 씀 · $0)   │
                    │  concat/xfade · BGM sidechain    │
                    │  ASS/SRT 자막 · QA · TG 720p     │
                    └──────────▲───────────▲──────────┘
                               │           │
       ┌───────────────────────┴───┐   ┌───┴───────────────────────┐
       │  레인 A · 공짜 공장         │   │  레인 B · 구독 다큐         │
       │  produce_pd.sh (지금 그대로) │   │  produce_doc.sh (신규)     │
       └───────────────────────────┘   └───────────────────────────┘

1. 두 레인 경계

레인 A · 공짜 공장 레인 B · 구독 다큐
조건 구독 없이 항상 Grok 구독 있을 때만
입력 URL 내/누나 사진 1장 + 대사
비주얼 Playwright 캡처 비전 → 합성 → I2V 10초
성우 Edge TTS (YuJin) Grok TTS + RVC 더빙
렌더 Ken Burns 그대로 concat
엔트리 produce_pd.sh (변경 금지) produce_doc.sh (신규)
Grok 의존 0 100%

공용 꼬리 (레인 불문, 전부 무료 도구):
- shot_bible 구조 (beat = 씬 단위)
- concat demuxer / xfade (조립)
- BGM sidechain ducking (_pd_assemble.py)
- ASS/SRT 자막 (_make_ass.py · _make_srt.py)
- QA 게이트 · TG 720p 전송


2. 레인 A — 공짜 공장 (produce_pd.sh, Grok 제로)

규칙:
- [x] produce_pd.shGrok 관련 코드 한 줄도 안 들어감. 지금 상태 그대로 락.
- [x] 구독이 끊겨도(취소·403·토큰 고갈) 레인 A는 계속 돈다. (헌법 “AI 의존성 제로”와 같은 원칙)
- [x] 이 레인을 “Grok 플러그 역할”이라고 부르지 않는다. (83 §4-3)

bash scripts/produce_pd.sh pd_intro

3. 레인 B — 구독 다큐 (produce_doc.sh, 신규)

입력 → 출력 (83 §3):

[안드로이드] 누나 얼굴 사진 1장
      │  (안드로이드↔proot 브릿지, 이미 있음)
      ▼
[비전]  얼굴 참조 고정 + 구도/장면 인식
[합성]  image_edit — 그 얼굴이 장면 안에 앉는다
[클립]  image_to_video duration=10 (딥페이크급 연속)
[더빙]  프롬프트(=대사)를 Grok TTS + RVC로
[조립]  FFmpeg concat — 10초 + 10초 + …

P0→P6 매핑 (기존 공장에서 재활용):

단계 레인 A (지금) 레인 B (변형)
P0 URL 파싱 → shot_bible 사진 1장 + 대사 리스트 (=shot_bible)
P0.5 콘텐츠→VO 생성 프롬프트=대사가 1차 입력 (비주얼이 대사를 따름)
P0.6 zoom/color_tag 연출 대사별 장면·카메라·감정 (I2V 프롬프트)
P1 Playwright 캡처 image_to_video 10초
P2 Edge TTS Grok TTS + RVC
P4 Ken Burns 그대로 concat
P4b/P4c · P5 · P5b · P6 자막·BGM·SRT·TG 동일 (공용 꼬리)

핵심 단위: 1 beat = 1 클립 = 1 대사 = 10초. 얼굴은 같은 참조 사진으로 고정(클립 간 연속성).


4. 저작권 경계 — 3단 + “포맷 자유 / 표현 보호”

단계 원칙
입력(사진) 퍼블릭도메인 + 내가 찍은 사진 + 내/누나 사진 — 초상권 100% 소유, 문제 없는 것만 합성
참조(구도) 80년대 일본 잡지의 구도/프레임(스토리텔링 구조)만
출력(콘텐츠) 전부 내 것 + 누나 것

법칙: 방송 형식(포맷)에 저작권이 없는 것과 동일 원리.
- 포맷(구도·프레임·전개 구조) = 자유 — 아이디어
- 표현(사진·원문·인물·스토리) = 보호 — 전부 내/누나 것으로 대체

⚠️ 정직한 주의: 80년대 잡지 자체는 저작권 보호기간(70년) 안이라 퍼블릭도메인이 아니다.
안전한 이유는 “구도(아이디어)만 가져오고 표현을 안 가져오기” 때문.
캐릭터(인물)는 저작권+상표로 별도 보호 → 전부 내/누나 것으로 갈아끼운다.
“그 잡지 페이지를 통째로 스캔해 재배포”만 하지 않으면 된다.

파이프에 박을 메타데이터:

{
  "source": "own_photo | public_domain",
  "ref_composition": "80s_jp_magazine_frame_only",
  "content_origin": "self | 누나"
}

5. 게이트 — GROK_SUB + PUBLISH

① 구독 스위치 (레인 B 진입 조건):

GROK_SUB="${GROK_SUB:-off}"          # off면 레인 B 아예 안 켜짐
[[ "$GROK_SUB" == "on" ]] || { echo "⛔ Grok 구독 없음 — 레인 B 스킵. 레인 A는 그대로."; exit 0; }

레인 A는 이 스위치를 아예 안 본다. “구독 있음/없음”이 파이프 선택.

② 공개 범위 플래그 (헌법 제15조):

PUBLISH="${PUBLISH:-private}"        # public이어야 외부 발행 허용

6. 비전 = 두 칸 공통 게이트

비전이 읽는 것 그 다음
① 잡지 구도 그리드·여백·타이포·악센트 (구도 = 아이디어) 그 구조로 웹 코드 → 프롬프트면 내 이미지로 교체
② 딥페이크 다큐 내/누나 얼굴 (참조 고정) 장면 합성 → I2V → 더빙 → 이어붙임

$30이 사는 본체 = 비전 + 생성. “웹코딩을 잘하는 설정” 이유 = 사진 업로드 + 비전 Grok 철저 활용.


7. 체크리스트 (다음 작업)

— _Claude · 표준