What this workflow does
This n8n workflow collects open journalist source requests every morning at 8:00, has OpenAI score each one against your real expertise, saves every request to Google Sheets and sends a drafted pitch to Telegram for the few worth answering. It runs on Journalist Request Finder - HARO Alternative for Digital PR ($0.004 per journalist request delivered) and the template itself is free.
๐ How it works
Since HARO closed, journalist requests are spread across SourceBottle, Bluesky and Mastodon. Finding them is the easy half. Deciding which ones you can answer with authority, and writing the reply before the deadline, is what takes the time.
Each morning the workflow collects the open requests for your topics, drops the ones it has already shown you, and asks OpenAI to score each from 0 to 100 on whether you can answer it first hand, naming the angle to lead with. Every request and its score goes to Google Sheets, the rejects included, so you can see what was filtered out.
Requests at or above minScore, at most maxPitches a day, get a short reply drafted in your voice from the credentials you wrote, with no invented statistics. Each draft arrives in Telegram as its own message with a link to the request, ready for you to read, edit and send.
The 13 nodes, in order
- Schedule TriggerEvery morning at 8am
- Edit FieldsSet your profile
- ApifyFind journalist requests
- Remove DuplicatesSkip requests already seen
- Basic LLM ChainScore it against your expertise
- Edit FieldsFormat the row
- Google SheetsSave every scored request
- FilterKeep the strong matches
- OpenAI Chat ModelOpenAI model
- LimitCap the daily pitches
- Structured Output ParserScore format
- Basic LLM ChainDraft the pitch
- TelegramSend the draft to Telegram
๐ฅ Get the workflow
Three ways to import it. They all give you the same workflow, published 2026-10-05.
- n8n.io: open the template and choose "Use for free". It opens in your n8n Cloud or self-hosted instance.
- Paste: copy the JSON, click an empty n8n canvas and press Ctrl+V (Cmd+V on a Mac).
- Import from URL: in the workflow menu choose "Import from URL" and paste
https://automationbyexperts.com/static/n8n/journalist-request-pitches-openai-telegram.json
โ๏ธ The settings you edit
Every value you change lives in one node, Set your profile. These are the defaults the template ships with.
| Setting | Default | What it does |
|---|---|---|
yourName | PASTE_YOUR_NAME_HERE | Your name, used to sign the drafts. |
yourRole | Founder of a small agency doing technical SEO for B2B SaaS companies | One line on what you do. The scorer reads it to judge fit. |
yourCredentials | Nine years in SEO, 40+ SaaS migrations, I run the monthly crawl data for 30 sites and have the before and after numbers for most of them. | Specific proof: years, numbers, what you have built. The drafts quote from it. |
topics | SaaS, marketing, small business | Comma separated topics to search requests for. |
sources | sourcebottle, bluesky | Comma separated request sources: sourcebottle, bluesky, mastodon. |
maxRequests | 100 | Most requests one run returns, which is also what caps the Apify cost of a run. |
minScore | 55 | Requests scoring at or above this get a drafted pitch. 55 to 65 is the useful band. |
maxPitches | 5 | Most drafts sent per day. |
googleSheetUrl | PASTE_YOUR_GOOGLE_SHEET_URL_HERE | The URL of the empty Google Sheet that receives every scored request. |
telegramChatId | PASTE_YOUR_TELEGRAM_CHAT_ID_HERE | The Telegram chat the drafts are sent to. |
๐ What lands in your Google Sheet
One row per new request, with these 11 columns. The header row is written on the first run, so start with an empty sheet.
See real records from a Journalist Request Finder - HARO Alternative for Digital PR run โ
๐ How to set it up
- Get the workflow into n8n
Open it on n8n.io and choose "Use for free", or copy the workflow JSON from this page and paste it onto an empty n8n canvas.
- Connect Apify and OpenAI
Create a free Apify account and connect it in the Find journalist requests node, then connect an OpenAI account in the OpenAI model node.
- Connect Google Sheets and Telegram
Create an empty Google Sheet and paste its URL into googleSheetUrl. Create a bot with @BotFather, connect it, and paste your chat id into telegramChatId.
- Write your profile, run once, activate
Fill in yourName, yourRole and yourCredentials as specifically as you can, run the workflow once by hand and read the drafts. Then activate it.
No Apify account yet? Create one free โ
๐ต What it costs to run
maxRequests to lower that ceiling.
The Apify free plan returns 25 requests per run. OpenAI tokens are billed on your own OpenAI account.
โ Questions about this workflow
What is a good HARO alternative?
Journalist requests now appear on SourceBottle and under the #journorequest hashtag on Bluesky and Mastodon. This workflow collects them from those sources every morning so you do not have to check each one.
Does it send the pitch for me?
No. Each draft arrives in Telegram for you to read and send yourself. A pitch goes out under your name, so it should never be sent unread.
Why are so few requests scored high?
The scorer is strict on purpose: most requests are outside your expertise. If a week goes quiet, lower minScore a little.
Can I use Claude or Gemini instead of OpenAI?
Yes. Swap the OpenAI model node for any chat model node in n8n. Nothing else changes.
What does it cost to run?
The workflow is free. Each run bills the Journalist Request Finder on your Apify account per request delivered, capped by maxRequests, plus OpenAI tokens for the scoring and drafts on your own OpenAI account.
๐งช Run it once without n8n
To see the data before building a schedule around it, open one of these ready-made Journalist Request Finder - HARO Alternative for Digital PR tasks on Apify.
๐ More n8n templates
Need this for a different site?
A workflow needs an actor for the site first. Tell me which one and what the alert should say.