Build a Slack Bot That Fetches Any YouTube Transcript in Seconds with N8N
Your team shares YouTube links in Slack all day. Tutorials, competitor videos, conference talks. But watching them? That's 47 minutes you don't have. What if anyone could type /transcript [youtube-url] and get the full text in seconds?
The Hidden Productivity Drain in Your Slack Channels
Here's a scenario playing out in thousands of Slack workspaces right now:
@channel Just watched this 45-min breakdown of our competitor's new feature. Worth checking out: [YouTube link]
β Your colleague, 2:34 PM
What happens next? Three outcomes, all bad:
- Ignored: 80% of shared videos never get watched. Too long, wrong time, buried in channel noise.
- Watched inefficiently: Five people watch the same 45-minute video separately. That's 3.75 hours of duplicate effort.
- Half-watched: Someone skims it at 2x speed, misses the critical insight at minute 38.
A 2024 study by Loom found that teams share 340% more video content than in 2020, but video consumption rates have stayed flat. The content is there. The time isn't.
Why This Matters More Than You Think
YouTube has become the world's largest knowledge repository. Your team's competitive intelligence, training resources, and industry insights are locked inside videos that nobody has time to watch.
Consider what's being shared in your Slack:
- Engineering: Technical deep-dives, architecture reviews, tool tutorials
- Sales: Competitor demos, objection handling, product walkthroughs
- Marketing: Industry talks, influencer content, campaign breakdowns
- Product: User feedback sessions, feature requests, UX research
- Leadership: Thought leadership, market analysis, strategy presentations
This knowledge exists. It's just trapped in a format that doesn't fit how teams actually work.
Enter the Transcript Bot: Knowledge Unlocked in Seconds
Imagine instead:
/transcript https://youtube.com/watch?v=abc123
And 3 seconds later, your bot replies with:
- β Full transcript text (searchable, quotable)
- β One-paragraph AI summary
- β Key timestamps with topics
- β Optional: Translation to your team's language
Now that 45-minute video becomes a 2-minute skim. Anyone can search for specific topics. Insights get shared in quotes, not "watch from minute 23."
Real Team Impact
Databox (analytics company, 80 employees) built this exact workflow:
"We were drowning in competitor video content. Now our sales team gets transcripts in Slack threads automatically. They scan for objections, pricing mentions, and feature gaps in seconds instead of hours."
β Head of Revenue Operations
Their numbers after 3 months:
- 73% increase in competitive intel consumption
- 12 hours/week saved across the sales team
- 4x more video insights cited in deal notes
Complete N8N Workflow Setup (15 Minutes)
Here's how to build your Slack transcript bot with N8N and Scriptube's API. No coding requiredβjust node connections.
Architecture Overview
βββββββββββββββ ββββββββββββββββ βββββββββββββββ ββββββββββββββ
β Slack Slash β βββΆ β N8N Webhook β βββΆ β Scriptube β βββΆ β Slack β
β Command β β Trigger β β API β β Reply β
βββββββββββββββ ββββββββββββββββ βββββββββββββββ ββββββββββββββ
β
βΌ
ββββββββββββββββ
β OpenAI β
β (Summary) β
ββββββββββββββββ
Prerequisites
- N8N instance β Self-hosted or N8N Cloud ($20/mo)
- Scriptube account β Free tier includes 100 transcripts/month
- Slack workspace β Admin access to create apps
- OpenAI API key β For summaries (optional but recommended)
Step 1: Create Your Slack App
- Go to api.slack.com/apps
- Click "Create New App" β "From scratch"
- Name it "Transcript Bot" and select your workspace
- Navigate to "Slash Commands" β "Create New Command":
- Command:
/transcript - Request URL: (we'll get this from N8N in Step 2)
- Description: Fetch YouTube video transcript
- Usage Hint: [youtube-url]
- Command:
- Go to "OAuth & Permissions" and add these Bot Token Scopes:
commandschat:writechat:write.public
- Install the app to your workspace and copy the Bot Token (
xoxb-...)
Step 2: Build the N8N Workflow
Open N8N and create a new workflow with these nodes:
Node 1: Webhook (Trigger)
{
"node": "Webhook",
"parameters": {
"httpMethod": "POST",
"path": "slack-transcript",
"responseMode": "responseNode"
}
}
Copy the webhook URL and paste it as your Slack slash command's Request URL.
Node 2: Respond to Webhook (Immediate)
Slack requires a response within 3 seconds. Send an immediate acknowledgment:
{
"node": "Respond to Webhook",
"parameters": {
"respondWith": "json",
"responseBody": {
"response_type": "ephemeral",
"text": "π Fetching transcript... I'll post it in a moment."
}
}
}
Node 3: HTTP Request to Scriptube API
{
"node": "HTTP Request",
"parameters": {
"method": "POST",
"url": "https://scriptube.io/api/v1/transcript",
"authentication": "genericCredentialType",
"headers": {
"Content-Type": "application/json"
},
"body": {
"url": "={{ $json.body.text }}",
"format": "text"
}
}
}
Add your Scriptube API key in the credentials section.
Node 4: OpenAI Summarizer (Optional)
{
"node": "OpenAI",
"parameters": {
"model": "gpt-4o-mini",
"prompt": "Summarize this YouTube transcript in 2-3 sentences, highlighting the key takeaways:\n\n{{ $json.transcript }}"
}
}
Node 5: Slack Message
{
"node": "Slack",
"parameters": {
"operation": "postMessage",
"channel": "={{ $('Webhook').item.json.body.channel_id }}",
"text": "π *Transcript Ready*\n\n*Summary:* {{ $json.summary }}\n\n\n{{ $('HTTP Request').item.json.transcript | truncate(3000) }}\n\n\n_Requested by <@{{ $('Webhook').item.json.body.user_id }}>_"
}
}
Step 3: Test It!
- Activate your N8N workflow
- Go to any Slack channel
- Type:
/transcript https://www.youtube.com/watch?v=dQw4w9WgXcQ - Watch the magic happen β¨
The Complete JSON Workflow (Copy & Import)
Don't want to build node-by-node? Import this complete workflow into N8N:
{
"name": "Slack Transcript Bot",
"nodes": [
{
"id": "webhook",
"type": "n8n-nodes-base.webhook",
"position": [250, 300],
"parameters": {
"httpMethod": "POST",
"path": "slack-transcript",
"responseMode": "responseNode"
}
},
{
"id": "ack",
"type": "n8n-nodes-base.respondToWebhook",
"position": [450, 200],
"parameters": {
"responseBody": "={{ JSON.stringify({ response_type: 'ephemeral', text: 'π Fetching transcript...' }) }}"
}
},
{
"id": "scriptube",
"type": "n8n-nodes-base.httpRequest",
"position": [450, 400],
"parameters": {
"method": "POST",
"url": "https://scriptube.io/api/v1/transcript",
"sendBody": true,
"bodyParameters": {
"parameters": [
{ "name": "url", "value": "={{ $json.body.text }}" },
{ "name": "format", "value": "text" }
]
}
}
},
{
"id": "openai",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [650, 400],
"parameters": {
"model": "gpt-4o-mini",
"prompt": "Summarize this transcript in 2-3 sentences:\n\n{{ $json.transcript }}"
}
},
{
"id": "slack",
"type": "n8n-nodes-base.slack",
"position": [850, 400],
"parameters": {
"operation": "postMessage",
"channel": "={{ $('webhook').item.json.body.channel_id }}",
"text": "π *Transcript for:* {{ $('webhook').item.json.body.text }}\n\n*Summary:* {{ $json.text }}\n\n_Full transcript attached below (click to expand)_"
}
}
],
"connections": {
"webhook": { "main": [[{ "node": "ack" }, { "node": "scriptube" }]] },
"scriptube": { "main": [[{ "node": "openai" }]] },
"openai": { "main": [[{ "node": "slack" }]] }
}
}
Advanced Features: Thread Replies, Translations, and More
Reply in Thread (Keep Channels Clean)
Add a thread timestamp to keep transcripts organized:
{
"parameters": {
"thread_ts": "={{ $json.body.message_ts || '' }}"
}
}
Auto-Translate to Team Language
Scriptube supports 100+ languages. Add a translation step for global teams:
{
"node": "HTTP Request",
"parameters": {
"url": "https://scriptube.io/api/v1/transcript",
"body": {
"url": "{{ $json.body.text }}",
"translate_to": "es" // Spanish
}
}
}
Now your Spanish-speaking team gets transcripts in their native language automatically.
Convert to Audio with ElevenLabs
Want to turn transcripts into podcasts for commuters? Add ElevenLabs TTS:
{
"node": "HTTP Request",
"parameters": {
"method": "POST",
"url": "https://api.elevenlabs.io/v1/text-to-speech/21m00Tcm4TlvDq8ikWAM",
"body": {
"text": "{{ $json.transcript | truncate(5000) }}",
"model_id": "eleven_monolingual_v1"
}
}
}
Upload the audio to Slack and teammates can listen while doing other work.
Keyword Extraction for Searchability
Add GPT-powered keyword extraction to make transcripts searchable:
{
"prompt": "Extract 5-10 keywords from this transcript for search indexing. Return as comma-separated list:\n\n{{ $json.transcript }}"
}
Store these in Notion, Airtable, or your team wiki for later reference.
Real Results: How Teams Use This Daily
Use Case 1: Sales Competitive Intel
Before: "Check out this competitor webinar" β Nobody watches the 60-minute video
After: Sales rep types /transcript [competitor-demo], gets instant summary of features, pricing mentions, and positioning. Shares key quotes in the deal room.
Impact: 89% of competitive videos now get consumed (vs. 12% before)
Use Case 2: Engineering Knowledge Base
Before: "I think there's a video on how we built the auth system..." β Never found
After: All internal tech talks get auto-transcribed and indexed. Engineers search for specific implementations.
Impact: 3.2 hours/week saved per engineer on knowledge discovery
Use Case 3: Customer Success Training
Before: New CS reps watch 40 hours of training videos
After: Transcripts become searchable documentation. Reps find answers to specific questions in seconds.
Impact: Onboarding time reduced from 3 weeks to 8 days
Getting Started: Your 15-Minute Setup
- Sign up for Scriptube β Get your free API key (100 transcripts/month free)
- Import the workflow β Copy the JSON above into N8N
- Create your Slack app β Follow the steps in this guide
- Test in #random β Try
/transcriptwith any YouTube link - Roll out to your team β Watch knowledge sharing transform
Ready to unlock your team's video knowledge?
Start building your Slack transcript bot today. Free tier includes everything you need.
Get Your Free API Key β