Transcriptions et recherche YouTube
La vidéo est une source primaire que la plupart des agents de recherche ne peuvent pas lire. Cette compétence transforme n'importe quelle vidéo YouTube, chaîne ou requête de recherche en texte que vous pouvez citer, avec des horodatages.
Tout passe par une API REST unique. Pas de yt-dlp, pas de navigateur headless, pas de binaires à installer.
Configuration
L'API nécessite une clé dans l'environnement. Ajoutez une ligne au .env de FrontierAgent :
echo 'TRANSCRIPT_API_KEY=sk_votre_clé_ici' >> .env
Obtenez une clé sur https://transcriptapi.com. Le niveau gratuit vous donne 100 crédits et ne demande pas de carte bancaire.
FrontierAgent charge .env au démarrage et les commandes shell en héritent, donc $TRANSCRIPT_API_KEY
se résout dans chaque commande ci-dessous.
Si la variable est vide, arrêtez-vous et demandez à l'utilisateur de l'ajouter. Ne devinez pas de clé et n'affichez pas la valeur à l'utilisateur.
Chaque requête nécessite les deux en-têtes
Authorization: Bearer $TRANSCRIPT_API_KEY et un User-Agent réel. Un User-Agent manquant ou par défaut
entraîne une réponse Cloudflare 403, code d'erreur 1010.
Obtenir une transcription
Un crédit. video_url accepte une URL YouTube complète ou un identifiant vidéo nu de 11 caractères.
curl -sS -G "https://transcriptapi.com/api/v2/youtube/transcript" \
--data-urlencode "video_url=$VIDEO" \
--data-urlencode "format=text" \
--data-urlencode "send_metadata=true" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: FrontierAgent/1.0"
Définissez format=json à la place lorsque vous avez besoin des valeurs start et duration par segment, par exemple pour
citer un horodatage. La structure JSON est
{"video_id": "...", "language": "en", "transcript": [{"text": "...", "start": 18.0, "duration": 3.5}]}.
Rechercher des vidéos ou des chaînes
Un crédit. type est video ou channel, limit va de 1 à 50.
curl -sS -G "https://transcriptapi.com/api/v2/youtube/search" \
--data-urlencode "q=$QUERY" \
--data-urlencode "type=video" \
--data-urlencode "limit=20" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: FrontierAgent/1.0"
Résoudre un identifiant de chaîne
Gratuit, aucun crédit. Accepte un @handle, une URL de chaîne ou un identifiant UC....
curl -sS -G "https://transcriptapi.com/api/v2/youtube/channel/resolve" \
--data-urlencode "input=@TED" \
-H "Authorization: Bearer $TRANSCRIPT_API_KEY" \
-H "User-Agent: FrontierAgent/1.0"
Les autres points de terminaison de chaîne acceptent directement la même valeur channel, vous n'avez donc rarement besoin de
résoudre d'abord.
Script utilitaire
scripts/transcript.sh encapsule l'appel de transcription et échoue de manière visible lorsque la clé est manquante.
bash plugins/skills/youtube-transcripts/scripts/transcript.sh "https://www.youtube.com/watch?v=nm1TxQj9IsQ"
En cas d'échec d'un appel
| Statut | Signification | Action à entreprendre |
|---|---|---|
| 401 | La clé est incorrecte ou absente | Demandez à l'utilisateur de vérifier TRANSCRIPT_API_KEY dans .env |
| 403 | Cloudflare a bloqué la requête | Vous avez omis l'en-tête User-Agent. Ajoutez-le et réessayez |
| 404 | La vidéo n'a pas de sous-titres | Dites-le clairement. N'inventez pas de transcription |
| 422 | L'identifiant ou l'URL de la vidéo est mal formé | Relisez l'identifiant depuis le lien de l'utilisateur |
| 429 | Crédits épuisés ou limite de débit atteinte | Signalez-le. Ne réessayez pas en boucle |
Une longue transcription peut dépasser le budget de sortie de l'outil. Demandez format=text, écrivez le corps dans un
fichier avec > outputs/transcript.txt, puis lisez les parties dont vous avez besoin.
Travailler avec les résultats
Citez la transcription plutôt que de la paraphraser lorsque le libellé exact porte l'affirmation. Les sous-titres automatiques comportent des erreurs de reconnaissance, donc traitez un terme technique étrange comme suspect et vérifiez-le par rapport au titre ou à la description de la vidéo avant de construire un argument sur cette base.