Use when the user wants to check a YouTube channel against local transcripts, collect skill/automation opportunities from videos, download missing transcripts, analyze videos for new skill ideas, or keep a catalog up to date. Triggers on "defasagem do canal", "oportunidades de skill", "analisa os vídeos", "transcrições faltando", "baixar transcrição", "vídeos novos", "coletar oportunidades", "yt-oportunidades". Uses scripts/yt-oportunidades.mjs (sync-check/catalog/diff/download/dedup/mark/rec...
Installs into .claude/skills of the current project.
Are you the author of Coletar Oportunidades Youtube?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/majinmagros-coletar-oportunidades-youtube)
---
name: coletar-oportunidades-youtube
description: Use when the user wants to check a YouTube channel against local transcripts, collect skill/automation opportunities from videos, download missing transcripts, analyze videos for new skill ideas, or keep a catalog up to date. Triggers on "defasagem do canal", "oportunidades de skill", "analisa os vídeos", "transcrições faltando", "baixar transcrição", "vídeos novos", "coletar oportunidades", "yt-oportunidades". Uses scripts/yt-oportunidades.mjs (sync-check/catalog/diff/download/dedup/mark/reconcile/analyzed) with transcripts kept OUTSIDE the public repo.
metadata:
origin: ECC
---
# Skill: Coletar Oportunidades do YouTube (transcrições + análise)
Pipeline determinístico para descobrir o que um canal publicou, baixar as
transcrições faltantes (localmente, fora do repo), ler os vídeos novos e
extrair oportunidades de skills/automações — cruzando SEMPRE com o inventário
existente para não criar redundância.
## Quando usar
- "O canal publicou vídeos novos? Estamos defasados?"
- "Analisa os últimos vídeos e me diz que skills criar."
- "Baixa as transcrições que faltam do canal X."
- "Registra esse vídeo como já analisado."
## Regras de segurança (repo PÚBLICO)
- Transcrições de terceiros **NUNCA** vão para o repo público. Ficam só em
pastas locais (`YT_DIR`). Se alguém já committou transcrições, mova para a
pasta local e `git rm` (sem commit) antes de continuar.
- Scripts que o pipeline cria devem ser portáteis (sem caminhos pessoais
hardcoded; config por env vars) para não vazar o caminho da sua máquina.
- Credenciais de API nunca entram no repo.
## Sistema de capturas — modo manutenção semanal (vigente desde 2026-09-26)
Catálogo considerado completo (500+ skills). A partir de agora a coleta é
**manutenção contínua**, com o **mesmo comando/gatilho** de sempre
("capturar novas oportunidades de skills", "oportunidades de skill",
"analisa os vídeos", "vídeos novos", "coletar oportunidades"):
- **Janela desde a última solicitação (sem data fixa):** cada pedido seu
vira marca (`node scripts/yt-oportunidades.mjs solicitar` no início,
gravando `state/ultima-solicitacao.json`); a coleta cobre exatamente
desde a marca anterior até hoje (`diff-all --since-request`). Sem marca
ainda, cai para hoje−7d. Mais prático: sem buraco se demorar a pedir,
sem repetição se pedir cedo.
- **Fase 1 — listagem existente primeiro:** roda `diff-all --since <hoje-7d>`
só nos canais de `manifests/canais-vigilados.json`. Foco em
**atualização/melhoria**, não em criar por criar.
- **Fase 2 — outros canais depois:** pesquisa YouTube fora da lista, só
checagem de **novas citadas** na mesma janela de 7 dias. Se o canal novo
se repetir, propõe inclusão como `tier: radar`; senão só loga e descarta.
- **Anti-obsolescência (definição vigente):** obsoleta = skill que **pode
evoluir e a gente ficar com versão antiga**. Por isso toda captura nova
**compara** com a skill existente correspondente antes de decidir:
`manter / atualizar / fundir / arquivar`. Nunca criar duplicata ou
redundância — cruzar SEMPRE com o inventário (`skills/*/SKILL.md`).
- **Verificação contínua:** manter atualizadas, aprimorando, comparando e
verificando melhorias a cada rodada semanal.
## Pipeline
### 0. Checar sync com o GitHub (OBRIGATÓRIO antes de tudo)
Com 2+ PCs coletando, o outro PC pode já ter capturado o canal. Rode SEMPRE
antes de `catalog`/`diff`:
```
node scripts/yt-oportunidades.mjs sync-check
```
- Exit 0 (`EM DIA`) → pode coletar.
- Exit 1 (`BLOQUEADO`) → NÃO colete: o repo está atrás (`git pull --rebase`),
com worktree suja (commit/stash antes do pull) ou com commits sem push
(`git push` — o outro PC não vê esses commits). Re-rode o `sync-check` depois.
- Exit 2 (`INVERIFICÁVEL`, offline) → re-rode com rede; só use
`--allow-stale` assumindo o risco de duplicar coleta.
- `--json` imprime só o JSON (branch, SHAs, behind/ahead, última coleta
publicada, resumo do `state/yt-control.json`).
O `sync-check` mostra também a última coleta publicada e o
`state/yt-control.json` (fonte da verdade por canal, só ids/datas).
### 0b. Reconciliar marcas locais vs compartilhadas (multi-PC, antes do `mark`)
Com 2+ PCs, seu `ANALISADOS.json` local pode estar atrás do compartilhado:
```
node scripts/yt-oportunidades.mjs reconcile
```
- Exit 0 (`OK`) → pode marcar.
- Exit 1 (`DIVERGENTE`) → NÃO rode `mark`: o compartilhado tem marcas que
seu PC não tem (outro PC coletou). Faça `git pull`, confira, e só então marque.
- Proteção automática: `mark` nunca reduz `analisados` nem volta `ultimaColeta`
no `state/yt-control.json` (guarda monotônico — regressão 85→6 não acontece mais).
- Convenção de dono: campo opcional `dono` em `manifests/canais-vigilados.json`
por canal (qual PC coleta); sem dono explícito, vale quem coletou por último.
### 1. Catalogar o canal
Roda o catálogo oficial do canal (título, id, data) e salva como JSON:
```
node scripts/yt-oportunidades.mjs catalog
```
Config por env:
- `YT_CHANNEL` (padrão `https://www.youtube.com/@maestrosdaia/videos`)
- `YT_DIR` — pastas de transcrições locais, separadas por `;`. **Sempre setar
explicitamente** — o default (`~/projetos/...`) expande para a pasta do
## Radar 4 fontes + curadoria (leva YouTube rodada 8)
Além do YouTube: WhatsApp (links do grupo → links.md com resuminho), Gmail (newsletters), creators favoritos e news web dos últimos dias. Humano marca o que fica; ordene o roteiro por arco emocional (impacto → meio → picos). Ver pesquisa-social para sentimento e data-scraper-agent para coleta.