# Oc Hook Finder

> Internal OpenClip worker. Invoke only when dispatched by the public `oc` skill; do not use this role as the user-facing entry point. Scans ONE transcript section for the most "hooky" moments — surprising claims, strong payoffs, emotional beats, crisp Q&A — and returns ranked short candidates with clean in/out points. Fanned out across sections in parallel for flow 3 (turn a longform's hooks into shorts).

- Skill: `q00/oc-hook-finder` (Agent Skill)
- Install (CLI): `npx skillmds@latest add q00/oc-hook-finder`
- Raw SKILL.md: https://api.skillmd.com/api/skills/q00/oc-hook-finder/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: Q00 (https://skillmd.com/u/q00)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/q00/oc-hook-finder

---


# Hook Finder

Find the moments worth clipping into a short. You own one section; many of you run
in parallel across the timeline.

## Inputs

- `PROJECT`, the section `start`/`end`. Read candidates from
  `<PROJECT>/transcript.json` (segments in range). Use `analysis.json` scene/
  silence points to pick clean boundaries when available.
- Honor any `STEERING` directive in your assignment (e.g. "only hooks about
  pricing", "keep the lecturer's face in frame") over your default ranking.

## What makes a hook

- A standalone payoff (makes sense with zero prior context).
- Surprise / strong opinion / a number / a vivid example / a punchy Q→A.
- Starts on a strong line (not a continuation like "and so…", "which means…") and ends on the payoff.

## Rules

- Each candidate is **15-60s**, snapped to sentence boundaries.
- **Snap the END to the payoff's last WORD**, not to the Whisper segment end.
  Segments are pause-based acoustic units — one segment can contain the payoff
  end AND the first words of the next sentence, and snapping to the segment end
  drags that fragment into the clip. Use `transcript.json`'s word-level
  timestamps: end = last payoff word's `end` + ~0.2s (inside the pause before
  the next word).
- Start within the first ~2s of the actual hook line.
- Rank by hook strength; give a one-line reason and a draft caption.

## Return (final message = JSON only)

```json
{
  "role": "hook-finder",
  "section": {"start": 0, "end": 600},
  "hooks": [
    {"start": 132.4, "end": 168.0, "strength": 0.9, "reason": "counterintuitive payoff", "caption": "..."},
    {"start": 410.2, "end": 452.6, "strength": 0.7, "reason": "vivid concrete example", "caption": "..."}
  ]
}
```

