import os, requests, time
from openai import OpenAI
HS = os.environ["HUBSPOT_ACCESS_TOKEN"]
MV = os.environ["MAVERA_API_KEY"]
MB = "https://app.mavera.io/api/v1"
# 1. Published blog posts
posts = requests.get("https://api.hubapi.com/cms/v3/blogs/posts",
headers={"Authorization": f"Bearer {HS}"},
params={"state": "PUBLISHED", "sort": "-publishDate", "limit": 30,
"property": "name,url,postSummary,postBody"},
).json().get("results", [])
urls = [p["url"] for p in posts if p.get("url")]
samples = [f"Title: {p.get('name','')}\n{p.get('postSummary','') or p.get('postBody','')[:500]}"
for p in posts if p.get("postSummary") or p.get("postBody")]
# 2. Create Brand Voice
payload = {"name": "HubSpot Blog Voice", "urls": urls[:15]}
if samples:
payload["samples"] = ["\n\n---\n\n".join(samples[:10])]
bv = requests.post(f"{MB}/brand-voices",
headers={"Authorization": f"Bearer {MV}", "Content-Type": "application/json"},
json=payload).json()
print(f"Brand Voice: {bv['id']}")
# 3. Verify status
time.sleep(3)
detail = requests.get(f"{MB}/brand-voices/{bv['id']}",
headers={"Authorization": f"Bearer {MV}"}).json()
print(f"Status: {detail.get('status','unknown')}")
# 4. Test generation
mavera = OpenAI(api_key=MV, base_url=MB)
test = mavera.responses.create(model="mavera-1",
input=[{"role": "user", "content": "Write a 100-word blog intro about AI in marketing."}],
extra_body={"brand_voice_id": bv["id"]})
print(f"\n{test.output[0].content[0].text}")