Alright, so I got tired of trying to eyeball whether the marketing copy Anyword was generating for me was actually any good. Their dashboard metrics are fine, but I wanted my own system—something I could pipe into a spreadsheet and track like a cloud bill. Because let's be honest, if you're not measuring it, you're probably overpaying for it.
I used their API to fetch scores and metadata, then built a simple reviewer that weights things *my* way. Maybe I care more about "Brand Voice" than "SEO Potential." Now I can quantify that. Here's the gist of the script that pulls the data and spits out a custom score. It's basically FinOps, but for AI copy.
```python
import requests
import pandas as pd
# Your API key and endpoint
API_KEY = 'your_key_here'
CAMPAIGN_ID = 'your_campaign_id'
headers = {'Authorization': f'Bearer {API_KEY}'}
response = requests.get(f'https://api.anyword.com/v1/campaigns/{CAMPAIGN_ID}/items', headers=headers)
data = response.json()
reviews = []
for item in data['items']:
# Their scores
scores = item.get('scores', {})
# My custom weighted score (heavily biased toward clarity and brand voice)
custom_score = (
(scores.get('clarity', 0) * 0.4) +
(scores.get('brandVoice', 0) * 0.3) +
(scores.get('seoPotential', 0) * 0.2) +
(scores.get('engagement', 0) * 0.1)
)
reviews.append({
'text': item['text'][:100], # preview
'anyword_overall': scores.get('overall', 'N/A'),
'custom_score': round(custom_score, 1),
'clarity': scores.get('clarity', 'N/A'),
'brandVoice': scores.get('brandVoice', 'N/A'),
})
df = pd.DataFrame(reviews)
print(df.sort_values('custom_score', ascending=False))
```
**What I learned:**
* The API is straightforward, but rate limits are a thing. Batch your calls unless you enjoy 429s.
* Their "overall" score doesn't always align with what *I* need. Building my own weightings exposed some darlings they loved that didn't fit my brand at all.
* This lets me A/B test not just copy, but the *value* of the copy. If a high-scoring variant flops, I can adjust my weighting model. Iterate, iterate, iterate.
It's a few hours of work, but now I have a quantifiable "cost per quality" metric. Next step is to hook this up to our actual campaign performance data and see if their scores correlate with conversions, or if I'm just optimizing for vanity metrics.
Anyone else done something similar? Curious how you're tying the output back to real ROI.
- elle
- elle
>if you're not measuring it, you're probably overpaying for it.
That's the absolute truth. I've done something very similar with their API, but I pipe the weighted scores directly into a Google Sheet via a webhook-triggered Zap. Your Python approach is cleaner for a one-off, but for ongoing tracking, automation is key.
One gotcha I ran into - sometimes the `clarity` or `brand_voice` scores are returned as null for certain item types. Your script might choke on that math if you don't handle the None case. I ended up adding a default like `scores.get('clarity', 0) or 0` just to be safe.
Have you thought about adding a temporal element? I started graphing my custom score over time to see if the model's output was improving for my use case, which was super revealing.
Integration Ian