import os, requests, time
AH = os.environ["AHREFS_API_TOKEN"]
MV = os.environ["MAVERA_API_KEY"]
MB = "https://app.mavera.io/api/v1"
AH_H = {"Authorization": f"Bearer {AH}", "Accept": "application/json"}
MH = {"Authorization": f"Bearer {MV}", "Content-Type": "application/json"}
DOMAINS = ["yourdomain.com", "competitor1.com", "competitor2.com", "competitor3.com"]
metrics = []
for domain in DOMAINS:
resp = requests.get("https://api.ahrefs.com/v3/site-explorer/metrics", headers=AH_H,
params={"target": domain, "select": "domain_rating,backlinks,referring_domains,"
"organic_traffic,organic_keywords"})
resp.raise_for_status()
data = resp.json()
data["domain"] = domain
metrics.append(data)
time.sleep(1)
metrics.sort(key=lambda m: m.get("domain_rating", 0), reverse=True)
landscape = "\n".join(
f"- {m['domain']} | DR: {m.get('domain_rating', 0)} | backlinks: {m.get('backlinks', 0):,} | "
f"ref domains: {m.get('referring_domains', 0):,} | traffic: {m.get('organic_traffic', 0):,}"
for m in metrics)
our = next(m for m in metrics if m["domain"] == DOMAINS[0])
our_rank = next(i for i, m in enumerate(metrics) if m["domain"] == DOMAINS[0]) + 1
print(f"Your DR: {our.get('domain_rating', 0)} (#{our_rank}/{len(DOMAINS)})\n{landscape}")
positioning = requests.post(f"{MB}/mave/chat", headers=MH, json={
"message": f"Competitive SEO positioning.\n\nLANDSCAPE:\n{landscape}\n\n"
f"We are: {DOMAINS[0]} (#{our_rank}).\n\nProvide: 1) Authority gap "
f"2) Backlink strategy 3) Differentiation 4) Messaging positioning "
f"5) 3 positioning statements",
}).json()
print("\n=== Positioning ===")
print(positioning.get("content", "")[:1500])
bv = requests.post(f"{MB}/brand-voices", headers=MH, json={
"name": f"Authority Voice — DR {our.get('domain_rating', 0)}",
"description": f"Voice for DR {our.get('domain_rating', 0)}, #{our_rank} of "
f"{len(DOMAINS)}. Confident, data-led, not defensive.",
"samples": [
"We test content with real audiences before publishing — that's why it converts.",
"3,000+ focus group responses shaped this. Others guess. We validate.",
],
}).json()
print(f"\nBrand voice: {bv.get('id')}")