Resumen
Este flujo de trabajo scans TikTok diario for trending producto videos, extrae producto names, y cross-references them con Amazon listings for precios y disponibilidad. El salida es un oportunidades informe ese ecommerce sellers y dropshippers usar to capitalize on viral productos antes de they sell out o become saturated.
Desencadenador
Cron programar (diario at 7:00 AM UTC)
Programación
Ejecuta diario at 7:00 AM UTC
Pasos del flujo de trabajo
Cargar producto categorias to scan
Leer objetivo producto categorias (e.g., kitchen gadgets, beauty, fitness) de configuracion.
Search TikTok for trending producto videos
Call Scavio TikTok search/videos for cada categoria con product-focused consultas.
Extraer producto references de video titles
Analizar video titles to extraer producto names y menciones de marca for Amazon lookup.
Cross-reference con Amazon listings
Search cada extraido producto on Amazon to verificar disponibilidad, precios, y ratings.
Puntuacion y clasificar oportunidades
Puntuacion cada oportunidad by TikTok engagement y Amazon disponibilidad. Salida un ranked lista.
Implementacion en Python
import requests
import json
from pathlib import Path
from datetime import datetime
API_KEY = "your_scavio_api_key"
TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok"
CATEGORIES = ["kitchen gadget tiktok made me buy", "beauty product viral", "fitness equipment must have"]
def search_tiktok_products(query: str) -> list[dict]:
res = requests.post(
f"{TIKTOK_URL}/search/videos",
headers={"Authorization": f"Bearer {API_KEY}"},
json={"query": query},
timeout=15,
)
res.raise_for_status()
return res.json().get("videos", [])
def check_amazon(product: str) -> dict | None:
res = requests.post(
"https://api.scavio.dev/api/v1/search",
headers={"x-api-key": API_KEY},
json={"platform": "amazon", "query": product},
timeout=15,
)
res.raise_for_status()
for item in res.json().get("organic", []):
if item.get("price"):
return {
"title": item.get("title", ""),
"price": item["price"],
"rating": item.get("rating"),
"reviews": item.get("reviews", 0),
"link": item.get("link", ""),
}
return None
def run():
opportunities = []
for category in CATEGORIES:
videos = search_tiktok_products(category)
for video in videos[:10]:
title = video.get("title", "")
views = video.get("views", 0)
likes = video.get("likes", 0)
if views < 1000:
continue
# Search Amazon with video title excerpt
amazon = check_amazon(title[:80])
if amazon:
opportunities.append({
"category": category.split(" ")[0],
"tiktok_title": title[:120],
"tiktok_views": views,
"tiktok_likes": likes,
"amazon_title": amazon["title"][:120],
"amazon_price": amazon["price"],
"amazon_rating": amazon.get("rating"),
"amazon_reviews": amazon["reviews"],
"amazon_link": amazon["link"],
"score": views + (likes * 10) + (amazon["reviews"] * 5),
})
opportunities.sort(key=lambda x: x["score"], reverse=True)
date = datetime.utcnow().strftime("%Y-%m-%d")
report = {"date": date, "categories_scanned": len(CATEGORIES), "opportunities": len(opportunities), "items": opportunities[:30]}
Path(f"tiktok_amazon_scan_{date}.json").write_text(json.dumps(report, indent=2))
print(f"Found {len(opportunities)} TikTok-Amazon opportunities")
for item in opportunities[:5]:
print(f" {item['tiktok_views']:>10,} views | ${item['amazon_price']:>7.2f} | {item['amazon_title'][:50]}")
if __name__ == "__main__":
run()Implementacion en JavaScript
const API_KEY = "your_scavio_api_key";
const TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok";
const CATEGORIES = ["kitchen gadget tiktok made me buy", "beauty product viral"];
async function searchTiktok(query) {
const res = await fetch(`${TIKTOK_URL}/search/videos`, {
method: "POST",
headers: { Authorization: `Bearer ${API_KEY}`, "content-type": "application/json" },
body: JSON.stringify({ query }),
});
if (!res.ok) throw new Error(`scavio ${res.status}`);
return (await res.json()).videos ?? [];
}
async function checkAmazon(product) {
const res = await fetch("https://api.scavio.dev/api/v1/search", {
method: "POST",
headers: { "x-api-key": API_KEY, "content-type": "application/json" },
body: JSON.stringify({ platform: "amazon", query: product }),
});
if (!res.ok) return null;
const items = (await res.json()).organic ?? [];
const found = items.find((i) => i.price);
return found ? { title: found.title ?? "", price: found.price, reviews: found.reviews ?? 0, link: found.link ?? "" } : null;
}
const opps = [];
for (const cat of CATEGORIES) {
const videos = await searchTiktok(cat);
for (const v of videos.slice(0, 10)) {
if ((v.views ?? 0) < 1000) continue;
const amazon = await checkAmazon((v.title ?? "").slice(0, 80));
if (amazon) opps.push({ views: v.views ?? 0, amazonPrice: amazon.price, amazonTitle: amazon.title.slice(0, 50) });
}
}
opps.sort((a, b) => b.views - a.views);
console.log(`Found ${opps.length} opportunities`);
for (const o of opps.slice(0, 5)) console.log(` ${o.views.toLocaleString()} views | $${o.amazonPrice} | ${o.amazonTitle}`);Plataformas utilizadas
TikTok
Descubrimiento de videos, creadores y productos en tendencia
Amazon
Búsqueda de productos con precios, calificaciones y reseñas