μμ½: μ νλΈ λΆμ, νμΊμ€νΈ μ μ, μΉμμ€ λ°νμ μν OpenClaw 3μ’ μ€ν¬μ μ΄λ³΄μλ 볡λΆμΌλ‘ μ€μΉ/μ€νν μ μκ² μ 리ν μ΄μ κ°μ΄λ.
flowchart LR A[νκ²½λ³μ 1ν μ€μ ] --> B[μ νλΈ λΆμ] A --> C[νμΊμ€νΈ μμ° μμ±] A --> D[μΉμμ€ λ°ν] B --> E[μ½ν μΈ μμ΄λμ΄] C --> E D --> E
1) μ΄λ€ μ€ν¬μΈκ°?
1-1) YouTube (λΆμ/κΈ°ν)
- λͺ©μ : μμ μμ½, ν΅μ¬ μΈμ¬μ΄νΈ μΆμΆ, νμ μ½ν μΈ κΈ°ν
- μ€ν λ°©μ: OpenClaw μλΈμμ΄μ νΈ νΈμΆ
- μΆμ² μν©:
- μμ λΉ λ₯Έ μμ½μ΄ νμν λ
- μ νλΈ μ£Όμ κΈ°νμμ΄ νμν λ
1-2) AI Podcast Pipeline
- λͺ©μ : νΈλ λ λ ΈνΈ κΈ°λ° λλ³Έ/μΈλ€μΌ/μλ§ μμ/λ©νλ°μ΄ν° ν¨ν€μ§ μμ±
- μ€ν λ°©μ:
ai-podcast-pipelineμ€ν¬ μ€ν¬λ¦½νΈ μ€ν - μΆμ² μν©:
- μ£Όκ° λΈλ¦¬νμ νμΊμ€νΈ/μμμΌλ‘ λ³νν λ
- λ°λ³΅ μ μ 곡μ μ μλννκ³ μΆμ λ
1-3) WebNovel Serial Pipeline
- λͺ©μ : μΉμμ€ μ΄μ β κ²μ β Quartz λ°ν νμ΄νλΌμΈ
- μ€ν λ°©μ:
webnovel-serial-pipelineμ€ν¬λ¦½νΈ μ€ν - μΆμ² μν©:
- μ°μ¬λ¬Ό νμΌλͺ /λ§ν¬/μΈλ±μ€ κ·μΉμ μλνν λ
- κ²μ ν μμ νκ² λ°ννκ³ μΆμ λ
2) 1ν μ€μΉ (볡λΆ)
set -euo pipefail
# νμ λꡬ νμΈ
command -v openclaw >/dev/null || { echo "β openclaw μμ"; exit 1; }
command -v clawhub >/dev/null || { echo "β clawhub μμ"; exit 1; }
command -v mcporter >/dev/null || { echo "β mcporter μμ"; exit 1; }
# μ€ν¬ μ€μΉ
clawhub install ai-podcast-pipeline
clawhub install webnovel-serial-pipeline
# κ³΅ν΅ κ²½λ‘ μ€μ
cat >> ~/.bashrc <<'EOF'
export WORKSPACE="${WORKSPACE:-$HOME/.openclaw/workspace}"
export VAULT_ROOT="${VAULT_ROOT:-$HOME/Documents/n8n/data/shared/syn}"
export QUARTZ_ROOT="${QUARTZ_ROOT:-$VAULT_ROOT/8.quartz}"
export PODCAST_FONTS_DIR="${PODCAST_FONTS_DIR:-$WORKSPACE/archive/fonts}"
export WEBNOVEL_QUARTZ_ROOT="${WEBNOVEL_QUARTZ_ROOT:-$QUARTZ_ROOT}"
EOF
# νμ¬ μ
Έ μ¦μ λ°μ
export WORKSPACE="${WORKSPACE:-$HOME/.openclaw/workspace}"
export VAULT_ROOT="${VAULT_ROOT:-$HOME/Documents/n8n/data/shared/syn}"
export QUARTZ_ROOT="${QUARTZ_ROOT:-$VAULT_ROOT/8.quartz}"
export PODCAST_FONTS_DIR="${PODCAST_FONTS_DIR:-$WORKSPACE/archive/fonts}"
export WEBNOVEL_QUARTZ_ROOT="${WEBNOVEL_QUARTZ_ROOT:-$QUARTZ_ROOT}"
echo "β
μ€μΉ/νκ²½μ€μ μλ£"3) λ°λ‘ μ°λ μ¬μ©λ² (볡λΆ)
3-1) μ νλΈ μμ λΆμ
openclaw agent --agent youtube-analyzer --message "μ΄ μμ λΆμν΄μ€: https://youtu.be/VIDEO_ID"3-2) μ νλΈ μμ κΈ°ν
openclaw agent --agent youtube-planner --message "μ£Όμ : AI μλν - 10λΆ μμ κΈ°νμ"3-3) νμΊμ€νΈ μμ° μμ±
cd "$WORKSPACE/skills/ai-podcast-pipeline"
python3 scripts/build_podcast_assets.py --source "$QUARTZ_ROOT/Trend/π°AI News/QuickView-2602-2μ£Ό.md"3-4) μΉμμ€ λ°ν
cd "$WORKSPACE/skills/webnovel-serial-pipeline"
python3 scripts/publish_episode.py \
--draft-file "/path/to/draft.md" \
--quartz-root "$WEBNOVEL_QUARTZ_ROOT" \
--series-dir "$WEBNOVEL_QUARTZ_ROOT/Drama/μΌκ°μ‘°" \
--series "μΌκ°μ‘°" \
--episode 2 \
--slug "λΆ-κΊΌμ§λ©΄-κ°μ§-λ§μΈμ"4) NotebookLM μ°λ(μ ν)
μ©λ
- μ νλΈ λ§ν¬λ₯Ό NotebookLMμ λ£κ³ μμ½/μ§μ/μ€λμ€ μμ± μλν
μμ
mcporter call notebooklm.notebook_create title="YT-Research"
mcporter call notebooklm.source_add notebook_id="NOTEBOOK_ID" source_type="url" url="https://youtu.be/VIDEO_ID" wait=true
mcporter call notebooklm.notebook_query notebook_id="NOTEBOOK_ID" query="ν΅μ¬ λ΄μ© 10μ€ μμ½"κ°μ΄ μ½κΈ°
- π¦ 14. SkillOps μ΄μμ ν β μ€ν¬μ μ΄μμ νΈμ νλ νλ¦
- AI μ½λ© μμ΄μ νΈ 5μ’ λΉκ΅ β μ½λ© μμ΄μ νΈ μ 체 μ ν κ°μ΄λ
- π¦ 06. CronJob β μ κΈ° μ€ν μλν κΈ°μ΄
- π¦ 26. NotebookLM μμ€μ§λ₯ μ΄μμλν β NotebookLM μ¬ν νμ©
μ°Έκ³ λ§ν¬:
- NotebookLM MCP: https://github.com/PleasePrompto/notebooklm-mcp
- Antigravity Skills: https://github.com/sickn33/antigravity-awesome-skills
5) μ΄μ κ°μ΄λλΌμΈ (λ°°ν¬μ© νμ€)
- μ λκ²½λ‘(
/home/...) μ§μ μλ΄ κΈμ§ WORKSPACE/VAULT_ROOT/QUARTZ_ROOTenv κΈ°λ°μΌλ‘λ§ λ¬Έμ μμ±- βμ€μΉ 1ν + μ€ν 볡λΆβ ννλ‘ κ°μ΄λ κ³ μ
- μ€ν¨ μ μλ¬λ©μμ§μ ν¨κ» μ²΄ν¬ ν¬μΈνΈ μ 곡:
- κ²½λ‘ env
- API ν€ env
- μμ‘΄μ±(ffmpeg/python)
6) μμ£Ό λλ μ€λ₯
notebooklm μΈμ¦ λ§λ£βnlm loginλλnlm login --manualffmpeg not foundβ ffmpeg μ€μΉ νμνμΌ κ²½λ‘ μλ¬βecho $WORKSPACE,echo $QUARTZ_ROOTλ‘ κ° νμΈ
7) 곡μ μ© ν μ€ μκ°
- YouTube: βμμ μμ½/μΈμ¬μ΄νΈ/κΈ°νμ μλννλ λΆμ μ€ν¬β
- Podcast: βνΈλ λ λ ΈνΈλ₯Ό νμΊμ€νΈ/μμ μμ°μΌλ‘ λ³ννλ μ μ μ€ν¬β
- WebNovel: βμ΄μ κ²μλΆν° Quartz λ°νκΉμ§ νμ€ννλ μ°μ¬ μ€ν¬β