- Brief in Sheets
- ChatGPT writes 20
- Claude scores rules
Generate and test 20 ad variants from one brief
Turn one campaign brief into 20 Meta and Google ad variants, score each against your brand rules and limits, and queue the best for approval.
Give it a keyword and get a brief built from the pages that rank today: headings, gaps, questions to answer and a target length.
Writers get briefs that are either a keyword and a word count, or the result of a strategist’s two hours of tab-hopping through the top ten results. Briefs written from memory miss what Google is rewarding right now, so articles go out and stall on page two. At agency volume, manual SERP analysis is the bottleneck between keyword research and drafting.
Call the Apify Google Search Results Scraper with the keyword, countryCode, languageCode and maxPagesPerQuery = 1. Save organic URLs, titles, People Also Ask and related searches; drop forum and video results unless they make up three or more of the top ten.
Use LangChain’s AsyncHtmlLoader with Html2TextTransformer to fetch each URL and strip navigation and footers. Record the word count and every H2 and H3 per page before any model sees the text.
Run a chain with with_structured_output over each page to return its angle, H2 list, unique points and content type. Use .batch() with max_concurrency = 5 so a full brief finishes in about two minutes.
Feed all ten outlines into one analysis call. Topics covered by six or more pages become must-cover, topics in one or two pages become differentiation candidates, and People Also Ask questions no page answers become gaps.
Generate the brief with the prompt below, setting the target length to the median word count of the top five pages rounded up to the nearest 250. Include the source URLs so the editor can check any claim.
Create a page in the Briefs database with properties for keyword, target length, status = Ready and assigned writer. Run the script on a cron that picks up rows marked "Needs brief", so strategists only ever type a keyword.
You are analysing one page that ranks for the search "{{keyword}}".
Page URL: {{url}}
Page text: {{page_text}}
Return JSON with:
- "angle": the single promise the page makes to the reader, in one sentence
- "content_type": one of guide, listicle, comparison, tool, product page, other
- "h2s": the H2 headings in order
- "unique_points": up to 3 points this page makes that a typical competitor would not
- "missing": anything a searcher for "{{keyword}}" would expect that this page skips
Base every field on the page text only. If the page is thin or off-topic, set content_type to "other" and leave the lists empty.You are an SEO editor writing a content brief for a freelance writer.
Keyword: {{keyword}}
SERP features and intent signals: {{serp_features}}
Must-cover topics (6+ of top 10): {{consensus_topics}}
Differentiation candidates: {{rare_topics}}
Unanswered questions: {{gap_questions}}
Target length: {{target_words}} words
Write the brief with these sections:
1. Search intent in one sentence, and the format that matches it
2. Recommended title (under 60 characters) and meta description (under 155)
3. Outline with H2s and H3s, marking which sections cover gaps
4. Questions to answer explicitly, quoted from People Also Ask
5. Three angles that would make this piece better than what ranks now
6. Sources the writer should check, with URLs
Do not pad the outline to hit the word count.Turn one campaign brief into 20 Meta and Google ad variants, score each against your brand rules and limits, and queue the best for approval.
Scrape competitor product pages every night with Apify, match them to your SKUs, and update Shopify prices within margin and change limits you set.
Apify scrapes reviews of your products and your competitors', ChatGPT tags each one, and Airtable shows which complaints keep coming up.