Transcriptions YouTube dans Notion : chemins sans code et Python

Sauvegarder chaque transcription YouTube dans Notion transforme un canal que vous suivez en une base de données que vous pouvez chercher, tagger et lier depuis vos notes. Il y a deux bonnes façons de construire cela — une automatisation sans code ou un script Python d'environ vingt lignes — et je vais vous donner les deux, parce que la bonne dépend entièrement de si vous exécutez déjà n8n ou Make.
Chemin 1 : sans code
Si un outil d'automatisation est déjà dans votre vie, c'est trois modules de travail. Le déclencheur est le flux RSS du canal (chaque canal en publie un : https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID), le milieu est un appel HTTP, et la fin est une étape de création "créer la page" de Notion pointée vers votre base de données.
L'étape HTTP est la même dans chaque outil :
- Method: GET
- URL:
https://youtube2text.org/api/transcribe - Query params:
url= le lien vidéo du déclencheur,maxChars=20000 - Headers:
x-api-key=yt_YOUR_KEY
La réponse revient comme {"result": {"videoId", "title", "pubDate", "content", ...}} — mappez result.title au titre de la page et result.content dans le corps de la page. J'ai écrit des explications complètes pour n8n, incluant un nœud résumé LLM avant l'étape Notion, et pour Make avec sa configuration de routeur.
Chemin 2 : vingt lignes de Python
Pas de plateforme d'automatisation ? L'API Notion plus un appel requests vous obtient le même résultat. D'abord la configuration : créez une intégration interne sur notion.so/my-integrations, copiez son secret, et partagez votre base de données cible avec l'intégration (les bases de données sont invisibles aux intégrations jusqu'à ce que vous le fassiez). La base de données a besoin d'une propriété titre appelée Name.
import requests
YT_KEY = "yt_YOUR_KEY"
NOTION_KEY = "secret_YOUR_NOTION_KEY"
DATABASE_ID = "your-database-id"
def add_video(url):
r = requests.get(
"https://youtube2text.org/api/transcribe",
params={"url": url, "maxChars": 20000},
headers={"x-api-key": YT_KEY},
).json()["result"]
text = r["content"]
chunks = [text[i:i + 2000] for i in range(0, len(text), 2000)]
blocks = [{"object": "block", "type": "paragraph",
"paragraph": {"rich_text": [{"text": {"content": c}}]}}
for c in chunks[:100]]
requests.post(
"https://api.notion.com/v1/pages",
headers={"Authorization": f"Bearer {NOTION_KEY}",
"Notion-Version": "2022-06-28",
"Content-Type": "application/json"},
json={"parent": {"database_id": DATABASE_ID},
"properties": {"Name": {"title": [{"text": {"content": r["title"]}}]}},
"children": blocks},
)
add_video("https://www.youtube.com/watch?v=dQw4w9WgXcQ")
Le paramètre url accepte n'importe quelle forme d'URL YouTube ou un identifiant nu de 11 caractères. Pour une clé sans s'inscrire, curl -s https://youtube2text.org/api/demo-key retourne une clé partagée gratuite — 5 vidéos par mois par IP, assez pour tester.
Pourquoi le script divise le texte en morceaux
Cette tranche en morceaux de 2000 caractères n'est pas une décoration — c'est la règle de Notion. L'API plafonne chaque texte riche à 2 000 caractères et chaque demande de création de page à 100 blocs, ce qui est l'honnête limitation de toute cette configuration : environ 200 000 caractères par demande, et les longues transcriptions rendent les pages lentes à ouvrir bien avant cela. C'est pourquoi j'ai défini maxChars à 20000. Si vous avez réellement besoin de transcriptions complètes multi-heures stockées, ajoutez les blocs restants avec des demandes de suivi au point de terminaison des blocs — mais pour la plupart des archives, 20k caractères plus un résumé bat un mur d'auto-sous-titres.
Ajouter le résumé
La transcription est la matière première ; le résumé est ce que vous allez réellement lire dans six mois. Faites glisser un appel LLM entre la récupération et la création de page — alimentez-la r["content"], demandez cinq puces, et prépendez le résultat comme le premier bloc de paragraphe (dans n8n c'est juste un nœud de plus). Une fois que les résumés vivent aux côtés des transcriptions, la base de données devient aussi un corpus de récupération décent — c'est le point de départ pour construire RAG sur un canal entier.
Clés et coûts
La clé démo partagée ne tiendra pas le rythme avec un canal que vous suivez réellement. Connectez-vous avec Google sur youtube2text.org/app/keys — pas de téléphone, pas de carte — pour votre propre clé : 5 vidéos par mois gratuites, $5.99 pour 50, $9.99 pour 500, $19.99 illimité. Le côté Notion est gratuit ; les transcriptions sont presque.