5단계 온보딩 코스 / Interactive course →
Instagram Reels Pack user guide
Before you buy
This is downloadable code, configuration examples and operating documentation to set up on your computer. You must install tools, connect accounts and review output. Uploading the ZIP to a web chat does not start the pipeline. Setup services, AI subscriptions, API credits and hosting are not included. Setup and first-output time depend on your environment.
The instructions target macOS and a terminal. Linux and Windows/WSL require changes to shells, paths, fonts, browser connections, notifications and scheduling; unchanged operation is not guaranteed. Start with one account and one output. Local jobs do not run while the computer is off or asleep.
Do I need both Claude and Codex subscriptions?
No. Start with one supported cloud CLI that your account can access, with enough remaining usage. Multiple engines provide alternatives when a provider is unavailable. An installation assistant and the CLI invoked by the scripts are separate: signing into a desktop app does not establish that CLI authentication is ready.
| Option | Access needed | Cost and limits |
|---|---|---|
| Claude Code | Pro/Max, an eligible Team/Enterprise account, or Console API billing | Free Claude web chat does not include Claude Code. API usage is billed separately from subscriptions. |
| Codex CLI | A ChatGPT plan with CLI access, such as Plus/Pro, or an OpenAI API billing account | Do not equate Free/Go app access with CLI automation access. API-key use incurs API charges. |
| Gemini CLI | Supported Google sign-in or API authentication | Check the allowance for your account and authentication method. An API key does not imply free usage. |
| Ollama | Local models and computing resources | Requires memory, storage, power and time. Run only when the resource guard admits the job. |
Set the engine order to the CLI you use. Image, voice and video APIs may charge separately from a text CLI subscription. Total running cost includes your chosen AI access, media generation and hosting/execution, in addition to the pack. Measure a single output before scheduling; no fixed monthly running cost is promised. Check provider billing and budget controls first.
Official documentation checked on 2026-09-28; check again before paying because plans, limits and models change.
- Claude Code setup and accounts · Claude API billing
- Codex plans · Codex authentication
- Gemini CLI authentication · Gemini API billing
Version 1.1.0 sourcing
Start with a buyer-maintained catalog. Copy config/source-products.example.json to config/source-products.json, enter your product, permitted video and partner URLs, then confirm usage rights. node reels/sourcing.mjs --dry validates without writes; running without the flag imports valid, unique products. Example URLs and unconfirmed rights are rejected. Automated marketplace browsing still requires your own adapter.
The current script and hashtag stages call Ollama directly. Ollama is required for this route; a Claude or Codex subscription alone does not replace every stage. Local drafting is followed by cloud editing/review and human approval.
Requirements
| Stage | Requirements |
|---|---|
| Local development/production | macOS, Node 20+, Python 3.11+, zsh, ffmpeg/ffprobe, yt-dlp, edge-tts, the whisper command, an Ollama model and one cloud CLI |
| Sourcing | Your marketplace/affiliate login, browser tooling and a reviewed product catalog or your own automated collector |
| Publishing | An Instagram professional account, Meta app with required publishing permissions/token, GitHub account, gh CLI and Actions setup |
| Media handoff | API-accessible hosting for the reviewed video, plus queue/asset handoff to Actions |
| Optional | Gemini video-review API, ElevenLabs voice, an opening-clip generator and link-page hosting |
Without the video-review API, the code can fall back to transcript-based review. That does not amount to viewing the video or listening to its audio. The renderer calls whisper; installing only mlx_whisper requires an adapter change.
1. Prepare configuration and dependencies
Extract into a new folder and open it. These copies are for a new installation only.
npm ci
cp .env.example .env
for f in config/*.example.json; do cp "$f" "${f/.example/}"; done
export PACK_HOME="$PWD"
export OPS_HOME="$PWD"
npm run check
Version 1.1.0 includes a package-lock.json. Install with npm ci and run zsh bin/selftest.sh for offline code checks. Install the voice tools in a Python environment. Confirm ffmpeg, ffprobe, yt-dlp, edge-tts, whisper and ollama are available. Prepare the model named by LOCAL_AGENT_MODEL (default local-agent) separately.
Set .env paths to your actual folder, enter your own values and quote paths with spaces. The shared Node module loads literal KEY=value entries without evaluating shell commands. Export them for the Python worker too. Load it explicitly:
set -a
source .env
set +a
export PACK_HOME="$PWD"
export OPS_HOME="$PWD"
Keep scheduledPublishing, manualPublishing and commentDm false, and pilotIds empty in config/production-policy.json. The example enables commentDm; turn it off initially. Do not activate launchd or Actions workflows yet.
2. Validate and import one product
Enter one permitted product in config/source-products.json. Set rightsConfirmed to true only after checking rights, and set sourcing.json partnerLinkHost to the exact partner URL hostname. Run node reels/sourcing.mjs --dry, resolve rejections, then run node reels/sourcing.mjs to import. Duplicate products are skipped. No publishing occurs.
3. Produce without publishing
After preparing sourcing and models, run one worker tick at a time. Each invocation performs one action, so several ticks are needed for production/review. Local generation, downloads and external model calls may occur.
python3 automation/worker.py
Inspect .cache/operations/status.json, .cache/operations/launchd.log, data/reels-queue.json and .cache/reels/<id>/. The normal progression is queued → scripted → rendered → reviewed → prepared → published. Holds stop at held_* or review_deferred. prepared means human-approved, not yet published.
4. Review and approve
Play the reviewed file in full on headphones and a phone speaker. Check the 4:5 cover, ad disclosure, product claims and source-asset rights. Only after doing those checks, replace the example ID with the queue item's actual ID:
node reels/approve.mjs actual-reel-id --headphones --speaker --cover45
The command records approval. Changing the video, caption or cover requires renewed review/approval. Flags do not perform the human listening/viewing checks.
5. Configure publishing and DMs separately
Check account/app permissions and token access in Meta's developer settings. App status and target accounts can require additional review; buying the pack does not grant permissions. Hand off reviewed assets and the queue to Actions, and enter secrets directly in GitHub Secrets. Files on a public media host can be publicly accessible; do not upload private originals or credentials.
Read docs/PIPELINE.md, docs/HUMAN-STEPS.md and workflows/reels.yml before permitting a test-account post. Changing scheduledPublishing or pilotIds can allow real publishing. Comment DMs are a separate outbound feature: leave them off when enabling publishing alone. To stop, check Actions and local worker schedules as well as the policy flags.
Ask your installation assistant
Open the extracted folder in Claude Code or Codex and use this request. The assistant consumes your account's usage too. Enter secrets locally, not in chat.
Read docs/START-HERE.md and the README in this folder.
Check my OS, tools and the one cloud CLI I plan to use, including authentication.
Separate required tools, optional tools and additional charges.
Do not overwrite existing .env/config files or print secrets.
Keep schedulers, uploads, publishing and comment DMs disabled.
After checks, help me generate one local output only.
Identify unfinished adapters and failures explicitly.
Show output paths and the human review checklist. Stop before publishing.
Precautions
- Keep
.env, tokens, browser profiles and private source material out of public repositories and support requests. Back up existing settings; compare new examples rather than overwriting your configuration. - Review facts, numbers, sources and rights to images, video, music and voices. Check applicable platform and regional disclosure requirements for affiliate links. Automated review does not replace human review.
- Do not force local-only drafts out of hold by editing their status. Review and revise them through the intended approval flow.
DRY=1is a planning option only where the runner supports it. Generation with publishing disabled still consumes CLI/API usage and writes files. Adding an arbitrary--dryflag does not make a command safe.- To stop automation, disable registered dagu/launchd/cron/Actions schedules, then check posts already scheduled on the platform separately. Stopping local jobs does not cancel existing platform schedules.
Troubleshooting
| Symptom | Next check |
|---|---|
| Command/module missing | Virtual environment, PATH and required tool installation; run the CLI's version command |
| Login error / 401 / 403 | Account, channel, authentication method, token expiry and permissions; log in yourself |
| Quota / 429 / insufficient credits | Provider usage and billing; do not retry repeatedly or delete cooldown files |
| rc=75 / RESOURCE_DEFERRED | Another job, memory pressure or load; retry later without deleting locks |
| Output exists but is not published | Test flags, holds, review failures and publishing policy; a file is not proof of publishing |
| Browser step stopped working | Login expiry or changed platform UI; inspect that stage and sign in manually |
For support, provide the pack and ZIP version, OS, failing stage/command, expected result and last 20 error lines with secrets removed. Never send keys, cookies or your full .env. See docs/HUMAN-STEPS.md for the operating checklist and docs/PIPELINE.md for the stage reference.