YouTube-transkripsjoner i Notion: Ingen-kode og Python-stier

Å lagre hver YouTube-transkripsjon til Notion gjør en kanal du følger til en database du kan søke, merke og lenke fra notatene dine. Det er to gode måter å bygge det på — en ingen-kode-automatisering eller et Python-skript på omtrent tjue linjer — og jeg gir deg begge, fordi den rette avhenger helt på om du allerede kjører n8n eller Make.
Vei 1: ingen-kode
Hvis et automatiserings-verktøy allerede er i livet ditt, er dette tre moduler av arbeid. Triggeren er kanal-RSS-feeden (hver kanal har en: https://www.youtube.com/feeds/videos.xml?channel_id=CHANNEL_ID), midten er ett HTTP-kall, og slutten er en Notion "lag side" trinn pekt på databasen.
HTTP-trinnet er det samme i hvert verktøy:
- Metode: GET
- URL:
https://youtube2text.org/api/transcribe - Query params:
url= video-lenken fra triggeren,maxChars=20000 - Headers:
x-api-key=yt_YOUR_KEY
Responsen kommer tilbake som {"result": {"videoId", "title", "pubDate", "content", ...}} — kartlegger result.title til sidetittelen og result.content inn i side-kroppen. Jeg har skrevet fulle gjennomganger for n8n, inkludert en LLM-oppsummerings-node før Notion-trinnet, og for Make med sin router-oppsett.
Vei 2: tjue linjer Python
Ingen automatiserings-platform? Notion API pluss ett requests-kall får du samme resultat. Oppsett først: lag en intern integrasjon på notion.so/my-integrations, kopier hemmeligheten, og del målbasis med integrasjonen (databaser er usynlige for integrasjoner til du gjør det). Databasen trenger en tittel-eiendom kalt Navn.
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")
url-parameteren godtar noen YouTube URL-form eller en bare 11-tegn-id. For en nøkkel uten å melde deg på, curl -s https://youtube2text.org/api/demo-key returnerer en gratis delt — 5 videoer per måned per IP, nok til å teste.
Hvorfor skriptet fragmenter teksten
Det skivingen inn i 2000-tegn stykker er ikke dekorasjon — det er Notion-regelen. APIen begrenser hvert rikt-tekst-felt til 2 000 tegn og hvert lag-side-kall til 100 blokker, som er den ærlige begrensningen for hele oppsettet: omtrent 200 000 tegn per forespørsel, og lange transkripsjoner gjør sider tregest for å åpne veldig før det. Det er derfor jeg satte maxChars til 20000. Hvis du genuint trenger fulle multi-hours transkripsjoner lagret, legg til de gjenværende blokkene med oppfølgings-forespørsler til blokk-endepunktet — men for de fleste arkiver slår 20k tegn pluss en oppsummering en vegg av auto-tekster.
Legg til oppsummeringen
Transkripsjonen er råmaterialet; oppsummeringen er hva du faktisk vil lese om seks måneder. Slipp ett LLM-kall mellom hentingen og side-opprettelsen — mater det r["content"], spør om fem bullets, og prepend resultatet som første avsnitt-blokk (i n8n er dette bare en node til). Når oppsummeringer bor ved siden av transkripsjoner, blir databasen også en anstendig hentings-korpus — det er startpunktet for å bygge RAG over en hel kanal.
Nøkkler og kostnader
Den delte demo-nøkkelen vil ikke holde tritt med en kanal du faktisk følger. Logg inn med Google på youtube2text.org/app/keys — intet telefon, intet kort — for din egen nøkkel: gratis 5 videoer per måned, $5.99 for 50, $9.99 for 500, $19.99 ubegrenset. Notion-siden er gratis; transkripsjoner er nesten.