Un usuario de r/Slack creó un bot que publica resúmenes de YouTube y la gente realmente los lee. Este tutorial recorre todo el proceso: URL de YouTube → transcripción → resumen de LLM → publicación de Slack.
Requisitos previos
- Clave API de Scavio
- Aplicación Slack con chat:escritura + canales:permisos de historial
- Clave OpenAI o Anthropic API para resumen
Guia paso a paso
Paso 1: Obtenga la transcripción de YouTube
Utilice el punto final de transcripción de YouTube de Scavio para extraer texto.
import requests, os
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
def get_transcript(video_url):
r = requests.post('https://api.scavio.dev/api/v1/search',
headers=H,
json={'platform': 'youtube', 'query': video_url, 'type': 'transcript'})
return r.json()Paso 2: Resumir con un LLM
Envíe la transcripción a un LLM con un mensaje de resumen.
from anthropic import Anthropic
client = Anthropic()
def summarize(transcript_text):
msg = client.messages.create(
model='claude-sonnet-4-6',
max_tokens=300,
messages=[{'role': 'user', 'content': f'Summarize this video transcript in 3-4 bullet points. Be specific about key claims and numbers.\n\n{transcript_text}'}])
return msg.content[0].textPaso 3: Publicar en Slack
Utilice la API web de Slack para publicar el resumen.
from slack_sdk import WebClient
slack = WebClient(token=os.environ['SLACK_BOT_TOKEN'])
def post_summary(channel, video_title, summary, url):
slack.chat_postMessage(
channel=channel,
text=f'*{video_title}*\n{summary}\n<{url}|Watch video>')Paso 4: Manejar errores de subtítulos automáticos
Agregue un descargo de responsabilidad cuando las transcripciones se generen automáticamente (pueden alterar nombres y números).
# Add after summarization:
disclaimer = '(Summary from auto-generated captions - names/numbers may be approximate)'Paso 5: Conecte el gatillo
Escuche las URL de YouTube publicadas en los canales de Slack y resuma automáticamente.
# Use Slack Events API: subscribe to message events
# Filter for youtube.com or youtu.be URLs
# Rate limit: one summary per URL per channelEjemplo en Python
import requests, os
from anthropic import Anthropic
from slack_sdk import WebClient
H = {'x-api-key': os.environ['SCAVIO_API_KEY']}
client = Anthropic()
slack = WebClient(token=os.environ['SLACK_BOT_TOKEN'])
def youtube_to_slack(video_url, channel):
transcript = requests.post('https://api.scavio.dev/api/v1/search',
headers=H, json={'platform': 'youtube', 'query': video_url, 'type': 'transcript'}).json()
summary = client.messages.create(model='claude-sonnet-4-6', max_tokens=300,
messages=[{'role': 'user', 'content': f'Summarize in 3-4 bullets:\n{transcript}'}]).content[0].text
slack.chat_postMessage(channel=channel, text=f'{summary}\n<{video_url}|Watch>')Ejemplo en JavaScript
const resp = await fetch('https://api.scavio.dev/api/v1/search', {
method: 'POST', headers: {'x-api-key': process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'},
body: JSON.stringify({platform: 'youtube', query: videoUrl, type: 'transcript'})
});
const transcript = await resp.json();Salida esperada
Slack bot that auto-posts 3-4 bullet summaries of YouTube videos shared in channels. Includes auto-caption disclaimer.