What it is and why it matters
Big companies end up in the papers partly because they have a press office: people who read the industry news every morning and, when something comes out that the company can speak to with real expertise, call the right journalist with a comment ready. The technique has a name, newsjacking: hooking onto a story of the day to get into the coverage. It only works if you get there early and actually have something to say.
Newsjack is an open-source project on GitHub (elvisun/newsjack, MIT licence) that puts this work inside your agent. It is a set of skills, meaning instructions in text files that Claude Code reads and follows, plus a small command-line program. You tell it once who you are, who your competitors are and what you have the standing to talk about. It looks for news in your space from the last 24 hours, throws out the old or off-topic stories, tells you which ones you can weigh in on, suggests how to tell them and helps you check the pitch before you send it.
It is for people who do everything themselves: a founder, an indie hacker, a small team with no press office and no budget for an agency. It does not write to journalists for you and it does not guarantee you an article. It takes away the longest part, reading everything every day and working out what is worth it, and leaves the decision to you.
1. Install it in Claude Code
There are two ways. The lighter one is the plugin: it gives you the skills for writing and checking pitches. In a Claude Code session, type these two commands, one at a time:
/plugin marketplace add elvisun/newsjack /plugin install newsjack@newsjack
The first adds the repository as a plugin catalogue. The second opens the plugin panel, where you choose where to install it. If Claude Code asks you to reload, do it with /reload-plugins.
Scheduled scanning, on the other hand, needs the newsjack program on your computer. The README offers a one-line installer (curl -fsSL newsjack.sh | bash), which downloads a script and runs it straight away. Before you run a command like that, read install.sh in the repository: that is the rule for any script taken from the internet. I prefer to have Claude read it all first and decide afterwards. The full package also copies the same skills into Claude Code, so if you go this way you do not need the plugin.
I want to install Newsjack (https://github.com/elvisun/newsjack) to monitor the news in my industry. Before running anything, read the README, docs/getting-started.md and install.sh, and tell me in plain words what it installs, in which folders and what it downloads from the internet. Wait for my go-ahead, then install it and check that newsjack --version responds. Do not connect any external accounts: for now I want to try it without.
One thing to know: according to the README, the version installed with curl updates itself from the latest GitHub release before each run. If you want to keep the version you checked, set the variable NEWSJACK_AUTO_UPDATE=0.
2. The profile, once
This is where it all happens. The newsjack-monitor-setup skill works as a guided setup: it asks you a few questions and saves a profile that the scan will read again every time. It asks for:
- Company name, website and one sentence on what you do.
- Six to eight broad topics in your space, two or three words each: subjects that last, not today's headline and not product names.
- Three to six competitors, or big neighbouring companies whose moves affect you.
- Two to five reasons you have the standing to speak: real expertise, your own data, many customers, hands-on experience. «We use AI» is not enough.
- Two to five pieces of proof you can show (a page, a customer case, a data point) and one to three people who can talk to a journalist.
- The sources to read: two to five RSS feeds, which it picks with you from a catalogue, plus news search.
Next to the profile it creates a brief.md file, which is yours: what you pitch, what you never pitch, how you want to see the results. The scan reads it on every run. If one day a type of story annoys you, you write it there and it does not come back.
Use the newsjack-monitor-setup skill to create my company's profile. Company: <name>, website <address>. In one sentence: <what we do and for whom>. Competitors: <3-6 names>. Why I have the standing to speak: <the expertise, data or experience I really have>. Proof I can show: <pages, cases, public numbers>. I never want to comment on: <topics to avoid>. Ask me one question at a time, do not make up anything I have not told you, and show me the profile and the brief.md before saving.
3. The scan, every morning if you like
Once the profile is done, the setup asks how often to run. There are three choices:
- At 7am and 2pm: the recommended one, it catches the morning news and the early afternoon developments.
- Every morning at 7am: one digest a day.
- Every hour: only if you have the material and the time to react fast.
Times are in your time zone. Scheduled runs happen inside Claude Code, not in the system cron. Then it does a dry run, which calls no sources, and a first real run, which it shows you straight away.
The most important rule is the 24-hour window. For each story, the scan looks for when it first went public, and wants at least two independent sources before calling it fresh. A story picked up today but born a week ago is old. Stories without a reliable date stay out, and the report tells you why.
Run a Newsjack scan for my profile now with the newsjack-detector skill. When you are done, tell me: where the run.md file is, whether the first filter ran on a low-cost model or on the current model, and whether every story shown has a verified date within the last 24 hours. Then summarise the pitch-ready stories for me in plain English, one line each.
4. Read the news report
The report splits the news into three groups:
- Pitch-ready: fresh stories you have the standing to speak on, each with two or three ways to tell it and what you need to do so.
- Big stories: the big news of the day, but where the link to you is not confirmed. They are suggestions, you decide.
- Watch: fresh but not for you, for example competitor press releases or topics outside your field. At the bottom there is also what was dropped and why.
In the example published on the project's GitHub, a real scan for the company Chatbase: 80 stories collected, 58 pass the first filter, 16 are really from the last 24 hours, and in the end 3 pitch-ready stories remain, 4 big stories and 8 to watch. Of 15 fresh stories, 12 were not for them, and the report says so without inflating. That honesty is what makes it useful.
5. From the story to the pitch
How to tell it
The angle-generator skill takes one fact and looks for 3 to 7 genuinely different stories, each shaped for the topic a certain kind of journalist covers. In the report you often find three forms: the 24-hour reaction, to send within the day; the explainer, a piece that makes clear how the problem works; the contrarian take, a sharp position that has to survive the question «are you saying that because you sell the thing?».
Take story number <n> from today's report and use angle-generator. Keep only the ways of telling it that I can back with the proof in my profile; for each one tell me what kind of journalist it interests and what I am missing. Then write a short pitch for the best one: subject line, five lines, who I am and why I am the one speaking. No press-release phrases.
The meanest editor
Before sending anything, I run it through meanest-editor. It reads the pitch like an impatient journalist looking for a reason to delete it: a score from 1 to 10, the three worst problems quoted line by line, a new opening already written and what to do next. The skill says most drafts land between 3 and 6. Below 8, according to the skill, the pitch needs rewriting.
Use meanest-editor on this pitch and be harsh. Then use fact-check on every figure and every claim: flag the ones you cannot verify with a source. <paste the pitch here>
One journalist at a time
The last check is journalist-fit-check: one person and one pitch at a time. It looks for a real, dated article with that journalist's byline from the last 90 days, and answers with one of four results: fit, soft fit (with the edits to make), no fit, unknown. If you give it fifty names, it checks them one by one. It sends nothing: you write and send the email yourself.
Use journalist-fit-check for this journalist and this pitch. Journalist: <name and outlet, or the link to one of their recent articles>. Today is <date and time>. Pitch: <paste here>. I want the recent article you base your answer on, with date and link, and the exact edits if it is a soft fit.
6. The limits, stated plainly
- It is not light. A scan puts many assistants to work at once, in chunks. In Claude Code the first filter, the one that throws out the junk, goes to Haiku, the cheapest model; the date research and the final judgement use a stronger model. If the cheap pass is not possible, everything runs on the current model and uses more: the report has to tell you. Start with one scan a day and watch what it costs you in tokens.
- It works with no external accounts, but some things work better with one. Medialyst, the service of the people who maintain the project, adds news search with date and author and journalist lists: there is a free tier with some credits, and lists only use credits after you approve them. X trends need the X API, which is paid. Without these, search uses the RSS sources and Claude's web search, with less certainty about dates.
- No tool guarantees you an article. It helps you choose well and write better; the yes comes from the journalist.
- The project does not say anywhere that it covers Italian outlets well: the example and the feed catalogue look mostly at English-language sites. Try it on your industry for a few days, and if Italian sources are missing, add the RSS feeds of the outlets you read.
Common mistakes
- Filling the profile with merits you cannot prove. The scan will suggest stories you then cannot stand behind in front of a journalist.
- Putting today's headline or your product name among the topics. Topics are subjects that last.
- Sending the same pitch to everyone. One journalist at a time, with a recent article of theirs as proof.
- Starting with an hourly scan and running out of tokens. Better one a day, then see.
Checklist
- install.sh read before installing
- Profile with broad topics, competitors and real reasons to speak
- brief.md with what you never pitch
- One scan a day for the first week, with tokens kept in check
- Every pitch run through meanest-editor and fact-check
- Every journalist checked on their own, with an article of theirs from the last 90 days
Frequently asked questions
Do I need a Medialyst account?
No. Newsjack works with no keys or sign-ups: profile, scan, angles, editor and journalist checks all run without them. With Medialyst, news search is more precise about dates and you can build journalist lists; you connect it with the newsjack login command, which opens an approval page.
Can I use it from Claude.ai instead of Claude Code?
Partly. The README explains how to install it as a plugin on Claude.ai and Cowork, but there it runs in limited mode: a one-off scan, with no saved profile, no scheduling and no memory of what you have already seen. For the every-morning scan you need an agent on your computer, like Claude Code.