Workflow

Weekly Marketing Intelligence Report

Automated weekly digest of competitor activity, market trends, and audience sentiment across Google, YouTube, Reddit, and TikTok.

Overview

This workflow generates a comprehensive weekly marketing intelligence report by scanning competitor activity across Google, YouTube, Reddit, and TikTok. It tracks new content, brand mentions, sentiment shifts, and trending topics in your market. The output is a structured report that feeds into Monday morning strategy meetings.

Trigger

Cron schedule (every Sunday at 11 PM UTC)

Schedule

Runs every Sunday at 11 PM UTC

Workflow Steps

1

Load competitor and keyword list

Read monitored competitors, brands, and market keywords from configuration.

2

Scan Google for competitor content

Search Google for each competitor domain to find new pages, blog posts, and landing pages.

3

Check YouTube for new videos

Search YouTube for competitor brand names and market keywords to find new video content.

4

Monitor Reddit discussions

Search Reddit for brand mentions and market topic discussions from the past week.

5

Scan TikTok trends

Check TikTok for trending content in your market vertical.

6

Compile and distribute report

Aggregate all findings into a structured weekly report and send to the team.

Python Implementation

Python
import requests
import json
from datetime import datetime
from pathlib import Path

API_KEY = "your_scavio_api_key"
TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok"
SEARCH_URL = "https://api.scavio.dev/api/v1/search"

COMPETITORS = ["competitor-one.com", "competitor-two.com"]
MARKET_KEYWORDS = ["your market keyword", "your niche term"]
BRAND_KEYWORDS = ["your brand", "competitor brand"]

def search(platform: str, query: str) -> list[dict]:
    res = requests.post(
        SEARCH_URL,
        headers={"x-api-key": API_KEY},
        json={"platform": platform, "query": query},
        timeout=15,
    )
    res.raise_for_status()
    return res.json().get("organic", [])

def scan_tiktok(keyword: str) -> list[dict]:
    res = requests.post(
        f"{TIKTOK_URL}/hashtag",
        headers={"Authorization": f"Bearer {API_KEY}"},
        json={"hashtag": keyword.replace(" ", "")},
        timeout=15,
    )
    if res.status_code == 200:
        return res.json().get("videos", [])[:5]
    return []

def run():
    report = {
        "week_ending": datetime.utcnow().strftime("%Y-%m-%d"),
        "competitor_google": {},
        "youtube_content": [],
        "reddit_mentions": [],
        "tiktok_trends": [],
    }

    # Google competitor scan
    for domain in COMPETITORS:
        results = search("google", f"site:{domain}")
        report["competitor_google"][domain] = {
            "new_pages_found": len(results),
            "top_pages": [{"title": r.get("title", ""), "link": r.get("link", "")} for r in results[:5]],
        }

    # YouTube scan
    for kw in MARKET_KEYWORDS:
        videos = search("youtube", kw)
        report["youtube_content"].extend([{
            "keyword": kw,
            "title": v.get("title", ""),
            "channel": v.get("channel", ""),
            "views": v.get("views", 0),
        } for v in videos[:3]])

    # Reddit scan
    for kw in BRAND_KEYWORDS:
        posts = search("reddit", kw)
        report["reddit_mentions"].extend([{
            "keyword": kw,
            "title": p.get("title", ""),
            "subreddit": p.get("subreddit", ""),
            "score": p.get("score", 0),
        } for p in posts[:5]])

    # TikTok scan
    for kw in MARKET_KEYWORDS:
        videos = scan_tiktok(kw)
        report["tiktok_trends"].extend([{
            "keyword": kw,
            "views": v.get("views", 0),
            "creator": v.get("creator", ""),
        } for v in videos])

    output = Path(f"intel_report_{report['week_ending']}.json")
    output.write_text(json.dumps(report, indent=2))
    print(f"Weekly intel report generated:")
    print(f"  Competitors scanned: {len(COMPETITORS)}")
    print(f"  YouTube videos found: {len(report['youtube_content'])}")
    print(f"  Reddit mentions: {len(report['reddit_mentions'])}")
    print(f"  TikTok trends: {len(report['tiktok_trends'])}")

