Turn Viral TikTok Videos Into LinkedIn Posts
⏱️ 10-min setup | 🔧 n8n + Apify + Claude AI
The Concept
TikTok viral video → AI analysis → LinkedIn post → Slack notification
This workflow finds the top 20 viral TikTok videos each week on topics you care about, analyzes them with Claude AI, generates ready-to-post LinkedIn content with viral hooks, and drops everything in Slack for one-click publishing.
Why This Works
Traditional LinkedIn content creation:
Scroll TikTok for hours looking for trending topics
Watch 50+ videos to find 3 usable ones
Take notes manually on your phone
Try to write a viral hook (usually fails)
Spend 30-60 min per post
Post inconsistently (2-3x per month)
Engagement is hit-or-miss
Why this workflow crushes:
Piggyback on proven viral content - If it’s trending on TikTok, it’ll work on LinkedIn
AI does the heavy lifting - Claude analyzes video, extracts key points, writes hook
Viral hook formulas built-in
Consistent posting schedule - Weekly automation = never miss a post
Pre-filtered for quality - Only videos with high engagement make it through
Short-form = quick insights - TikTok forces concision, perfect for LinkedIn
Results:
20 posts per week (80+ per month vs 2-3 manual)
10x faster content creation (10 min vs 2 hours)
Higher engagement (proven viral topics)
Build authority in your niche automatically
Fresh, trending content (TikTok = cutting edge)
Building It Step-By-Step
Step 1: Set Up Weekly Trigger
Node: Schedule Trigger
Type: Interval
Frequency: Every week
Configuration:
{
"rule": {
"interval": [
{
"field": "weeks"
}
]
}
}Pro tip: Run it Monday morning so you have fresh content for the week ahead. Or run it Sunday evening to prep for Monday posting.
What this does: Kicks off the entire workflow once per week. Set it and forget it.
Step 2: Scrape TikTok for Viral Videos
Node: Apify - Run an Actor
Actor: TikTok Scraper (clockworks/tiktok-scraper)
Action: Search and filter videos
Configuration:
{
"excludePinnedPosts": false,
"proxyCountryCode": "None",
"resultsPerPage": 10,
"scrapeRelatedVideos": false,
"searchDatePosted": "1",
"searchQueries": [
"Automation",
"AI agents"
],
"searchSection": "/video",
"searchSorting": "1",
"shouldDownloadAvatars": false,
"shouldDownloadCovers": false,
"shouldDownloadMusicCovers": false,
"shouldDownloadSlideshowImages": false,
"shouldDownloadSubtitles": false,
"shouldDownloadVideos": false,
"profileScrapeSections": [
"videos"
],
"profileSorting": "latest",
"maxProfilesPerQuery": 10
}Customize search queries for your niche:
"searchQueries": [
"ChatGPT tutorial",
"sales automation",
"productivity hacks",
"AI tools"
]Key parameters:
searchDatePosted: "1"= videos from last 24h (ultra fresh)searchSorting: "1"= sort by relevance + engagementresultsPerPage: 10= fetches 10 top performers
Step 3: Get Video Data from Apify
Node: Apify - Get Dataset Items
Resource: Datasets
Action: Retrieve items
Configuration:
{
"datasetId": "={{ $json.defaultDatasetId }}"
}How it works: The TikTok scraper (Step 2) stores results in an Apify dataset. This step fetches all 10 videos from that dataset.
What this does: Pulls the complete video data (caption, URL, views, likes, comments, shares, creator profile, hashtags) into n8n for processing.
Step 4: Sort by Engagement (Views)
Node: Sort
Type: Single field sort
Configuration:
{
"sortFieldsUi": {
"sortField": [
{
"fieldName": "playCount",
"order": "descending"
}
]
}
}Why sort by playCount? On TikTok, views are the best initial indicator of virality. We refine further with the top 20.
What this does: Re-ranks the 10 videos by view count (highest first). Most-watched videos rise to the top.
Step 5: Keep Top 20 Only
Node: Code (JavaScript)
Action: Slice array
Code:
return $input.all().slice(0, 20);
```
**Why 20 instead of 3?** With TikTok, you want volume. 20 posts/week = 3 posts/day in batch mode, perfect for maintaining constant LinkedIn presence.
---
### Step 6: Loop Through Each Video
**Node:** Loop Over Items (Split in Batches)
**Type:** Batch processing
**Settings:**
- **Batch size:** 1 (process one video at a time)
- **Reset:** After all items processed
**How the loop works:**
1. Takes video #1 → processes it through Claude → sends to Slack
2. Returns to loop → takes video #2 → repeats
3. Continues until video #20
4. Loop ends
**What this does:** Processes each of the 20 videos individually through the AI analysis and Slack notification steps.
---
### Step 7: Analyze Video with Claude AI
**Node:** Anthropic - Message a model
**Model:** claude-haiku-4-5-20251001
**Action:** Generate LinkedIn post
**Prompt:**
```
You are a LinkedIn content strategist specialized in viral posts.
Analyze the TikTok video data below and transform it into a LinkedIn post concept.
---
TIKTOK VIDEO DATA
- Author: {{$json.authorMeta.nickName}} (@{{$json.authorMeta.name}})
- Followers: {{$json.authorMeta.fans}}
- Caption: {{$json.text}}
- Video URL: {{$json.webVideoUrl}}
- Engagement:
* Views: {{$json.playCount}}
* Likes: {{$json.diggCount}}
* Comments: {{$json.commentCount}}
* Shares: {{$json.shareCount}}
- Hashtags: {{$json.hashtags[0].name}}, {{$json.hashtags[1].name}}, {{$json.hashtags[2].name}}
- Duration: {{$json.videoMeta.duration}}s
- Posted: {{$json.createTimeISO}}
---
OUTPUT FORMAT:
HOOK:
[2 lines - must stop the scroll]
CONTENT SUMMARY:
[3-5 bullet points describing what the LinkedIn post should cover]
CONTEXT:
[1 line explaining the TikTok trend/topic relevance for LinkedIn audience]
---
HOOK RULES:
- 2 lines maximum (hard limit)
- Concrete and specific, not generic
- Leverage engagement metrics if impressive (views, engagement rate)
- Create urgency or challenge common beliefs
- NO questions, NO vague statements, NO clickbait
- Translate TikTok energy into LinkedIn professionalism
Effective patterns for TikTok → LinkedIn:
- "This TikTok got [X] views in [Y] days. Here's the strategy:"
- "Everyone's doing [X] on TikTok. Here's how to apply it to [business context]:"
- "I analyzed [X] viral TikToks. [Y] pattern emerged:"
- "[Creator] cracked the code on [topic]. Here's what businesses miss:"
- "Stop ignoring TikTok for [business use case]. Here's why:"
---
SUMMARY RULES:
- Extract the core value/lesson from the TikTok
- Translate TikTok tactics into LinkedIn-friendly insights
- Focus on actionable takeaways for business audience
- Mention specific tools, strategies, or frameworks
- Keep it scannable (short bullet points)
- 3-5 points maximum
- Bridge the gap between TikTok trend and professional application
- End with clear CTA (save, share, or try the tactic)
---
CONTEXT ANALYSIS (Internal - don't output):
Before generating, analyze:
1. What's the core topic/trend in the TikTok?
2. Why would LinkedIn professionals care about this?
3. What's the business application or lesson?
4. Are the engagement metrics impressive enough to mention?
5. What hashtags reveal about the niche?
6. How to make TikTok content credible for LinkedIn audience?
---
ADAPTATION STRATEGY:
- If TikTok is about automation → Frame as productivity/efficiency for businesses
- If TikTok is entertainment → Extract the underlying strategy or psychology
- If TikTok is educational → Reframe for professional development context
- Always add "business value" layer to TikTok content
- Maintain authenticity while elevating the tone
---
OUTPUT EXAMPLE:
HOOK:
This automation TikTok got 50K views in 3 days.
Most LinkedIn creators ignore this platform. Big mistake.
CONTENT SUMMARY:
- Break down the automation workflow shown in the TikTok
- Explain why TikTok is becoming a goldmine for B2B creators
- Share 3 tactics to repurpose TikTok content for LinkedIn
- Include the specific tools/platforms mentioned
- CTA: "Which TikTok automation hack should I break down next?"
CONTEXT:
Automation content is trending on TikTok with 2M+ posts. Here's how B2B companies can leverage these tactics for content scaling.Why Haiku instead of Sonnet? For 20 posts/run, Haiku is 20x cheaper and perfectly adequate for this type of structured generation. You save approximately $15/run.
Step 8: Format for Slack
Node: Code (JavaScript)
Action: Create formatted Slack message
Code:
// Access all input items
const inputItems = $input.all();
const videoDataItems = $("Loop Over Items").all();
const output = inputItems.map((item, idx) => {
const claudeResponse = item.json;
const linkedinPost = (claudeResponse.content && claudeResponse.content[0] && claudeResponse.content[0].text) || '';
const videoData = videoDataItems[idx]?.json || {};
// Extract TikTok data from the actual flow structure
const authorName = videoData.authorMeta?.nickName || 'Unknown';
const authorHandle = videoData.authorMeta?.name || '';
const followers = videoData.authorMeta?.fans || 0;
const views = videoData.playCount || 0;
const likes = videoData.diggCount || 0;
const comments = videoData.commentCount || 0;
const shares = videoData.shareCount || 0;
const videoUrl = videoData.webVideoUrl || '';
const caption = videoData.text || '';
const hashtags = videoData.hashtags?.map(h => h.name).join(', ') || '';
// Format message for Slack
const slackMessage = `
*New LinkedIn Post Generated!*
TikTok: @${authorHandle}
Creator: ${authorName} (${followers.toLocaleString()} followers)
Engagement:
- Views: ${views.toLocaleString()}
- Likes: ${likes.toLocaleString()}
- Comments: ${comments}
- Shares: ${shares}
Hashtags: ${hashtags}
LINKEDIN POST:
${linkedinPost}
Original TikTok: ${videoUrl}
Caption: ${caption.substring(0, 100)}${caption.length > 100 ? '...' : ''}
Generated: ${new Date().toLocaleString('en-US', { timeZone: 'America/New_York' })}
`.trim();
return {
json: {
// For Slack
text: slackMessage,
// Structured TikTok data
tiktokAuthor: authorName,
tiktokHandle: authorHandle,
tiktokFollowers: followers,
tiktokViews: views,
tiktokLikes: likes,
tiktokComments: comments,
tiktokShares: shares,
tiktokUrl: videoUrl,
tiktokCaption: caption,
tiktokHashtags: hashtags,
// Generated LinkedIn post
linkedinPost: linkedinPost,
// Metadata
generatedAt: new Date().toISOString(),
engagementRate: followers > 0 ? ((likes / views) * 100).toFixed(2) : 0
}
};
});
return output;What this creates:
A richly formatted Slack message with all TikTok metrics and the LinkedIn post ready to publish.
Step 9: Send to Slack
Node: Slack - Send a Message
Channel: #social
Settings:
Authentication: OAuth2
Select: channel
Channel ID: C098Z696RFF (#social)
Text:
={{ $json.text }}
Step 10: Loop Back
Node: Loop Over Items (return)
Action: Process next video
After sending to Slack, the workflow returns to Step 6 and processes the next video (#2, then #3... until #20).
What this does: Ensures all 20 videos are analyzed and posted to Slack. After the 20th video, the workflow completes.
Done!
You now have:
Weekly TikTok scraping (top 20 viral videos)
Intelligent engagement sorting (playCount)
AI-powered content analysis (Claude Haiku 4.5)
TikTok → LinkedIn professional translation
Viral hook generation (proven patterns)
Slack notifications (ready to publish)
20 LinkedIn posts per week (automated)
Bonus Tips
Niches that work best TikTok → LinkedIn:
AI & Automation (your niche)
Productivity hacks
Sales techniques
Entrepreneurship mindset
Marketing strategies
What to avoid:
Dances and Gen Z trends
Too casual/meme content
Videos without actionable insights
Pure entertainment content
Advanced optimizations:
1. Smart duration filter - Change searchDatePosted from "1" (24h) to "7" (7 days) if you want to expand the pool
2. Track best performers - Add a Google Sheet node to log which TikTok → which LinkedIn engagement
3. A/B test hooks - Generate 2 hook versions per video, post both on LinkedIn on different days, keep the best pattern
4. Upgrade to Sonnet 4.5 if budget allows - Better understanding of TikTok nuances, sharper hooks
© 2026 Yonathan Cohen
Subscribe for weekly automation workflows that 10x your sales output
Tool Monsters is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.


You always come up with the coolest ideas.