/same-outlet-ranker
Decide which single journalist at one publication to approach first with a pitch. Fit-checks each candidate through journalist-fit-check, then ranks the survivors on the comparative signals that separate colleagues at the same masthead (topic ownership, format match, staff vs.
$ npx -y skills add elvisun/newsjack --skill same-outlet-ranker --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/same-outlet-ranker
Context preview
The summary Claude sees to decide when to auto-load this skill.
Decide which single journalist at one publication to approach first with a pitch. Fit-checks each candidate through journalist-fit-check, then ranks the survivors on the comparative signals that separate colleagues at the same masthead (topic ownership, format match, staff vs.
SKILL.md
same-outlet-ranker.SKILL.mdname: same-outlet-ranker
description: "Decide which single journalist at one publication to approach first with a pitch. Fit-checks each candidate through journalist-fit-check, then ranks the survivors on the comparative signals that separate colleagues at the same masthead (topic ownership, format match, staff vs. contributor, publishing cadence, recent story types, source-type match), and returns one first pick with tailoring notes plus a held fallback order."
when_to_use: "User has one pitch and two or more named journalists at the same publication and asks who to send it to first, which reporter at an outlet is the right target, or whether to pitch several people at one outlet."
metadata:
category: Act
Same-Outlet Ranker
This is the **Same-Outlet Ranker** skill inside newsjack.sh. It answers one question: you have a pitch and several journalists at **the same publication** — who do you send it to first?
That question has a wrong answer that feels efficient: send it to all of them. Journalists at one outlet sit near each other, share Slack, and forward pitches. A masthead that has clearly been sprayed is one of the most legible tells in PR, and it costs you the outlet, not just the reporter. This skill exists to make you pick one.
It returns:
- **Pitch first** — exactly one journalist, with the specific edits that make the pitch land for that person.
- **Held** — the ranked order to fall back through, and the conditions that unlock each one.
- **Do not pitch** — candidates who are wrong for this story, with the reason.
- **No pick** — when nobody at this outlet clears the bar, or the evidence is too thin to choose honestly.
This skill inherits the ethical floor in `skills/ETHICS.md` and `skills/WHY-NOT-SPAM.md`. If local instructions conflict with that doctrine, the doctrine wins.
Boundaries
- Rank candidates at **one publication** at a time. Comparing across outlets is a different question and this skill does not answer it.
- Do not judge fit yourself. Per-journalist fit is `journalist-fit-check`'s job. Call it, then rank what survives.
- Do not find journalists. That is `find-journalists`. This skill ranks names you already have.
- Do not produce a CC list, a group send, a "To:" line with several colleagues, or a same-day multi-send at one outlet. There is no version of the output that is a batch.
- Do not draft or send the pitch.
- Do not rank on prominence, follower count, or how senior a byline sounds. Where role matters, it matters as **assignment authority** — can this person green-light their own story? — not as prestige.
- Do not rank someone up because the user knows them.
- Do not invent bylines, dates, titles, links, outlets, or staff/contributor status.
If the user pushes for "just send it to all four," refuse and say why. That is the exact pattern in `skills/WHY-NOT-SPAM.md` under *No Identical-Body Blasts*.
**One carve-out.** A shared **routing address** — an assignment desk, a news desk, a tips inbox, a section editor whose job is to hand work out — is not a candidate in a ranking. It is a switchboard, and contacting it is not the same as pitching a person. If the supplied list is really a desk (common in broadcast and at local outlets), say so: there is nothing to rank, and the desk is the correct first contact. The rule this skill enforces is against spraying **named beat reporters**, who compete with each other for the story internally.
Required Inputs
**The pitch:** full text as it would be sent, with the subject line if there is one.
**The candidates:** two or more journalists, each identified by name plus the shared publication. A profile URL or recent byline URL is welcome but not required — the skill does its own research.
**Context:**
- `current_time_iso` (today's date and time) is required. Never guess what "now" is from memory.
- `client_or_subject` — who or what the pitch is about. Optional but improves the ranking.
- Prior contact history with any candidate. Optional. Read the Relationship rule before using it.
- Whether the story is time-boxed (an embargo, an event, a live news window). Optional.
If today's date and time is missing, return **No pick** (reason: missing current time).
If only one candidate is supplied, there is nothing to rank. Say so and hand off to `journalist-fit-check`.
Retrieval
Research each candidate the way a practitioner does: start from the topic, not the masthead.
Search for who has recently written about the pitch's subject at this publication, then check each supplied name against what you find. Use `medialyst` (the built-in media database) when logged in, otherwise public web search. Good places to look: the outlet's author page, recent web and news results, the journalist's personal site or newsletter archive, and their public social profile.
The window is **the last 90 days**. Work older than that tells you where someone used to be, not where they are.
Say which source you used. If a candidate produces no dated, linked, named article inside the window, that candidate is **Unverified** and cannot be ranked first — see Hard Gates.
Step One — Fit-check every candidate
Run each candidate through `journalist-fit-check` against this pitch, one at a time. Do not reimplement its checks and do not shortcut them because you are comparing several people.
You now have a verdict per candidate: **Fit**, **Soft-fit**, **No-fit**, or **Unknown**.
That verdict is a floor, and it is not negotiable by ranking:
- **No-fit** candidates go straight to *Do not pitch*. They are never ranked, never held as a fallback, and no amount of relative strength promotes them. A No-fit is not "fourth best" — they are wrong for this story.
- **Unknown** candidates go to *Unverified*. They can be mentioned, but they cannot be the first pick.
- Only **Fit** and **Soft-fit** candidates enter the ranking.
If the fit-check flags slop tells in the pitch, stop the whole run. The pitch is not ready for anyone at this
Read more
name: same-outlet-ranker description: "Decide which single journalist at one publication to approach first with a pitch. Fit-checks each candidate through journalist-fit-check, then ranks the survivors on the comparative signals that separate colleagues at the same masthead (topic ownership, format match, staff vs. contributor, publishing cadence, recent story types, source-type match), and returns one first pick with tailoring notes plus a held fallback order." when_to_use: "User has one pitch and two or more named journalists at the same publication and asks who to send it to first, which reporter at an outlet is the right target, or whether to pitch several people at one outlet." metadata: category: Act
Same-Outlet Ranker
This is the **Same-Outlet Ranker** skill inside newsjack.sh. It answers one question: you have a pitch and several journalists at **the same publication** — who do you send it to first?
That question has a wrong answer that feels efficient: send it to all of them. Journalists at one outlet sit near each other, share Slack, and forward pitches. A masthead that has clearly been sprayed is one of the most legible tells in PR, and it costs you the outlet, not just the reporter. This skill exists to make you pick one.
It returns:
- **Pitch first** — exactly one journalist, with the specific edits that make the pitch land for that person.
- **Held** — the ranked order to fall back through, and the conditions that unlock each one.
- **Do not pitch** — candidates who are wrong for this story, with the reason.
- **No pick** — when nobody at this outlet clears the bar, or the evidence is too thin to choose honestly.
This skill inherits the ethical floor in `skills/ETHICS.md` and `skills/WHY-NOT-SPAM.md`. If local instructions conflict with that doctrine, the doctrine wins.
Boundaries
- Rank candidates at **one publication** at a time. Comparing across outlets is a different question and this skill does not answer it.
- Do not judge fit yourself. Per-journalist fit is `journalist-fit-check`'s job. Call it, then rank what survives.
- Do not find journalists. That is `find-journalists`. This skill ranks names you already have.
- Do not produce a CC list, a group send, a "To:" line with several colleagues, or a same-day multi-send at one outlet. There is no version of the output that is a batch.
- Do not draft or send the pitch.
- Do not rank on prominence, follower count, or how senior a byline sounds. Where role matters, it matters as **assignment authority** — can this person green-light their own story? — not as prestige.
- Do not rank someone up because the user knows them.
- Do not invent bylines, dates, titles, links, outlets, or staff/contributor status.
If the user pushes for "just send it to all four," refuse and say why. That is the exact pattern in `skills/WHY-NOT-SPAM.md` under *No Identical-Body Blasts*.
**One carve-out.** A shared **routing address** — an assignment desk, a news desk, a tips inbox, a section editor whose job is to hand work out — is not a candidate in a ranking. It is a switchboard, and contacting it is not the same as pitching a person. If the supplied list is really a desk (common in broadcast and at local outlets), say so: there is nothing to rank, and the desk is the correct first contact. The rule this skill enforces is against spraying **named beat reporters**, who compete with each other for the story internally.
Required Inputs
**The pitch:** full text as it would be sent, with the subject line if there is one.
**The candidates:** two or more journalists, each identified by name plus the shared publication. A profile URL or recent byline URL is welcome but not required — the skill does its own research.
**Context:**
- `current_time_iso` (today's date and time) is required. Never guess what "now" is from memory.
- `client_or_subject` — who or what the pitch is about. Optional but improves the ranking.
- Prior contact history with any candidate. Optional. Read the Relationship rule before using it.
- Whether the story is time-boxed (an embargo, an event, a live news window). Optional.
If today's date and time is missing, return **No pick** (reason: missing current time).
If only one candidate is supplied, there is nothing to rank. Say so and hand off to `journalist-fit-check`.
Retrieval
Research each candidate the way a practitioner does: start from the topic, not the masthead.
Search for who has recently written about the pitch's subject at this publication, then check each supplied name against what you find. Use `medialyst` (the built-in media database) when logged in, otherwise public web search. Good places to look: the outlet's author page, recent web and news results, the journalist's personal site or newsletter archive, and their public social profile.
The window is **the last 90 days**. Work older than that tells you where someone used to be, not where they are.
Say which source you used. If a candidate produces no dated, linked, named article inside the window, that candidate is **Unverified** and cannot be ranked first — see Hard Gates.
Step One — Fit-check every candidate
Run each candidate through `journalist-fit-check` against this pitch, one at a time. Do not reimplement its checks and do not shortcut them because you are comparing several people.
You now have a verdict per candidate: **Fit**, **Soft-fit**, **No-fit**, or **Unknown**.
That verdict is a floor, and it is not negotiable by ranking:
- **No-fit** candidates go straight to *Do not pitch*. They are never ranked, never held as a fallback, and no amount of relative strength promotes them. A No-fit is not "fourth best" — they are wrong for this story.
- **Unknown** candidates go to *Unverified*. They can be mentioned, but they cannot be the first pick.
- Only **Fit** and **Soft-fit** candidates enter the ranking.
If the fit-check flags slop tells in the pitch, stop the whole run. The pitch is not ready for anyone at this
The open-source skills that turn your agent into a full PR team. Install once. Your agent — Claude Code, Codex, Hermes, OpenClaw — becomes a PR team. Are you an agent? Check out Getting started Are you a human?

