← Skills

๐ŸŽ›๏ธ /onboard

One-time setup: connect your channel, capture your Voice DNA, add optional keys.

SetupSkill 1 of 7

Step 0 of the system โ€” run once. Personalizes every other skill to one creator so titles, hooks, blog posts, and clips come out in their voice and grounded in their channel's data. Conversational and fast: ask, write the config, confirm, hand off.

Triggers: "onboard", "set up the content system", "set up content repurpose", "get started with content repurpose", "configure my channel" โ€” or the first time someone uses another skill without a configured channel.

What it sets up

  1. Channel connected โ€” so yt-titles and content-cascade can read real upload history and the "latest video".
  2. Voice DNA written into the prompts โ€” so content is in the creator's voice, not a template voice.
  3. Optional integrations โ€” Apify, Supabase, Twitter. All skippable.

Everything is stored inside the plugin at ${CLAUDE_PLUGIN_ROOT}, so it survives across sessions.

Step 1 โ€” Connect the channel (required)

Ask for the handle or URL (e.g. @SKFAI or https://www.youtube.com/@SKFAI), normalize to a handle and a videos URL (https://www.youtube.com/@SKFAI/videos), then write it into two places:

a) The performance script โ€” replace the CHANNEL_URL constant:

python3 - "$CLAUDE_PLUGIN_ROOT" "@SKFAI" <<'PY'
import re, sys, pathlib
root, handle = sys.argv[1], sys.argv[2]
p = pathlib.Path(root, "skills/yt-titles/scripts/channel_performance.py")
url = f"https://www.youtube.com/{handle}/videos"
text = p.read_text()
text = re.sub(r'CHANNEL_URL = "[^"]*"', f'CHANNEL_URL = "{url}"', text)
p.write_text(text)
print("Channel set to", url)
PY

b) The channel ID for "latest video" auto-detect โ€” resolve the canonical ID once:

yt-dlp --flat-playlist --playlist-items 0 --print channel_id "https://www.youtube.com/@SKFAI/videos"

Then replace every YOUR_CHANNEL_ID placeholder in the skills:

grep -rl 'YOUR_CHANNEL_ID' "$CLAUDE_PLUGIN_ROOT/skills" | while read -r f; do
  perl -pi -e 's/YOUR_CHANNEL_ID/UCxxxxxxxxxxxxxxxxxxxxxx/g' "$f"
done

If yt-dlp isn't installed yet, skip ID resolution โ€” the handle URL still works for most operations.

Step 2 โ€” Capture Voice DNA (required, ~3 questions)

  1. "In one or two sentences, how would you describe your voice?"
  2. "Who's your audience and what do you teach them?"
  3. "Any signature moves?" โ€” recurring analogies, phrases you always/never use, a standard CTA.

If the creator keeps a voice doc (e.g. voice-dna.md), it can be read and folded in. The answers go at the top of all five prompt files (see prompt templates) as a block โ€” the existing craft guidance stays below it:

## Voice DNA โ€” [Creator Name]
- **Voice:** [their description]
- **Audience:** [who they teach]
- **Signature moves:** [analogies / phrases / CTA]
- **Avoid:** [anything they said they never do]

Write everything below through this voice. When the craft guidance and the voice conflict, the voice wins.

Step 3 โ€” Optional integrations

cp "$CLAUDE_PLUGIN_ROOT/.env.example" "$CLAUDE_PLUGIN_ROOT/skills/content-cascade/.env" 2>/dev/null || true

Secrets are never echoed back in full โ€” confirmation shows the last 4 characters only.

Step 4 โ€” Prerequisites check

command -v yt-dlp  >/dev/null && echo "yt-dlp โœ“"  || echo "yt-dlp โœ—  โ†’ pip install yt-dlp"
command -v node    >/dev/null && echo "node โœ“"    || echo "node โœ—    โ†’ install Node.js"
command -v python3 >/dev/null && echo "python3 โœ“" || echo "python3 โœ—"

Step 5 โ€” Show the workflow

โœ… VideoContentEngine is set up for [@handle].

  BEFORE you film
  1. /ideation <topic>     โ†’ positioned video ideas (gaps + desire + shock score)
  2. /yt-titles <idea>     โ†’ titles ranked against YOUR best performers
  3. /hooks <title>        โ†’ scroll-stopping hook (visual + spoken + text)
  4. /outlines <idea>      โ†’ a recording-ready outline

  โ†’ film & upload the video โ†’

  AFTER you publish
  5. /content-cascade <url or "latest">  โ†’ blog + Twitter thread + LinkedIn post (your voice)
  6. /short-form <url or "latest">       โ†’ 3โ€“5 Reels/Shorts/TikTok clips with hooks & captions
Re-running /onboard is safe โ€” it updates the same config in place. Nothing here touches your YouTube account or posts anything; it only reads public upload data and writes local config.