Conteúdo
Transforme um vídeo do YouTube em artigo publicável
Puxe a transcrição com timestamps, organize em blocos legíveis, faça o esboço e o rascunho com um modelo sob seu controle e deixe o resultado em um LiveDoc para revisão.
Copiar o prompt
Substitua os campos entre colchetes e cole no Claude Code, Codex ou qualquer IA com acesso ao terminal. Ela instala a skill da Felo, pergunta antes de gastar créditos e executa o fluxo.
Transforme este vídeo em um artigo publicável: [URL do YouTube ou ID do vídeo]. Público: [leitores]. Tom: [estilo de publicação]. Tamanho alvo: [800–1200 palavras] em [idioma]. Tratamento de fontes: mantenha título, canal e URL do vídeo. Cite no máximo trechos curtos, com timestamps. Produza: 1. Um título de trabalho. 2. Uma linha fina. 3. Seções com parágrafos curtos. 4. Duas ou três citações com timestamp. 5. O que o vídeo não cobriu. 6. Uma lista de fontes com o vídeo e as páginas linkadas. Regras: - Não reproduza a transcrição completa. Resuma e cite brevemente. - Toda afirmação factual do vídeo precisa de timestamp; afirmações de páginas linkadas precisam de URL. - Marque como “Não verificado” tudo o que não pôde ser checado. - Pergunte antes de gastar créditos em transcrições ou extração de páginas. - Não publique, agende nem envie nada. - Grave o resultado em ./video-article.md e resuma no chat.
A cópia também inclui os passos de instalação e as regras de segurança.
O que você recebe
Saída de exemplo de uma execução. Não é geração ao vivo.
O que uma palestra de 40 minutos sobre agentes realmente disse
Linha fina
A demo foi impressionante; a parte útil foi o tratamento de falhas.
A afirmação que todos citaram
> “O agente não ficou mais inteligente. Só paramos de deixá-lo tentar de novo sem orçamento.” — [12:40]
O que o vídeo não cobriu
Custo por tarefa bem-sucedida e o que acontece quando a fonte recuperada está errada.
Fontes
- Vídeo: https://www.youtube.com/watch?v=...
- Benchmark vinculado: https://example.com/benchmark
As chamadas exatas
Para desenvolvedores: o mesmo fluxo em código, na ordem de execução.
Mostrar as chamadas reais da API
Puxe a transcrição com timestamps
Use o YouTube Subtitling para obter as legendas no idioma-alvo, guardando o início e a duração de cada linha.
article.ts const BASE = "https://openapi.felo.ai"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; async function felo<T>(path: string, body?: unknown): Promise<T> { const res = await fetch(`${BASE}${path}`, { method: body ? "POST" : "GET", headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<T>; } type Transcript = { data: { title: string; contents: { text: string; start: number; duration: number }[]; }; }; export async function fetchTranscript(videoId: string, language = "en") { const query = new URLSearchParams({ video_code: videoId, language, with_time: "true", }); const { data } = await felo<Transcript>(`/v2/youtube/subtitling?${query}`); if (data.contents.length === 0) throw new Error("This video has no subtitles"); return data; }Saída de exemplo
{ "title": "How we rebuilt onboarding", "contents": [ { "text": "Welcome back to the channel.", "start": 0.32, "duration": 4.1 } ] }Organize em blocos legíveis
Divida a transcrição por tema, remova vícios de fala e mantenha os timestamps.
article.ts const toClock = (seconds: number) => { const minutes = Math.floor(seconds / 60); const rest = Math.floor(seconds % 60); return `${String(minutes).padStart(2, "0")}:${String(rest).padStart(2, "0")}`; }; export function toBlocks( contents: Transcript["data"]["contents"], window = 60, ) { const grouped = new Map<number, string[]>(); for (const line of contents) { const bucket = Math.floor(line.start / window) * window; grouped.set(bucket, [...(grouped.get(bucket) ?? []), line.text.trim()]); } return [...grouped] .map(([start, lines]) => `[${toClock(start)}] ${lines.join(" ")}`) .join("\n\n"); }Saída de exemplo
[00:00] Welcome back to the channel. Today we are talking about onboarding. [01:00] The first thing we changed was the welcome screen.
Baixe as fontes citadas
Use o Web Fetch para ler as páginas citadas no vídeo e acrescentar links e fatos.
article.ts type ExtractData = { data: { content: string } }; export async function fetchSources(urls: string[]) { return Promise.all( urls.slice(0, 5).map(async (url) => { const page = await felo<ExtractData>("/v2/web/extract", { url, output_format: "markdown", with_readability: true, }); return { url, content: page.data.content }; }), ); }Saída de exemplo
[ { "url": "https://example.com/reference", "content": "# Reference\n\nExtracted page text…" } ]Faça o esboço e depois o rascunho
Peça primeiro um esboço ao Model API e escreva o artigo seguindo o esboço, com citações curtas e timestamps.
article.ts const MODEL_API = "https://openapi.felo.ai/api/v1"; type Completion = { choices: { message: { content: string } }[]; usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number }; }; async function complete(model: string, prompt: string): Promise<Completion> { const res = await fetch(`${MODEL_API}/chat/completions`, { method: "POST", headers, body: JSON.stringify({ model, messages: [{ role: "user", content: prompt }] }), }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<Completion>; } export async function draftArticle(title: string, transcript: string) { const outline = await complete( "claude-haiku-5-5", "Outline a short article from this transcript. Return only headings.\n\n" + transcript, ); const article = await complete( "claude-sonnet-5-5", `Write the article "${title}" from the transcript. Follow the outline and keep [mm:ss] on direct quotes.\n\nOutline:\n${outline.choices[0].message.content}\n\nTranscript:\n${transcript}`, ); return { outline: outline.choices[0].message.content, article: article.choices[0].message.content, usage: article.usage, }; }Saída de exemplo
{ "outline": "1. The problem\n2. What changed\n3. What we learned", "article": "## The problem\n\nWhen we…", "usage": { "prompt_tokens": 4120, "completion_tokens": 640, "total_tokens": 4760 } }Deixe no LiveDoc para revisão
Salve o rascunho e as citações no LiveDoc e entregue ao editor para ajustes e aprovação.
article.ts type LiveDocData = { data: { short_id: string } }; type ResourceData = { data: { id: string } }; export async function saveDraft( title: string, result: { outline: string; article: string }, ) { const doc = await felo<LiveDocData>("/v2/livedocs", { name: `Article draft: ${title}`, description: "Draft generated from a video transcript", }); await felo<ResourceData>(`/v2/livedocs/${doc.data.short_id}/resources/doc`, { title: "Draft", content: result.article, }); await felo<ResourceData>(`/v2/livedocs/${doc.data.short_id}/resources/doc`, { title: "Outline", content: result.outline, }); return doc.data.short_id; }Saída de exemplo
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
O que está incluído
- Transcrição do YouTube com timestamps
- Páginas citadas pelo vídeo em Markdown
- Esboço e rascunho do seu Model API
- LiveDoc com o rascunho para revisão do editor
O que não faz
- Não reproduz a transcrição inteira; apenas citações curtas e reescrita
- O vídeo precisa ter legendas
- Verifique direitos autorais e limite de citação antes de publicar
- O modelo faz esboço e rascunho; a decisão final é do editor
- Não publica nem traduz para outros idiomas automaticamente
Perguntas
O vídeo precisa de legendas?
Sim. O fluxo começa pelas legendas; se não houver, ele para em vez de adivinhar o que foi dito.
Posso transformar um podcast em artigo?
Este fluxo é para YouTube. Para podcast, prepare primeiro uma transcrição e use as mesmas regras de escrita.
Posso escrever em outro idioma?
Sim. Defina o idioma-alvo; as citações ficam no original com tradução quando necessário.
Quem escreve o artigo?
O agent de IA em que você colou o prompt escreve o rascunho; a Felo fornece transcrição, páginas e ambiente de revisão.
Posso republicar a transcrição inteira?
Não. O fluxo cria um artigo novo com citações curtas e não copia a transcrição inteira.
Quanto custa uma execução?
Transcrição e extração de páginas são cobradas por uso; as tarifas atuais estão na página de preços, e o prompt pede aprovação antes de gastar.
Fluxos relacionados
Publique um resumo diário de IA que a equipe realmente lê
Obtenha um resumo com fontes, adicione o que os praticantes publicam no X, pegue uma transcrição de vídeo, monte a edição em Markdown e arquive no LiveDoc.
Abrir o fluxo de trabalhoEscritórioTransforme uma página de pesquisa em apresentação
Extraia a página, salve como contexto do LiveDoc, deixe o PPT Task API montar o deck e consulte até a tarefa retornar o link pronto.
Abrir o fluxo de trabalhoSuporteResponda perguntas de suporte com a sua própria documentação
Crie um LiveDoc, carregue a central de ajuda e o runbook interno, recupere os trechos que respondem ao ticket e deixe o modelo responder apenas com essas evidências.
Abrir o fluxo de trabalhoFaça do seu jeito
A mesma receita, adaptada ao seu processo real.
Só citações com timestamps
Não escreva o artigo; entregue uma lista de citações verificáveis para reaproveitamento.
Primeiro a versão de newsletter
Transforme o artigo em uma versão mais curta e conversacional para newsletter.
Processe um canal em lote
Repita os mesmos passos para cada vídeo e salve LiveDocs separados.
Continue
As páginas de referência por trás desta receita e para onde ir depois.