if __name__ == "__main__":
    run()

JavaScript Implementation

JavaScript
const API_KEY = "your_scavio_api_key";
const SEARCH_URL = "https://api.scavio.dev/api/v1/search";
const TIKTOK_URL = "https://api.scavio.dev/api/v1/tiktok";

const COMPETITORS = ["competitor-one.com", "competitor-two.com"];
const MARKET_KEYWORDS = ["your market keyword", "your niche term"];
const BRAND_KEYWORDS = ["your brand", "competitor brand"];

async function search(platform, query) {
  const res = await fetch(SEARCH_URL, {
    method: "POST",
    headers: { "x-api-key": API_KEY, "content-type": "application/json" },
    body: JSON.stringify({ platform, query }),
  });
  if (!res.ok) throw new Error(`scavio ${res.status}`);
  return (await res.json()).organic ?? [];
}

async function scanTiktok(keyword) {
  const res = await fetch(`${TIKTOK_URL}/hashtag`, {
    method: "POST",
    headers: { Authorization: `Bearer ${API_KEY}`, "content-type": "application/json" },
    body: JSON.stringify({ hashtag: keyword.replace(/ /g, "") }),
  });
  if (!res.ok) return [];
  return ((await res.json()).videos ?? []).slice(0, 5);
}

async function run() {
  const fs = await import("fs/promises");
  const report = {
    weekEnding: new Date().toISOString().slice(0, 10),
    competitorGoogle: {},
    youtubeContent: [],
    redditMentions: [],
    tiktokTrends: [],
  };

  for (const domain of COMPETITORS) {
    const results = await search("google", `site:${domain}`);
    report.competitorGoogle[domain] = {
      newPagesFound: results.length,
      topPages: results.slice(0, 5).map((r) => ({ title: r.title ?? "", link: r.link ?? "" })),
    };
  }

  for (const kw of MARKET_KEYWORDS) {
    const videos = await search("youtube", kw);
    report.youtubeContent.push(...videos.slice(0, 3).map((v) => ({
      keyword: kw, title: v.title ?? "", channel: v.channel ?? "", views: v.views ?? 0,
    })));
  }

  for (const kw of BRAND_KEYWORDS) {
    const posts = await search("reddit", kw);
    report.redditMentions.push(...posts.slice(0, 5).map((p) => ({
      keyword: kw, title: p.title ?? "", subreddit: p.subreddit ?? "", score: p.score ?? 0,
    })));
  }

  for (const kw of MARKET_KEYWORDS) {
    const videos = await scanTiktok(kw);
    report.tiktokTrends.push(...videos.map((v) => ({
      keyword: kw, views: v.views ?? 0, creator: v.creator ?? "",
    })));
  }

  await fs.writeFile(`intel_report_${report.weekEnding}.json`, JSON.stringify(report, null, 2));
  console.log("Weekly intel report generated:");
  console.log(`  Competitors: ${COMPETITORS.length} | YouTube: ${report.youtubeContent.length} | Reddit: ${report.redditMentions.length} | TikTok: ${report.tiktokTrends.length}`);
}

run();

Platforms Used

Google

Web search with knowledge graph, PAA, and AI overviews

YouTube

Video search with transcripts and metadata

Reddit

Community, posts & threaded comments from any subreddit

TikTok

Trending video, creator, and product discovery

Frequently Asked Questions

This workflow generates a comprehensive weekly marketing intelligence report by scanning competitor activity across Google, YouTube, Reddit, and TikTok. It tracks new content, brand mentions, sentiment shifts, and trending topics in your market. The output is a structured report that feeds into Monday morning strategy meetings.

This workflow uses a cron schedule (every sunday at 11 pm utc). Runs every Sunday at 11 PM UTC.

This workflow uses the following Scavio platforms: google, youtube, reddit, tiktok. Each platform is called via the same unified API endpoint.

Yes. Scavio's free tier includes 250 credits per month with no credit card required. That is enough to test and validate this workflow before scaling it.

Weekly Marketing Intelligence Report

Automated weekly digest of competitor activity, market trends, and audience sentiment across Google, YouTube, Reddit, and TikTok.