Build a PR media list from real worldwide news coverage

Search three months of global coverage on your topic, rank the outlets actually writing about it, and draft a tailored pitch for each one.

App
GDELTGoogle SheetsGmailMarketingSalesResearch & MonitoringEmail Automation
PromptCreate

Build me a media list workbench for PR outreach. It is an app I open at the start of a campaign, and it replaces the spreadsheet ritual of hunting down who recently covered my topic, noting the outlet and their latest story, then pitching them. It uses GDELT for the news data, Google Sheets as the shared source of truth for the finished list, and Gmail for pitch drafts. GDELT needs no credentials, so the only connections I make are Google Sheets and Gmail.

The main screen is a search bar where I type a topic or beat, for example industrial robotics or restaurant tech funding, with optional filters for source country and source language. Searching calls the GDELT Search News Articles (DOC 2.0) operation across the last three months of worldwide coverage and rolls the results up by publication using the source domain on each article. GDELT query operators all live inside a single query string, so my country and language filters become sourcecountry: and sourcelang: terms appended to the keywords rather than separate parameters, and the handler should request the maximum article records the list mode allows so the rollup has enough to work with.

The rollup renders as a ranked table of outlets. Each row shows the publication, how many stories it ran on the topic, the date of its most recent story, the average sentiment of its coverage, and its country and language. Rank by story count by default and let me re-sort by recency or sentiment. Next to the table, show a coverage mix panel built from the GDELT Coverage Breakdown by Language or Source Country (DOC 2.0) operation, so I can see at a glance which languages and countries the conversation is happening in and decide where to concentrate.

Clicking an outlet opens a detail panel for that publication. It lists that outlet's actual articles on my topic, fetched with another Search News Articles call scoped by a domain: operator for that publication, each with headline, date, tone, and a link. Beneath that, show the exact sentences where my keywords appeared using the GDELT Context Snippet Search (Context 2.0) operation, also scoped to the domain. Label that section clearly as recent examples, because the Context API only covers the last 72 hours and returns at most one matching sentence per article. The whole point of this panel is that I can see the angle a publication takes before I pitch it.

Every row has a checkbox that adds the outlet to a saved target list which persists in the app across sessions. The target list is its own view with columns I control: tier, status, contact email, and notes. Tier and status are mine to set, with sensible defaults such as Tier 1, Tier 2, and Tier 3 for tier, and Not started, Researching, Pitched, Replied, and Passed for status. GDELT gives me outlets and articles, not individual reporter email addresses, so the contact email is a field I paste in myself, and the pitch action should require it before it will run.

Bake in the practical rules from how good lists actually get built. A focused list beats a mass list, so nudge me toward 15 to 30 target outlets per campaign and warn me once the list runs past 30 rather than blocking me. Media contacts go stale fast, so flag any outlet with no coverage of my topic in the last 30 days as going cold, using the most recent story date already in the rollup. And nothing ever sends on its own: every pitch stops at a draft I review.

The target list has an Export list action. It writes the whole list, one row per outlet with all my columns, to a tab in a Google Sheets spreadsheet I choose using the Append Values operation, then reads that tab back with the Get Values operation and shows me what is now in the sheet plus the time of the last sync. The sheet is the shared source of truth for the team, so the read-back matters as much as the write.

Each outlet also has a Draft pitch action, and that one kicks off a background agent inside the app. The agent takes the outlet and my topic, searches that outlet's recent coverage of the topic in GDELT, reads what they actually published and the angle they took, then writes a tailored pitch that references the specific stories they ran instead of generic flattery. It creates the email in Gmail with the Create a Draft operation, addressed to the contact email on that row, and it never sends. While it works, show a running status on the row, and when it finishes show that a draft exists, the subject line and pitch text it produced, and a link to open the draft in Gmail.

One practical note: GDELT throttles bursty clients, so keep the news calls serial rather than parallel and cache each search result set in the app, so clicking between outlets in the table does not re-run the same query.

What does this prompt do?

  • Type a topic or beat and see every publication that covered it in the last three months, ranked by how many stories they ran, how recently, and how positive the coverage was
  • Click any outlet to read its actual articles on your topic and the exact sentences where your keywords appeared, so you know the angle a publication takes before you pitch it
  • Tick outlets into a saved target list with your own tier, status, and contact columns, kept to a focused 15 to 30 per campaign instead of a mass blast
  • Push the finished list to a Google Sheets tab and read it straight back, so the sheet stays the shared source of truth for the team
  • Hit Draft pitch on any outlet and a background assistant reads their recent coverage, writes a pitch referencing their specific stories, and leaves it in your Gmail drafts for review

What do I need to use this?

  • A Google account with Google Sheets, plus a spreadsheet you want the target list written into
  • A Gmail account, used only to save drafts you review and send yourself
  • Nothing to sign up for on the news side, the coverage data comes from a free public global news archive
  • A contact email for each outlet, which you paste onto the row yourself before drafting a pitch

How can I customize it?

  • Filter searches by country or language so you only see outlets in the markets you actually sell into
  • Change what counts as going cold, the default flags any outlet with no coverage in the last 30 days
  • Rename the tier and status options to match how your team runs campaigns
  • Adjust the tone, length, and angle of the drafted pitch, or add your boilerplate and links

FAQs

Will this send emails to journalists automatically?
No. Every pitch stops at a Gmail draft that you open, edit, and send yourself. Nothing leaves your account without you clicking send.
Does it give me individual reporter email addresses?
No. The news data gives you publications and their stories, not personal contact details. The app works at the outlet level and gives you a column to paste in the contact email you already have or find.
How far back does the coverage search go?
The main outlet search covers a rolling three months of worldwide news. The keyword sentence snippets in the detail panel come from the last 72 hours, so they are labelled as recent examples rather than a full history.
Do I need a paid media database like Cision or Roxhill?
No. This is built for teams without one. Instead of a licensed contacts database, it shows you who has genuinely published on your topic lately, which is the same research a manual media list starts from.
Does it work for non-English or international coverage?
Yes. The underlying news archive spans 65+ languages and worldwide sources, and you can filter any search by source country or language.
How many outlets should I put on a list?
The app nudges you toward 15 to 30 per campaign and warns you past that. A short, well-researched, tiered list consistently outperforms a mass list of unvetted contacts.

Related templates

Prospecting desk that builds account lists from the live web

Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.

Hyperbrowser
HubSpot
Google Sheets
App
Share of voice dashboard for your brand and competitors

See how your brand's news coverage and sentiment stack up against four competitors, then let an assistant write the weekly report for you.

GDELT
Notion
Slack Bot
App
Influencer campaign roster board with AI creator briefs

Drag creators through Sourced to Wrapped on a board grouped by campaign, with audience stats on every card and a one-click brief for each creator.

HypeAuditor
Google Sheets
Notion
App
Morning repricing console for Shopify with margin-safe rules

Pick a repricing rule, send an assistant out to check competitor pages, then approve the new prices that clear your margin floor.

Hyperbrowser
Shopify
Google Sheets
App
Pre-flight bounce check before you launch a cold email sequence

See the projected bounce rate for any outbound send before it goes out, and keep the launch button locked until the list is clean enough to be safe.

Hunter
Google Sheets
App
Compare every Hireflix candidate for a role side by side

A calibration board that lines up every candidate's answer to the same question, hides names until your panel has scored, and writes the agreed rating back.

Hireflix
Gmail
App

Stop building pitch lists by hand in a spreadsheet.

Go from a topic to a vetted, tiered target list with drafted pitches in a single sitting.