자세한 설정

처음이라면 쉬운 시작 안내만 따라 하세요.

> v1.2.0: 먼저 `START-PLATFORM.html`에서 macOS 또는 Windows(WSL2) 안내를 확인하세요.

# 인스타그램 릴스 패키지 — 제휴 상품 릴스, 실제로 돌리는 방식 그대로

## 처음 시작: 5단계 온보딩

압축을 푼 뒤 **START-HERE.html**을 열어 환경 점검 → 설정 준비 → 오프라인 연습 → 실제 결과 검토 → 운영 체크리스트 순서로 진행하세요. `python3 onboarding.py status`로 터미널 진행 기록도 확인할 수 있습니다. 계정·구독·추가 비용은 [사용 가이드](docs/START-HERE.ko.md)에 정리했습니다.

```bash
python3 onboarding.py check
python3 onboarding.py init
python3 onboarding.py sample
python3 onboarding.py check --production
```

연습 결과는 모델이 생성한 운영 결과가 아닙니다. 실제 게시·발송·스케줄러는 자동으로 켜지지 않습니다.

한 운영자가 매일 돌리는 제휴 상품 릴스 파이프라인 전체를 계정 이름만 지우고 그대로 묶었습니다. 마켓 소싱 → 로컬 모델 초안 + 클라우드 최종 편집 → ffmpeg 렌더(TTS·자막·광고 표기·BGM) → 레퍼런스 계정 2곳과 비교하는 2단계 AI 검수 → **해시에 묶인 사람 승인** → GitHub Actions가 정해진 시각에 Graph API로 게시 → 댓글에 DM 답장 → 모델 없이 만드는 리포트 → 게시된 릴스를 링크 페이지·블로그·쇼츠로 넘기는 팬아웃까지.

"인스타에 올려주는 스크립트"가 아닙니다. 나쁜 릴스를 멈추는 게이트와 사람이 해야 하는 단계까지 포함한 체인입니다.

```
소싱 → 대본 → 컷 선택 → 렌더 → 검수 → [사람 승인] → 게시 → DM → 인사이트 → 리포트
 15분마다 워커 1틱(한 번에 한 동작, 리소스 가드 아래)      GitHub Actions, KST 슬롯
```

## 5분 설치
```bash
export PACK_HOME=$HOME/instagram-reels-pack OPS_HOME=$HOME/ops
cp -R . $PACK_HOME && cd $PACK_HOME && npm ci
mkdir -p $OPS_HOME/bin $OPS_HOME/data/engine-state && cp bin/engine-lib.sh bin/resource-guard.py bin/local-agent.py $OPS_HOME/bin/
for f in config/*.example.json; do cp $f ${f/.example/}; done      # 값 채우기
cp .env.example .env                                                # 비밀값은 직접
python3 automation/worker.py                                        # 첫 틱 → .cache/operations/status.json
# 스케줄러: jobs/com.example.reels-sourcing.plist → ~/Library/LaunchAgents ; workflows/*.yml → .github/workflows
```
Claude Code라면 `skills/*`를 `.claude/skills/`에 복사하고 "릴스 파이프라인 세팅해줘"라고 말하면 됩니다.

## 언제 무엇이 도는가 (KST)
| 시각 | 동작 | 어디서 |
|---|---|---|
| 15분마다 | 한 동작만: 소싱(6시간 간격, 큐 9개 미만) → 대본 → 컷 → 렌더 → 검수 | 맥 launchd, 리소스 가드 `--wait 0` |
| 5분마다 | 디스패치 워치독(밀린 Actions 재실행, 슬롯을 20–120분 놓치면 게시 1회 디스패치) | 맥 launchd |
| 08:00 · 12:30 · 20:00 | 정책이 허용하면 `prepared` 릴스 1개 게시(슬롯 게이트, 해시 확인, 하루 3개) | GitHub Actions |
| 5분마다 | 댓글 → 상품 링크 DM 1회 | GitHub Actions |
| 매시 :15 · 21:30 · 월 09:00 | 인사이트 → 훅 통계 · 일간 리포트 · 주간 리포트 | GitHub Actions |
| 월 03:00 | 60일 토큰 갱신 | GitHub Actions |
| 10분마다 · 2시간마다 | 링크 페이지·블로그 패키지·쇼츠 스펙 팬아웃 · 링크 페이지 동기화 | dagu |

## 사람이 할 일 (전체는 docs/HUMAN-STEPS.md)
계정·앱·토큰 · 브라우저 프로필로 마켓 로그인 · 레퍼런스 계정 2곳 · 검수 통과한 릴스를 헤드폰으로 끝까지, 폰 스피커로 한 번 더, 4:5 커버 확인 후 `node reels/approve.mjs <id> --headphones --speaker --cover45` · `scheduledPublishing`은 직접 켜기.

## 하지 않는 것
- 사람이 승인하지 않은 것, 로컬 모델만 쓴 대본은 절대 게시하지 않습니다.
- 승인된 릴스를 다시 렌더하지 않고, 제공자 쿨다운을 우회하지 않으며, 하루 클라우드 호출 12회를 넘기지 않습니다.
- 로그인·캡차 대행, 없는 상품 수치 지어내기, 리포트의 빈 값 0 채우기를 하지 않습니다.

## 필요한 것
Node 20+, Python 3.11+, ffmpeg/ffprobe, yt-dlp, whisper(또는 mlx_whisper), edge-tts, `gh`. 선택: Ollama(`local-agent`, `qwen3-vl:8b`), ElevenLabs, Gemini API(레퍼런스 게이트), 로그인 프로필용 브라우저 자동화 CLI, 훅 클립 생성기. 함께 쓰는 팩: *Automation Kit*(훅·MCP 서버·스케줄러), *Prompt Dex Skills*(콘텐츠 프롬프트). 이 팩은 그 둘을 중복하지 않습니다.

## 파일
`automation/` 워커·워치독 · `reels/` 모듈 13개 · `bin/` 엔진 라우터·리소스 가드·로컬 에이전트·팬아웃 · `config/` 예시 6개 · `jobs/` launchd·dagu · `workflows/` Actions 4개 · `prompts/` 6개 · `skills/` 5개 · `docs/PIPELINE.md` `docs/HUMAN-STEPS.md`. 라이선스: 1인 사용, LICENSE.md.