Workflow

D2C AI Readiness Audit

Audit D2C brand visibility for AI shopping agents. Check Google AI Overview citations, marketplace presence, and structured data coverage.

Overview

This workflow audits a D2C brand's readiness for AI-driven product discovery by checking visibility across the surfaces that AI shopping agents query: Google organic results, Google AI Overviews, Amazon listings, and TikTok product mentions. The audit produces a scorecard showing where the brand is visible, where it is missing, and specific actions to improve AI agent discoverability.

Trigger

Monthly cron schedule or on-demand

Schedule

Monthly or on-demand

Workflow Steps

1

Define product keyword set

Load the brand's target product keywords and category terms for the audit.

2

Check Google organic and AI Overview presence

Query Scavio Google with AI Overview enabled for each keyword and check brand domain visibility.

3

Check Amazon marketplace presence

Query Scavio Amazon for each product keyword to see if the brand appears in marketplace results.

4

Check TikTok product mentions

Search Scavio TikTok for brand and product mentions to assess social commerce visibility.

5

Generate readiness scorecard

Compile results into a scorecard with visibility scores per channel and actionable recommendations.

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"

def check_google(keyword: str, brand_domain: str) -> dict:
    res = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "google", "query": keyword, "ai_overview": True},
        timeout=15,
    )
    res.raise_for_status()
    data = res.json()
    organic_links = [r.get("link", "") for r in data.get("organic", [])[:10]]
    in_organic = any(brand_domain in link for link in organic_links)
    ai = data.get("ai_overview")
    in_ai = False
    if ai:
        citations = [c.get("source", "") for c in ai.get("citations", [])]
        in_ai = any(brand_domain in c for c in citations)
    return {"keyword": keyword, "in_organic": in_organic, "in_ai_overview": in_ai}

def check_amazon(keyword: str, brand_name: str) -> dict:
    res = requests.post(
        "https://api.scavio.dev/api/v1/search",
        headers={"x-api-key": API_KEY},
        json={"platform": "amazon", "query": keyword},
        timeout=15,
    )
    res.raise_for_status()
    results = res.json().get("organic", [])[:10]
    found = any(brand_name.lower() in (r.get("title", "")).lower() for r in results)
    return {"keyword": keyword, "in_amazon": found}

def run():
    brand_domain = "mybrand.com"
    brand_name = "MyBrand"
    keywords = ["organic face cream", "natural skincare", "vegan moisturizer"]

    scorecard = {"brand": brand_name, "date": datetime.utcnow().strftime("%Y-%m-%d"), "keywords": []}
    for kw in keywords:
        google = check_google(kw, brand_domain)
        amazon = check_amazon(kw, brand_name)
        scorecard["keywords"].append({**google, **amazon})

    visible = sum(1 for k in scorecard["keywords"] if k["in_organic"])
    ai_cited = sum(1 for k in scorecard["keywords"] if k["in_ai_overview"])
    print(f"AI Readiness Audit for {brand_name}:")
    print(f"  Google organic: {visible}/{len(keywords)} keywords")
    print(f"  AI Overview cited: {ai_cited}/{len(keywords)} keywords")
    Path(f"ai_readiness_{scorecard['date']}.json").write_text(json.dumps(scorecard, indent=2))

if __name__ == "__main__":
    run()

JavaScript Implementation

JavaScript
const API_KEY = "your_scavio_api_key";

async function checkGoogle(keyword, brandDomain) {
  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: "google", query: keyword, ai_overview: true }),
  });
  const data = await res.json();
  const inOrganic = (data.organic ?? []).slice(0, 10).some((r) => (r.link ?? "").includes(brandDomain));
  const inAI = (data.ai_overview?.citations ?? []).some((c) => (c.source ?? "").includes(brandDomain));
  return { keyword, inOrganic, inAI };
}

async function checkAmazon(keyword, brandName) {
  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: keyword }),
  });
  const data = await res.json();
  return { keyword, inAmazon: (data.organic ?? []).slice(0, 10).some((r) => (r.title ?? "").toLowerCase().includes(brandName.toLowerCase())) };
}

for (const kw of ["organic face cream", "natural skincare"]) {
  const g = await checkGoogle(kw, "mybrand.com");
  const a = await checkAmazon(kw, "MyBrand");
  console.log(`${kw}: organic=${g.inOrganic} ai=${g.inAI} amazon=${a.inAmazon}`);
}

Platforms Used

Google

Web search with knowledge graph, PAA, and AI overviews

Amazon

Product search with prices, ratings, and reviews

TikTok

Trending video, creator, and product discovery

Frequently Asked Questions

This workflow audits a D2C brand's readiness for AI-driven product discovery by checking visibility across the surfaces that AI shopping agents query: Google organic results, Google AI Overviews, Amazon listings, and TikTok product mentions. The audit produces a scorecard showing where the brand is visible, where it is missing, and specific actions to improve AI agent discoverability.

This workflow uses a monthly cron schedule or on-demand. Monthly or on-demand.

This workflow uses the following Scavio platforms: google, amazon, 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.

D2C AI Readiness Audit

Audit D2C brand visibility for AI shopping agents. Check Google AI Overview citations, marketplace presence, and structured data coverage.