---
title: "Score journalist requests and draft press pitches with OpenAI"
slug: "journalist-request-pitches-openai-telegram"
type: "n8n-workflow-template"
url: "https://automationbyexperts.com/n8n/journalist-request-pitches-openai-telegram"
n8n_url: "https://n8n.io/workflows/20338-score-journalist-requests-and-draft-press-pitches-with-apify-openai-google-sheets-and-telegram/"
workflow_json: "https://automationbyexperts.com/static/n8n/journalist-request-pitches-openai-telegram.json"
actor: "Journalist Request Finder - HARO Alternative for Digital PR"
actor_url: "https://automationbyexperts.com/apify/journalist-request-finder"
schedule: "every morning at 8:00"
apps: ["Apify", "OpenAI", "Google Sheets", "Telegram"]
published: "2026-10-05"
---

# Score journalist requests and draft press pitches with OpenAI

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.

**Use it on n8n.io:** [Score journalist requests and draft press pitches with Apify, OpenAI, Google Sheets and Telegram](https://n8n.io/workflows/20338-score-journalist-requests-and-draft-press-pitches-with-apify-openai-google-sheets-and-telegram/)  
**Workflow JSON:** https://automationbyexperts.com/static/n8n/journalist-request-pitches-openai-telegram.json  
**Actor it runs:** [Journalist Request Finder - HARO Alternative for Digital PR](https://automationbyexperts.com/apify/journalist-request-finder) ($0.004 per journalist request delivered)  
**Runs:** every morning at 8:00

## 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.

## Nodes in the workflow

1. Every morning at 8am (Schedule Trigger)
2. Set your profile (Edit Fields)
3. Find journalist requests (Apify)
4. Skip requests already seen (Remove Duplicates)
5. Score it against your expertise (Basic LLM Chain)
6. Format the row (Edit Fields)
7. Save every scored request (Google Sheets)
8. Keep the strong matches (Filter)
9. OpenAI model (OpenAI Chat Model)
10. Cap the daily pitches (Limit)
11. Score format (Structured Output Parser)
12. Draft the pitch (Basic LLM Chain)
13. Send the draft to Telegram (Telegram)

## Settings you edit

| 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 sit… | 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 b… |
| `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. |

## Google Sheet columns

Request, Score, Why, Angle, Source, Requester, Requester type, Deadline, Days left, What they need, Respond URL

## How to set it up

1. **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.
2. **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.
3. **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.
4. **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.

## What it costs

The workflow is free. Each run bills the actor on your own Apify account at $0.004 per journalist request delivered. At the current price a full run of 100 requests costs $0.40, so 30 runs a month come to at most about $12.00. The Apify free plan returns 25 requests per run. OpenAI tokens are billed on your own OpenAI account.

## FAQ

### 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.

## More n8n templates

- [Weekly AI search readiness audit with fix tickets in Google Sheets](https://automationbyexperts.com/n8n/site-ai-search-audit-fix-tickets-google-sheets): This n8n workflow audits your site every Monday at 7:00 for classic SEO, AI engine readiness (GEO) and answerability (AEO), compares every page with the previous week, and has OpenAI write a prioritized fix ticket for each page that dropped, sits under your floor or has a critical issue.
- [Qualify target accounts from their job postings with OpenAI](https://automationbyexperts.com/n8n/job-postings-account-qualification-openai-google-sheets): This n8n workflow reads your target account list from Google Sheets every Monday at 8:00, pulls each company's open roles from the job board it really uses, has OpenAI score whether that hiring signals a need for what you sell, and sends a ready opener to Telegram for the accounts worth contacting.
- [Spitogatos.gr listing alerts in Telegram and Google Sheets](https://automationbyexperts.com/n8n/spitogatos-alerts-telegram-google-sheets): This n8n workflow checks Spitogatos.gr every morning at 8:00 for listings first posted in the last 24 hours in the areas you pick, saves each one to Google Sheets with its price per m² and the agent's phone number, and sends a summary to Telegram.
- [Wallapop alerts in Telegram and Google Sheets](https://automationbyexperts.com/n8n/wallapop-alerts-telegram-google-sheets): This n8n workflow checks Wallapop every hour for new listings that match your keywords and price range, saves every new item to a Google Sheet, and sends the ones at or under your alert price to Telegram in one message.
- [AutoTrader.ca used car alerts in Telegram and Google Sheets](https://automationbyexperts.com/n8n/autotrader-ca-car-alerts-telegram-google-sheets): This n8n workflow searches AutoTrader.ca every morning at 7:00 for cars listed in the last day that match your makes, budget, mileage and location, saves each new car to Google Sheets, and sends the ones priced below AutoTrader's market median to Telegram.
- [Reddit buying-intent leads in Google Sheets and Slack](https://automationbyexperts.com/n8n/reddit-leads-google-sheets-slack): This n8n workflow searches Reddit every morning at 8:00 for posts and comments from people looking to buy what you sell, scores each one 0 to 100 for buying intent, saves every new lead to Google Sheets and posts the hottest ones to Slack as one digest.

---

Part of [AutomationByExperts](https://automationbyexperts.com) - see [all n8n templates](https://automationbyexperts.com/n8n) or [request a new one](https://automationbyexperts.com/suggest).
