From one-off prompt to system (your Hook Machine)
A standalone prompt solves one video. A skill (reusable system) handles the next 100: you provide the niche, and it returns hooks + layers + image prompts, always in the same format.
🆕 New here? What is a “skill”
In Claude Code (and similar tools), a skill is a folder with a SKILL.md file that describes WHEN to use it and WHAT to do. You invoke it with a command, and it runs the entire process—as if you had an on-call scriptwriter with their method built in.
🧠 What your Hook Machine delivers
null
- •Receives: a niche/topic and the language.
- •Generates: 20-33 hooks using the formula, grouped by pattern.
- •Complete: all 3 layers of each hook.
- •Produces: the image prompt for each Visual Hook.
- •Filter: score with the rubric and cut the weak ones.
| Standalone prompt | Skill / system |
|---|---|
| Solve 1 video | Solve the next 100 |
| You paste everything back in every time | One command triggers the method |
| Results vary each time | Always use a consistent pattern |
Anatomy of a SKILL.md
A skill is simple: a header that says WHEN to activate and a body that says HOW to act. Let’s look at the parts before you paste yours in.
🧠 The parts of a SKILL.md
null
- •name: the skill's short name (e.g.,
hook-machine). - •description: when to use it — the triggers ("create hooks," "generate viral hooks").
- •Body (instructions): the step-by-step process the AI follows — role, formula, output format, rubric.
💡 Rule for a good description
A description is what makes a skill "light up" at the right time. List real triggers you would say: "generate hooks for…", "viral hooks about…", "Reels ideas about…".
Quick check (optional, doesn't block progress)
What makes a skill "light up" at just the right moment?
SKILL.md ready to paste
This is your Hook Machine. Create the folder hook-machine/ and inside it, the file SKILL.md with the content below. It works in Claude Code; the body also works as a "system prompt" in any chat.
--- name: hook-machine description: Use quando o usuário pedir para criar hooks/ganchos virais para vídeo curto (TikTok, Reels, Shorts) — "gera hooks de...", "ganchos virais sobre...", "ideias de abertura para Reels de...". Gera hooks na fórmula Context Lean → Scroll Stop → Contrarian Snapback, com as 3 camadas e prompt de imagem. --- # Hook Machine Você é roteirista de vídeo curto especialista em hooks virais. ## Quando o usuário der um NICHO/ASSUNTO e (opcional) idioma: 1. Gere 20 hooks (ou a quantidade pedida) na fórmula: - Context Lean: começa no pico, zero contexto inútil. - Scroll Stop: a cena/afirmação que trava o dedo nos 3s. - Contrarian Snapback: contraria uma crença comum do nicho. 2. Distribua entre os 5 padrões: medo, contrarian, número, prova pessoal, curiosidade. 3. Para cada hook entregue as 3 CAMADAS: - Frase falada (máx 12 palavras) - Visual Hook (cena concreta, legível no mudo) - Text Hook (2-3 palavras) 4. Pontue cada hook com a rubrica (0/1): específico, lacuna, contrarian, visual, curto. Mostre só os com nota >= 4. 5. Para os aprovados, gere o PROMPT DE IMAGEM (inglês, cinematográfico, terminando em "no text, no watermark"). ## Regras - Específico vence genérico (números, valores, prazos). - PROIBIDO clichê, abertura genérica, promessa vaga. - Saída final em tabela: # | Frase falada | Visual Hook | Text Hook | Padrão | Nota | Prompt de imagem. ## Idioma Responda no idioma pedido (default: português do Brasil).
Batch pipeline: from niche to finished package
With the skill in place, you can run it in batches—multiple niches, multiple hooks, images included. Here's the reproducible step-by-step.
🧠 The pipeline, step by step
null
- •1. Generate: run the Hook Machine for your niche → table of approved hooks.
- •2. Images: take the "image prompt" column and generate each one in flux/Midjourney.
- •3. Assemble: combine the spoken line + visual + text + image into a card (like the ones in Track 2).
- •4. Schedule: distribute the hooks across videos throughout the week.
// salve como gen.js — lê prompts.json [{n, prompt}] e salva PNGs
const http=require('http'),fs=require('fs');
const items=JSON.parse(fs.readFileSync('prompts.json','utf8'));
(async()=>{ for(const it of items){
const payload=JSON.stringify({model:'flux2-klein',prompt:it.prompt,width:1024,height:576,steps:4,guidance_scale:1.0,seed:it.n});
const png=await new Promise((ok,no)=>{const r=http.request({host:'localhost',port:8000,path:'/generate',method:'POST',headers:{'Content-Type':'application/json','Content-Length':Buffer.byteLength(payload)}},res=>{let b='';res.on('data',c=>b+=c);res.on('end',()=>ok(Buffer.from(JSON.parse(b).image,'base64')))});r.on('error',no);r.write(payload);r.end();});
fs.writeFileSync('hook-'+it.n+'.png',png); console.log('ok',it.n);
}})();
▸ Going deeper: this course was made this way
The 165 images in Track 2 came from a script almost identical to this one: it read a JSON file with the 165 Visual Hooks, generated each PNG with inemaimg (flux2-klein, 4 steps), and compressed them to WebP (~23 KB each). The same pipeline generates your package.
Hook bank: reuse, tag, version
A good hook isn't disposable. Save the approved ones in a database — a spreadsheet or JSON — so you can reuse them, remix them, and see what keeps succeeding.
🧠 Minimum database structure
null
- •id, niche, pattern — to filter later.
- •3 layers — line, visual, text.
- •status — idea / recorded / published.
- •performance — views/retention after publishing.
{
"id": "fin-001",
"nicho": "financas",
"padrao": "numero",
"frase_falada": "Transformei US$500 em US$15.000 sem tocar na bolsa.",
"visual_hook": "nota de 500 se multiplicando em maços de dinheiro",
"text_hook": "No Stocks",
"status": "ideia",
"views": null
}
💡 Version with Git
Store banco.json in a repository (you’ll learn how in INEMA’s “From Zero to Deploy” course). Every published video becomes a commit — a history of what worked.
Publish and measure: the cycle that helps you improve
The hook only proves its value in the field. Close the loop: test, measure, double down on what works. That’s how you go from “copying hooks” to “having a method.”
🧠 The improvement cycle
null
- •Test: record 2-3 versions of the same content with different hooks.
- •Measure: check retention at 3s and the % who made it past 50% — not just views.
- •Learn: which PATTERN held attention the longest? (fear? a number?)
- •Double: repeat the winning pattern in your niche.
| Metric many people look at | Metric that matters for the hook |
|---|---|
| Total views | Retention in the first 3 seconds |
| Likes | % who watched more than 50% of the video |
| Followers | Scroll-stop rate (who stopped scrolling) |
⚠️ Don’t trust 1 video
One hook may go viral by luck while another dies because of timing. Look at the average across 5-10 videos to spot a pattern before deciding what works for you.
💡 You finished the course 🎉
You have: the theory (Trilha 1), the 165 hooks with images (Trilha 2), and the system to generate your own (Trilha 3). Now it’s time to publish, measure, and iterate. Mark the modules as read and track your journey in the course dashboard.