Overview
Brands miss user-generated TikTok content about their products because TikTok has no native brand monitoring for organic posts. This workflow searches for brand mentions via hashtags and keywords daily, collects video metadata and engagement, and surfaces high-performing UGC that the brand can amplify or respond to.
Trigger
Daily cron at 10 AM UTC.
Schedule
Daily at 10 AM UTC
Workflow Steps
Configure Brand Keywords and Hashtags
Set up brand name variations, product names, and campaign hashtags to monitor on TikTok.
Search TikTok for Brand Mentions
Search TikTok for each keyword and hashtag. Collect video descriptions, engagement metrics, and creator info.
Filter and Deduplicate Results
Remove duplicate videos from overlapping searches. Filter by minimum view count or engagement threshold.
Classify Content and Sentiment
Categorize each video as positive review, unboxing, complaint, tutorial, or other. Extract sentiment signals from descriptions.
Generate UGC Digest
Compile a daily digest with top-performing UGC, new creators mentioning the brand, and any negative content requiring response.
Python Implementation
import requests, os
API_KEY = os.environ["SCAVIO_API_KEY"]
TT_H = {"Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json"}
def monitor_ugc(keyword: str) -> list:
resp = requests.post(
"https://api.scavio.dev/api/v1/tiktok/search",
headers=TT_H,
json={"query": keyword, "type": "video"},
timeout=15,
)
data = resp.json()
videos = []
for v in data.get("videos", []):
videos.append({
"desc": v.get("desc", ""),
"author": v.get("author", {}).get("uniqueId", ""),
"plays": v.get("stats", {}).get("play_count", 0),
"likes": v.get("stats", {}).get("digg_count", 0),
"comments": v.get("stats", {}).get("comment_count", 0),
"url": f"https://www.tiktok.com/@{v.get('author', {}).get('uniqueId', '')}/video/{v.get('id', '')}",
})
return sorted(videos, key=lambda x: x["plays"], reverse=True)
brand_keywords = ["mybrand review", "mybrand unboxing"]
all_ugc = []
for kw in brand_keywords:
all_ugc.extend(monitor_ugc(kw))
print(f"Found {len(all_ugc)} UGC videos")
for v in all_ugc[:5]:
print(f" @{v['author']}: {v['plays']:,} plays | {v['desc'][:60]}")JavaScript Implementation
const H = {'Authorization': 'Bearer ' + process.env.SCAVIO_API_KEY, 'Content-Type': 'application/json'};
async function monitorUgc(keyword) {
const r = await fetch('https://api.scavio.dev/api/v1/tiktok/search', {method:'POST', headers:H, body:JSON.stringify({query:keyword, type:'video'})});
const d = await r.json();
return (d.videos||[]).map(v=>({desc:v.desc, author:v.author?.uniqueId, plays:v.stats?.play_count||0, likes:v.stats?.digg_count||0})).sort((a,b)=>b.plays-a.plays);
}
const ugc = await monitorUgc('mybrand review');
console.log(ugc.length+' UGC videos found');
ugc.slice(0,5).forEach(v=>console.log('@'+v.author+': '+v.plays+' plays'));Platforms Used
TikTok
Trending video, creator, and product discovery