N8N: Auto-Import YouTube Transcripts to Notion Database
What if every YouTube video you saved automatically appeared in your Notion workspace with a full transcript, summary, and metadata—without lifting a finger? This N8N workflow makes it reality.
The Content Organization Problem Every Creator Faces
You bookmark a YouTube video. Then another. And another. Within weeks, you have hundreds of "saved for later" videos scattered across YouTube playlists, browser bookmarks, and half-forgotten tabs. Sound familiar?
The real problem isn't saving videos—it's accessing the knowledge inside them. That 45-minute tutorial on advanced Python techniques? Buried somewhere in your "Watch Later" graveyard. The brilliant marketing breakdown from that conference talk? Good luck finding the exact quote you need.
Content creators, researchers, and knowledge workers face this daily:
- No searchability — You can't search inside video content
- Time sink — Rewatching to find a specific section wastes hours
- Context lost — Why did you save this video again?
- Platform lock-in — Your notes live separate from the source
The Automated Solution: N8N + Scriptube + Notion
This workflow transforms how you consume and organize video content. Here's what happens automatically:
- Trigger — Save a YouTube URL (via form, Slack command, or webhook)
- Extract — Scriptube API pulls the complete transcript in seconds
- Process — GPT-4 generates a summary, key points, and tags
- Store — Everything lands in your Notion database, fully searchable
The result? A searchable video knowledge base that grows automatically. Find any quote, concept, or tutorial in seconds instead of rewatching entire videos.
Complete N8N Workflow Setup
Let's build this step by step. You'll need:
- N8N instance (cloud or self-hosted)
- Scriptube API key (free tier works for testing)
- Notion integration token
- OpenAI API key (optional, for AI summaries)
Step 1: Create the Webhook Trigger
Start with a Webhook node to receive YouTube URLs. This lets you trigger the workflow from anywhere—Slack, a Chrome extension, or a simple form.
{
"nodes": [
{
"name": "Webhook",
"type": "n8n-nodes-base.webhook",
"parameters": {
"path": "youtube-to-notion",
"httpMethod": "POST"
}
}
]
}
Step 2: Fetch Transcript via Scriptube API
Add an HTTP Request node to call Scriptube's transcript endpoint:
{
"name": "Get Transcript",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://api.scriptube.io/v1/transcript",
"headers": {
"Authorization": "Bearer {{ $credentials.scriptubeApiKey }}",
"Content-Type": "application/json"
},
"body": {
"url": "{{ $json.youtube_url }}",
"format": "text",
"include_timestamps": true
}
}
}
Scriptube handles all the heavy lifting: extracting captions, handling different caption formats, and returning clean text ready for processing.
Step 3: Generate AI Summary (Optional but Powerful)
Add an OpenAI node to create intelligent summaries:
{
"name": "Summarize with GPT-4",
"type": "n8n-nodes-base.openAi",
"parameters": {
"model": "gpt-4-turbo",
"messages": [
{
"role": "system",
"content": "You are a content analyst. Summarize video transcripts with: 1) One-paragraph summary, 2) 5 key takeaways as bullet points, 3) Relevant tags (comma-separated)"
},
{
"role": "user",
"content": "Summarize this transcript:\n\n{{ $json.transcript }}"
}
]
}
}
Step 4: Create Notion Page
Finally, push everything to Notion with full metadata:
{
"name": "Create Notion Page",
"type": "n8n-nodes-base.notion",
"parameters": {
"databaseId": "{{ $credentials.notionDatabaseId }}",
"properties": {
"Title": { "title": [{ "text": { "content": "{{ $json.video_title }}" }}] },
"URL": { "url": "{{ $json.youtube_url }}" },
"Channel": { "rich_text": [{ "text": { "content": "{{ $json.channel_name }}" }}] },
"Duration": { "number": {{ $json.duration_minutes }} },
"Tags": { "multi_select": {{ $json.tags }} },
"Added": { "date": { "start": "{{ $now.format('YYYY-MM-DD') }}" }}
},
"children": [
{
"type": "heading_2",
"heading_2": { "rich_text": [{ "text": { "content": "Summary" }}] }
},
{
"type": "paragraph",
"paragraph": { "rich_text": [{ "text": { "content": "{{ $json.summary }}" }}] }
},
{
"type": "heading_2",
"heading_2": { "rich_text": [{ "text": { "content": "Key Takeaways" }}] }
},
{
"type": "bulleted_list_item",
"bulleted_list_item": { "rich_text": [{ "text": { "content": "{{ $json.key_points }}" }}] }
},
{
"type": "heading_2",
"heading_2": { "rich_text": [{ "text": { "content": "Full Transcript" }}] }
},
{
"type": "paragraph",
"paragraph": { "rich_text": [{ "text": { "content": "{{ $json.transcript }}" }}] }
}
]
}
}
Notion Database Configuration
Create a Notion database with these properties for maximum usefulness:
| Property | Type | Purpose |
|---|---|---|
| Title | Title | Video title (searchable) |
| URL | URL | Original YouTube link |
| Channel | Text | Filter by creator |
| Duration | Number | Sort by length |
| Tags | Multi-select | AI-generated categories |
| Status | Select | To Watch / Watched / Processed |
| Added | Date | When you saved it |
| Rating | Select | Your personal rating |
Pro tip: Add a "Transcript Search" property as a formula that concatenates key fields. Notion's search will index it, making full-text transcript search possible.
Bonus: Multi-Language Support
Scriptube supports transcript extraction in 50+ languages and can translate on the fly. Add a language parameter to your workflow:
{
"body": {
"url": "{{ $json.youtube_url }}",
"translate_to": "en",
"source_language": "auto"
}
}
Now you can build a knowledge base from any YouTube content, regardless of original language. Japanese tech tutorials, Spanish marketing webinars, German engineering lectures—all automatically transcribed and translated.
Convert Transcripts to Audio with ElevenLabs
Want to listen to transcripts instead of reading? Add an ElevenLabs node to generate natural-sounding audio:
{
"name": "Generate Audio",
"type": "n8n-nodes-base.httpRequest",
"parameters": {
"method": "POST",
"url": "https://api.elevenlabs.io/v1/text-to-speech/{{ $credentials.voiceId }}",
"headers": {
"xi-api-key": "{{ $credentials.elevenLabsKey }}"
},
"body": {
"text": "{{ $json.summary }}",
"model_id": "eleven_turbo_v2"
}
}
}
This creates a podcast-style audio version you can listen to during commutes—turning video content into audio content automatically.
Real Results & ROI
Users running this workflow report significant time savings:
- 80% reduction in time spent searching for video content
- 10x faster content consumption (reading vs watching)
- Zero manual data entry — everything populates automatically
- 100% recall — every video becomes permanently searchable
A content creator processing 50 videos per week saves approximately 15 hours monthly on research and organization alone.
Cost Breakdown
| Service | Cost | Volume |
|---|---|---|
| Scriptube API | $19/month (Pro) | 500 transcripts |
| OpenAI GPT-4 | ~$5/month | ~100 summaries |
| N8N Cloud | $20/month | Unlimited workflows |
| Notion | Free | Unlimited pages |
| Total | ~$44/month |
For the time saved, that's roughly $3/hour invested in automation—far below minimum wage for manual work.
Ready to Build Your YouTube Knowledge Base?
Start with Scriptube's free tier—100 transcripts per month, no credit card required.
Get Your Free API Key →Or compare plans for higher volumes.
Troubleshooting Common Issues
Transcript Not Found
Some videos have disabled captions. Scriptube can use Whisper AI to generate transcripts from audio—enable the force_whisper parameter for these cases.
Notion Rate Limits
Notion's API allows 3 requests/second. Add a "Wait" node between batches if processing many videos at once.
Long Transcripts Truncated
Notion blocks have character limits. Split long transcripts into multiple blocks using N8N's "Split In Batches" node.