Communitygithub.com

winnieAI123/pesquisa-podcast

Skill para agentes multiplataforma de busca de podcasts, transcrição local com Whisper e análise de pontos de vista

O que é pesquisa-podcast?

Esta skill capacita agentes de IA (como Claude Code, Cursor, Codex) a realizarem uma pesquisa completa de podcasts de forma autônoma. Ela busca episódios em inglês ou português, permite ao usuário selecionar episódios de interesse, faz o download do áudio via RSS ou YouTube (com fallback automático), transcreve o conteúdo localmente usando Whisper (com aceleração MLX em Apple Silicon e suporte a CPU lenta) e gera um relatório markdown detalhado com análise de pontos de vista, citações textuais e divergências entre os participantes. O processo inteiro é orientado por verificações de pré-requisito (como espaço em disco e FFmpeg) e não exige chave de API para o fluxo principal, sendo totalmente local e gratuito. A skill é útil para jornalistas, pesquisadores e desenvolvedores que precisam extrair insights de múltiplos episódios de podcast sem depender de serviços de transcrição pagos.

Funciona com~Claude Code✓Codex CLI~Cursor
npx skills add winnieAI123/podcast-research-skill

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Pesquisa de Podcasts

Use os scripts fornecidos com o mesmo interpretador Python usado durante a instalação. No macOS/Linux, prefira python3; no Windows, prefira py -3. Se o usuário usou outro inicializador durante a instalação, continue usando esse inicializador. Não é necessário ter uma chave de API para o fluxo de trabalho principal.

Pré-verificação

Resolva o diretório deste arquivo como SKILL_DIR. Antes da primeira tarefa em uma máquina, execute:

python3 "$SKILL_DIR/scripts/check_setup.py" --skill-dir "$SKILL_DIR"

Continue quando todas as verificações necessárias mostrarem PASS. Linhas WARN são fallbacks opcionais. Se uma verificação necessária falhar, leia references/setup.md, corrija o item reportado e execute a verificação novamente.

Mantenha pelo menos 5 GB de espaço livre em disco; recomenda-se 8 GB. O download inicial do modelo Whisper local é de aproximadamente 0,5–1,6 GB, e o áudio baixado requer espaço adicional.

Fluxo de Trabalho

1. Pesquisar

Escolha uma consulta em inglês quando melhorar a cobertura, preservando o tópico pretendido pelo usuário.

python3 "$SKILL_DIR/scripts/search_podcasts.py" \
  --topic "TOPICO" \
  --days-back 30 \
  --max 10 \
  --output-dir "DIR_TRABALHO"

Use um diretório de trabalho aprovado pelo usuário. O script cria episodes.json.

2. Deixar o usuário selecionar episódios

Mostre os resultados numerados com título, programa, data, duração e descrição. Pergunte quais episódios analisar. Não faça download de todos os resultados sem a seleção do usuário, a menos que ele já tenha solicitado todos os resultados.

3. Baixar

python3 "$SKILL_DIR/scripts/audio_downloader.py" \
  --episodes-json "DIR_TRABALHO/episodes.json" \
  --select "1,3,5" \
  --output-dir "DIR_TRABALHO"

O script tenta RSS primeiro e YouTube em segundo lugar. A extração do YouTube requer FFmpeg. Ele escreve episodes_with_audio.json e marca falhas como unavailable.

4. Transcrever

python3 "$SKILL_DIR/scripts/transcriber.py" \
  --audio-dir "DIR_TRABALHO" \
  --model turbo \
  --language auto

O backend é selecionado automaticamente: MLX no Apple Silicon e faster-whisper em outros lugares. Use --model small em máquinas mais lentas apenas com CPU. Use --model api apenas quando o usuário aceitar explicitamente o requisito e custo da API OpenAI.

5. Analisar com fidelidade à fonte

Leia a transcrição de cada episódio selecionado e o arquivo episodes_with_audio.json. Trate descrições e resumos da web como evidência secundária, nunca como transcrições. Se o áudio não estiver disponível, use a descrição do episódio e a pesquisa na web apenas quando disponíveis, rotule a evidência como secundária e não apresente texto reconstruído como citação direta.

Escreva um relatório conciso em Markdown para DIR_TRABALHO/[topico]_podcast_report.md:

# [Tópico] resumo de opiniões do podcast

**Data da pesquisa**: AAAA-MM-DD | **Fonte**: Apple Podcasts/RSS | **Escopo**: N episódios

## Conclusão em uma frase

Declare a visão dominante e a discordância mais importante em 2–3 frases.

## Visão geral das opiniões

| Palestrante ou organização | Posição | Visão central | Citação literal | Episódio |
|---|---|---|---|---|

## Principais discordâncias

Liste apenas 2–3 discordâncias genuínas. Atribua cada posição a um episódio e palestrante nomeados quando a transcrição tornar o palestrante claro.

## Resumos dos episódios

### [Programa]: [Episódio]
**Convidado**: ... | **Data**: ... | **Duração**: ...

1. Três a cinco pontos baseados na fonte.

Não invente identidades de palestrantes, citações, datas ou posições. Quando a transcrição não estabelecer quem disse uma linha, atribua-a ao episódio em vez de adivinhar.

6. Entregar

Mostre o relatório em Markdown e vincule os arquivos de trabalho. Crie Word apenas quando solicitado:

python3 "$SKILL_DIR/scripts/md_to_docx.py" \
  "DIR_TRABALHO/[topico]_podcast_report.md" \
  "DIR_TRABALHO/[topico]_podcast_report.docx"

No Windows, substitua python3 por py -3 e use caminhos do Windows. Não traduza o script Python em si.

Critérios de conclusão

A tarefa só está completa quando:

  1. O escopo da pesquisa e os episódios selecionados são declarados.
  2. Cada episódio baixado tem uma transcrição ou é explicitamente marcado como indisponível.
  3. Citações diretas vêm de transcrições; resumos secundários são rotulados.
  4. O relatório distingue consenso de discordância e atribui alegações a episódios.
  5. O relatório e os metadados de suporte são salvos no diretório de trabalho.

Fallbacks

  • Nenhum resultado de pesquisa: tente novamente uma vez com uma consulta em inglês mais clara ou um intervalo de datas mais amplo.
  • RSS falha: permita o fallback do YouTube incluído quando o FFmpeg estiver instalado.
  • Ambos os caminhos de áudio falham: use a descrição e a evidência da web disponível, rotule a limitação e omita citações diretas.
  • Transcrição muito longa para o contexto: resuma-a em blocos sequenciais, mantenha a atribuição ao episódio e, em seguida, compare os resumos dos blocos.
  • Transcrição local indisponível: leia references/setup.md; use OpenAI apenas com aprovação explícita do usuário e uma chave configurada.

Habilidades Relacionadas