Weekly competitor SEO digest in Slack
Every Monday at 9am, get a short Slack message highlighting what changed in your competitors' SEO over the last week.
Build an agent workflow that posts a weekly competitor SEO digest to Slack every Monday at 9am, replacing the manual Monday ritual of opening Semrush, clicking through each competitor, and writing it up by hand.
Trigger: cron, every Monday at 9:00am in the user's timezone.
Configurable inputs (expose these as parameters at the top of the agent instructions):
1. competitor_domains: a list of competitor root domains to track, for example ["competitor-a.com", "competitor-b.com", "competitor-c.com"]. Default to a placeholder list the user is expected to edit.
2. database: the Semrush regional database to query. Default to "us". Common alternatives: "uk", "de", "fr", "ca", "au".
3. slack_channel: the Slack channel (name or ID) where the digest should be posted.
4. our_domain: the user's own domain, used to detect keywords competitors have just taken from us.
Each Monday, for every domain in competitor_domains, the agent should:
A. Call Semrush "Get Domain Organic Pages" against the configured database to fetch the competitor's top-ranking URLs (page URL, organic traffic share, number of keywords). Cap at the top 50 pages per domain to keep API unit spend reasonable.
B. Call Semrush "Get Domain Organic Search Keywords" to fetch keywords the competitor ranks for in the top 100, including position, previous position, search volume, and the URL that ranks. Cap at the top 200 keywords.
C. Call Semrush "Get Domain Paid Search Keywords" to fetch the keywords the competitor is currently bidding on in Google paid search, including position and traffic share. Cap at the top 100 keywords.
After collecting this week's data, load last week's snapshot from the agent's persistent memory (keyed by domain and database). If no prior snapshot exists, store this week's data as the baseline and post a short "baseline established" Slack message instead of a diff.
When a prior snapshot exists, diff this week against last week per competitor and identify meaningful changes such as: a new page in the top 10 that did not exist last week (likely a fresh pillar page), an organic keyword that climbed into the top 10 this week (especially if our_domain previously held that keyword, which signals a position we just lost), a paid search keyword the competitor started bidding on this week that they were not bidding on last week, and any large traffic share jump on an existing page.
Rank all detected changes by impact (search volume, traffic share, whether it is a take from our_domain, whether it is a brand-new investment). Pick the top three or four overall, across all competitors. The point is a tidy digest, not a data dump.
Compose a single Slack message that opens with a one-line summary ("3 meaningful moves from your competitors this week"), then lists each highlighted change as its own short bullet. Each bullet should name the competitor, describe what changed in plain English, and explain why it matters in one sentence. Use Slack mrkdwn formatting (*bold* for competitor names, <url|text> for links to the ranking page or keyword). End with a single italic footer noting the regional database and the snapshot date so the reader has context.
Send the message using the Slack "Send a Message" operation to the configured slack_channel. Then overwrite the stored snapshot with this week's data so next Monday's run can diff against it.
Handling: if Semrush returns "ERROR 50 :: NOTHING FOUND" for a competitor, treat it as an empty result and skip that competitor in the digest. If the API unit balance is exhausted, post a single Slack message noting that Semrush units ran out instead of failing silently.
Additional information
What does this prompt do?
- Tracks the competitor domains you care about and watches their top-ranked pages, organic keywords, and paid bids on Semrush.
- Compares this week's data against last week's snapshot so you only see what actually changed.
- Picks the three or four most meaningful moves (a new pillar page, a keyword they took from you, a fresh paid term) and ranks them by impact.
- Posts a single tidy Slack message every Monday at 9am so your team starts the week ahead instead of clicking through Semrush tabs.
What do I need to use this?
- A Semrush subscription with API access (Business plan or the API add-on).
- A Slack workspace and a channel where the digest should land.
- A short list of competitor domains you want to track (typically three to six).
How can I customize it?
- Change the day or time the digest runs, or switch from weekly to daily.
- Swap the competitor list, add or remove domains, or group by product line.
- Switch the regional database from US to UK, DE, FR, or another market.
- Pick a different Slack channel, post to a private channel, or send as a DM.
Frequently asked questions
Will this work with a Semrush Pro plan?
Can it watch competitors in non-US markets?
How does it know what changed since last week?
Can I track more than five competitors?
Can it post to a private channel?
Stop spending Monday morning in Semrush tabs.
Connect Semrush and Slack once, and Geni runs your competitor SEO digest every Monday at 9am.