Searches the last day's news for your brand and people, archives what it finds and posts a round-up to Slack.
Uses
Claude
Google Sheets
Serper
Slack
Get a daily round-up of your press coverage in Slack
Every day, the workflow searches the last twenty-four hours of news for each term you watch: your brand, your products, the people who speak for you. Each article is archived to the 'Coverage' tab of your spreadsheet the moment it is found, then a round-up goes to Slack with a short read on the tone and anything that needs a response today.
The Slack post lists every headline with its source and link, topped by two or three AI-written sentences that work only from those headlines. Archiving happens before summarising, so a failure late in the run can cost you the commentary but never the record. If the summary cannot be written the links still go out with a note saying so, one failing search term does not cost the others their coverage, and on a quiet day you still get a post saying nothing new was found, so silence never looks like a breakage.
Before the first run you need a Slack channel and a spreadsheet with a 'Coverage' tab to archive into.
searchTerms to blank.Set searchTerms to blank.slackChannelId to blank.Set slackChannelId to blank.archiveUrl to blank.Set archiveUrl to blank.archiveTab to Coverage.Set archiveTab to Coverage.resultsPerTerm to 10.Set resultsPerTerm to 10.searchTerms by a new line and save it as terms.Split searchTerms by a new line and save it as terms.found to an empty list.Set found to an empty list.term in terms:For each term in terms:searchErrorIf a step below fails, save the error as searchErrorterm and save it as cleanTerm.Trim term and save it as cleanTerm.cleanTerm isn't emptyIf cleanTerm isn't emptycleanTerm. Save it as results.Search Google News for cleanTerm. Save it as results.article in results.articles:For each article in results.articles:articleError If a step below fails, save the error as articleErrorarticle.title and save it as headline.Trim article.title and save it as headline.article.link and save it as url.Trim article.link and save it as url.headline isn't empty and url isn't emptyIf headline isn't empty and url isn't emptyline to - headline (article.source) url.Set line to - headline (article.source) url.line to the end of found and save it as found.Add line to the end of found and save it as found.archiveTab in archiveUrl.Add a row to archiveTab in archiveUrl.cleanTerm: articleError as text.Show in the output: Skipped an article for cleanTerm: articleError as text.searchError as text.Show in the output: Could not search for a term: searchError as text.found is emptyIf found is emptyslackChannelId.Send a message to slackChannelId.*Coverage round-up*
Nothing new in the last day.found with a new line and save it as coverage.Join found with a new line and save it as coverage.summaryErrorIf a step below fails, save the error as summaryErrorcoverage'. Save it as written.
Maximum response length: 400written.response_text and save it as summary.Trim written.response_text and save it as summary.slackChannelId.Send a message to slackChannelId.*Coverage round-up* (the length of found as text)
summary
coverageslackChannelId.Send a message to slackChannelId.*Coverage round-up* (the length of found as text)
_Summary unavailable today._
coverage