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
Define product keyword set
Load the brand's target product keywords and category terms for the audit.
Check Google organic and AI Overview presence
Query Scavio Google with AI Overview enabled for each keyword and check brand domain visibility.
Check Amazon marketplace presence
Query Scavio Amazon for each product keyword to see if the brand appears in marketplace results.
Check TikTok product mentions
Search Scavio TikTok for brand and product mentions to assess social commerce visibility.
Generate readiness scorecard
Compile results into a scorecard with visibility scores per channel and actionable recommendations.
Python Implementation
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
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
Web search with knowledge graph, PAA, and AI overviews
Amazon
Product search with prices, ratings, and reviews
TikTok
Trending video, creator, and product discovery