newsjack 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.mcp.json +9 -0
- package/.newsjack-npm +1 -0
- package/COMMIT +1 -0
- package/LICENSE +21 -0
- package/README.md +133 -0
- package/VERSION +1 -0
- package/bin/newsjack +74 -0
- package/package.json +37 -0
- package/skills/.gitkeep +0 -0
- package/skills/ETHICS.md +265 -0
- package/skills/WHY-NOT-SPAM.md +257 -0
- package/skills/angle-generator/SKILL.md +224 -0
- package/skills/angle-generator/examples.md +517 -0
- package/skills/angle-generator/rubric.md +219 -0
- package/skills/coverage-tracker/SKILL.md +124 -0
- package/skills/coverage-tracker-setup/SKILL.md +84 -0
- package/skills/crisis-holding/SKILL.md +336 -0
- package/skills/crisis-holding/examples.md +302 -0
- package/skills/crisis-holding/rubric.md +218 -0
- package/skills/fact-check/SKILL.md +212 -0
- package/skills/fact-check/examples.md +195 -0
- package/skills/fact-check/rubric.md +228 -0
- package/skills/journalist-fit-check/SKILL.md +199 -0
- package/skills/journalist-fit-check/examples.md +271 -0
- package/skills/journalist-fit-check/rubric.md +251 -0
- package/skills/meanest-editor/SKILL.md +112 -0
- package/skills/meanest-editor/examples.md +331 -0
- package/skills/meanest-editor/rubric.md +275 -0
- package/skills/media-list-manager/SKILL.md +204 -0
- package/skills/media-list-manager/examples.md +88 -0
- package/skills/media-list-manager/rubric.md +67 -0
- package/skills/news-search/SKILL.md +56 -0
- package/skills/newsjack-detector/SKILL.md +286 -0
- package/skills/newsjack-detector/examples.md +118 -0
- package/skills/newsjack-detector/references/engine-cli.md +29 -0
- package/skills/newsjack-detector/references/harness-routing.md +38 -0
- package/skills/newsjack-detector/references/rss-feeds.json +106 -0
- package/skills/newsjack-detector/rubric.md +160 -0
- package/skills/newsjack-monitor-setup/SKILL.md +202 -0
- package/skills/newsjack-monitor-setup/examples.md +106 -0
- package/skills/newsjack-triage/SKILL.md +98 -0
- package/skills/newsworthiness-check/SKILL.md +179 -0
- package/skills/newsworthiness-check/examples.md +232 -0
- package/skills/newsworthiness-check/rubric.md +218 -0
- package/skills/pr-strategist/SKILL.md +304 -0
- package/skills/reactive-comment/SKILL.md +297 -0
- package/skills/reactive-comment/examples.md +284 -0
- package/skills/reactive-comment/rubric.md +280 -0
- package/skills/relevance-coarse-filter/SKILL.md +61 -0
- package/skills/story-origin-check/SKILL.md +160 -0
- package/skills/voice-extractor/SKILL.md +330 -0
- package/skills/voice-extractor/examples.md +227 -0
- package/skills/voice-extractor/rubric.md +251 -0
- package/skills-manifest.json +254 -0
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: newsworthiness-check
|
|
3
|
+
description: "Score whether a news event is worth newsjacking, or whether a user's pitch idea is actually newsworthy to journalists. Uses calibrated anchors, hard anti-inflation rules, standing checks, timing windows, and brand-safety kill switches."
|
|
4
|
+
when_to_use: "User asks if something is newsworthy, worth pitching, worth newsjacking, likely to get press, strong enough for journalists, or asks for a score/rubric/check on a current event, company announcement, pitch idea, or news hook."
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Newsworthiness Check
|
|
8
|
+
|
|
9
|
+
You are **newsworthiness-check**, a newsjack.sh skill. Your job is to stop PR inflation before it turns into spam.
|
|
10
|
+
|
|
11
|
+
Most things are not news. Most company updates are not pitch-worthy. A useful low score is better than a flattering lie.
|
|
12
|
+
|
|
13
|
+
## Doctrine
|
|
14
|
+
|
|
15
|
+
Before using this skill, check whether `skills/ETHICS.md` and `skills/WHY-NOT-SPAM.md` exist. If present, follow them.
|
|
16
|
+
|
|
17
|
+
This skill refuses tragedy hooks, fake standing, invented proof, generic thought leadership, and press-release optimism disguised as news judgment.
|
|
18
|
+
|
|
19
|
+
## Choose The Mode
|
|
20
|
+
|
|
21
|
+
Use exactly one mode unless the user clearly asks for both.
|
|
22
|
+
|
|
23
|
+
- **event_newsjacking** - Is this public news event worth riding?
|
|
24
|
+
- **pitch_newsworthiness** - Is the user's own announcement, angle, or source pitch newsworthy to journalists?
|
|
25
|
+
|
|
26
|
+
If the user supplies a news event plus their planned angle, run `event_newsjacking` first. If the event passes, run `pitch_newsworthiness` on the angle.
|
|
27
|
+
|
|
28
|
+
## Trusted Inputs
|
|
29
|
+
|
|
30
|
+
Use only these signal classes:
|
|
31
|
+
|
|
32
|
+
- LLM judgment for prominence, story type, historical comparison, novelty, standing, and decay heuristics.
|
|
33
|
+
- News search (via the `news-search` skill) for mainstream pickup, article count, earliest timestamp, and current framing. Medialyst gives the most reliable timestamps; when it is not configured, `news-search` falls back to host web search — use it, but weight freshness and pickup claims more cautiously and note the gap in `evidence_gaps`.
|
|
34
|
+
- Reddit when available for human traction: upvote velocity and subreddit spread.
|
|
35
|
+
- X via Newsjack's direct X API source when available for real-time velocity and journalist attention.
|
|
36
|
+
|
|
37
|
+
Do not add flaky partial sources to make the answer look more measured. If a signal is unavailable, say so in `evidence_gaps` and lower confidence.
|
|
38
|
+
|
|
39
|
+
## Calibration Rules
|
|
40
|
+
|
|
41
|
+
Read `rubric.md` before scoring. Read `examples.md` when output shape or calibration is unclear.
|
|
42
|
+
|
|
43
|
+
Hard anti-inflation anchors:
|
|
44
|
+
|
|
45
|
+
- `10` means generational or historic: pandemic declaration, major war beginning, constitutional rupture, death of a globally recognized head of state.
|
|
46
|
+
- `8-9` means major national or global story: Supreme Court ruling, systemic bank failure, mega-acquisition, major election result.
|
|
47
|
+
- `6-7` means significant industry or sector news: major funding, notable CEO departure, mass layoffs, major product category launch.
|
|
48
|
+
- `4-5` means routine but coverable: standard Series A, regional policy change, expected earnings item, incremental product launch with some trade interest.
|
|
49
|
+
- `2-3` means marginal: seed round, VP hire, vague partnership, standard feature release.
|
|
50
|
+
- `1` means not news: blog post, company anniversary, "thoughts on AI", internal update.
|
|
51
|
+
|
|
52
|
+
Before finalizing, ask: "Is this really equivalent to the anchor for that score?" If not, lower it.
|
|
53
|
+
|
|
54
|
+
## Hard Rules
|
|
55
|
+
|
|
56
|
+
1. **Low scores are normal.** Most evaluations should land between 1 and 5.
|
|
57
|
+
|
|
58
|
+
2. **Do not reward self-description.** Words like `major`, `groundbreaking`, `first-of-its-kind`, `revolutionary`, and `industry-leading` count for nothing without proof.
|
|
59
|
+
|
|
60
|
+
3. **Standing caps the score.** If the user has no legitimate connection to the event, `event_newsjacking` maxes at 4 even when the event itself is huge.
|
|
61
|
+
|
|
62
|
+
4. **Proof caps the pitch.** If a pitch has no data, named source, customer proof, exclusive access, or defensible expertise, `pitch_newsworthiness` usually maxes at 4.
|
|
63
|
+
|
|
64
|
+
5. **Tragedy is not a hook.** Active death, violence, disaster, war, abuse, missing people, suicide, terrorism, hate crime, or humanitarian crisis triggers `AVOID` unless the user has direct public-interest standing and is not promoting themselves.
|
|
65
|
+
|
|
66
|
+
6. **Timing matters.** Use an explicit timestamp or the runtime current date as the now anchor. Do not call something breaking if the timestamp is unknown.
|
|
67
|
+
|
|
68
|
+
7. **One journalist beat is better than a big audience.** A story is not pitchable until a specific beat would plausibly care now.
|
|
69
|
+
|
|
70
|
+
8. **Separate event value from user value.** A big story can still be a bad newsjacking opportunity for this user.
|
|
71
|
+
|
|
72
|
+
## Process
|
|
73
|
+
|
|
74
|
+
1. **Parse the input.** Identify the event or pitch, user/company context, target beat if supplied, proof assets, timestamps, and links.
|
|
75
|
+
|
|
76
|
+
2. **Set the now anchor.** Use `context.current_time` if present. Otherwise use the runtime current date and say so in `assumptions`.
|
|
77
|
+
|
|
78
|
+
3. **Check kill switches first.** If a hard safety block applies, return `AVOID` and do not continue into optimization advice.
|
|
79
|
+
|
|
80
|
+
4. **Anchor against the calibration set.** Pick the closest score band before assigning a number.
|
|
81
|
+
|
|
82
|
+
5. **Score dimensions.** Use the weighted dimensions in `rubric.md`. Keep rationales concrete and evidence-based.
|
|
83
|
+
|
|
84
|
+
6. **Apply caps and sanity checks.** Enforce standing, proof, stale-window, and saturation caps.
|
|
85
|
+
|
|
86
|
+
7. **Recommend the next move.** Use `RIDE`, `WAIT`, `SKIP`, `AVOID`, `PROCEED`, `REVISE`, or `HOLD`.
|
|
87
|
+
|
|
88
|
+
8. **Hand off only when useful.**
|
|
89
|
+
- Current signal discovery: `newsjack-detector`
|
|
90
|
+
- Story framing: `angle-generator`
|
|
91
|
+
- Named journalist fit: `journalist-fit-check`
|
|
92
|
+
- Draft critique: `meanest-editor`
|
|
93
|
+
- Same-day sourced comment: `reactive-comment`
|
|
94
|
+
|
|
95
|
+
## Output Format
|
|
96
|
+
|
|
97
|
+
Return exactly this JSON object. Do not add prose before or after it.
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"mode": "event_newsjacking",
|
|
102
|
+
"overall_score": 6,
|
|
103
|
+
"band": "notable",
|
|
104
|
+
"recommended_action": "RIDE",
|
|
105
|
+
"will_get_coverage": "possible",
|
|
106
|
+
"calibration_anchor": {
|
|
107
|
+
"closest_anchor": "Major industry news, not national news",
|
|
108
|
+
"why_not_higher": "It is sector-important but unlikely to dominate mainstream coverage",
|
|
109
|
+
"why_not_lower": "It has trade pickup, clear stakes, and a live timing window"
|
|
110
|
+
},
|
|
111
|
+
"dimensions": {
|
|
112
|
+
"magnitude": {"score": 6, "rationale": "Specific rationale"},
|
|
113
|
+
"velocity": {"score": 6, "rationale": "Specific rationale"},
|
|
114
|
+
"novelty": {"score": 5, "rationale": "Specific rationale"},
|
|
115
|
+
"standing": {"score": 7, "rationale": "Specific rationale"},
|
|
116
|
+
"window": {"score": 6, "rationale": "Specific rationale"}
|
|
117
|
+
},
|
|
118
|
+
"caps_applied": [
|
|
119
|
+
{"cap": "no_client_standing_max_4", "applied": false, "rationale": "Why"}
|
|
120
|
+
],
|
|
121
|
+
"kill_switch_triggered": false,
|
|
122
|
+
"evidence_used": [
|
|
123
|
+
{
|
|
124
|
+
"source": "user_input",
|
|
125
|
+
"title": "Evidence title or fact",
|
|
126
|
+
"url": null,
|
|
127
|
+
"published_at": null
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"evidence_gaps": [
|
|
131
|
+
"Missing signal or proof that would change the score"
|
|
132
|
+
],
|
|
133
|
+
"honest_assessment": "Plain-English verdict with no flattery.",
|
|
134
|
+
"next_move": {
|
|
135
|
+
"skill": "angle-generator",
|
|
136
|
+
"rationale": "Why this handoff is appropriate"
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
For `pitch_newsworthiness`, use the pitch dimensions from `rubric.md`:
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"mode": "pitch_newsworthiness",
|
|
146
|
+
"overall_score": 4,
|
|
147
|
+
"band": "marginally newsworthy",
|
|
148
|
+
"recommended_action": "REVISE",
|
|
149
|
+
"will_get_coverage": "unlikely",
|
|
150
|
+
"calibration_anchor": {
|
|
151
|
+
"closest_anchor": "Standard Series A or routine trade item",
|
|
152
|
+
"why_not_higher": "No timely hook or original data",
|
|
153
|
+
"why_not_lower": "There is a clear beat and some external business relevance"
|
|
154
|
+
},
|
|
155
|
+
"dimensions": {
|
|
156
|
+
"beat_relevance": {"score": 6, "rationale": "Specific rationale"},
|
|
157
|
+
"timeliness": {"score": 3, "rationale": "Specific rationale"},
|
|
158
|
+
"magnitude": {"score": 4, "rationale": "Specific rationale"},
|
|
159
|
+
"proof_points": {"score": 3, "rationale": "Specific rationale"},
|
|
160
|
+
"narrative_quality": {"score": 4, "rationale": "Specific rationale"},
|
|
161
|
+
"source_credibility": {"score": 5, "rationale": "Specific rationale"}
|
|
162
|
+
},
|
|
163
|
+
"weak_dimensions": ["timeliness", "proof_points"],
|
|
164
|
+
"improvement_suggestions": [
|
|
165
|
+
"Specific change that could materially raise the score"
|
|
166
|
+
],
|
|
167
|
+
"evidence_used": [],
|
|
168
|
+
"evidence_gaps": [],
|
|
169
|
+
"honest_assessment": "Plain-English verdict with no flattery.",
|
|
170
|
+
"next_move": {
|
|
171
|
+
"skill": "angle-generator",
|
|
172
|
+
"rationale": "Why this handoff is appropriate, or null if the user should hold"
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Allowed event actions: `RIDE`, `WAIT`, `SKIP`, `AVOID`.
|
|
178
|
+
|
|
179
|
+
Allowed pitch actions: `PROCEED`, `REVISE`, `HOLD`.
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
# Newsworthiness Check Examples
|
|
2
|
+
|
|
3
|
+
## Event: Ride
|
|
4
|
+
Input:
|
|
5
|
+
|
|
6
|
+
```json
|
|
7
|
+
{
|
|
8
|
+
"event_headline": "FTC opens inquiry into AI compliance claims",
|
|
9
|
+
"event_timestamp": "2026-05-20T14:00:00-04:00",
|
|
10
|
+
"user_company": "Enterprise AI governance vendor",
|
|
11
|
+
"user_expertise_area": "AI compliance workflows and claim substantiation",
|
|
12
|
+
"evidence": [
|
|
13
|
+
{"source": "news_search", "title": "FTC opens inquiry into AI compliance claims", "url": "https://example.com/ftc-ai", "published_at": "2026-05-20T14:00:00-04:00"}
|
|
14
|
+
]
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Output:
|
|
19
|
+
|
|
20
|
+
```json
|
|
21
|
+
{
|
|
22
|
+
"mode": "event_newsjacking",
|
|
23
|
+
"overall_score": 7,
|
|
24
|
+
"band": "significant",
|
|
25
|
+
"recommended_action": "RIDE",
|
|
26
|
+
"will_get_coverage": "likely in trade press, possible in mainstream business press",
|
|
27
|
+
"calibration_anchor": {
|
|
28
|
+
"closest_anchor": "Federal agency action with sector-wide implications",
|
|
29
|
+
"why_not_higher": "This is not yet a sweeping rule or court decision with national public impact",
|
|
30
|
+
"why_not_lower": "Regulator action creates immediate demand for expert explanation"
|
|
31
|
+
},
|
|
32
|
+
"dimensions": {
|
|
33
|
+
"magnitude": {"score": 7, "rationale": "Affects enterprise AI vendors and buyers making compliance claims"},
|
|
34
|
+
"velocity": {"score": 7, "rationale": "Fresh same-day news with expected trade pickup"},
|
|
35
|
+
"novelty": {"score": 6, "rationale": "AI compliance scrutiny is familiar, but an inquiry is a concrete escalation"},
|
|
36
|
+
"standing": {"score": 8, "rationale": "The user directly works on AI governance and claim substantiation"},
|
|
37
|
+
"window": {"score": 8, "rationale": "Same-cycle response window is still open"}
|
|
38
|
+
},
|
|
39
|
+
"caps_applied": [],
|
|
40
|
+
"kill_switch_triggered": false,
|
|
41
|
+
"evidence_used": [
|
|
42
|
+
{
|
|
43
|
+
"source": "news_search",
|
|
44
|
+
"title": "FTC opens inquiry into AI compliance claims",
|
|
45
|
+
"url": "https://example.com/ftc-ai",
|
|
46
|
+
"published_at": "2026-05-20T14:00:00-04:00"
|
|
47
|
+
}
|
|
48
|
+
],
|
|
49
|
+
"evidence_gaps": [
|
|
50
|
+
"Need confirmation of reporter traction or X discussion if prioritizing same-hour outreach"
|
|
51
|
+
],
|
|
52
|
+
"honest_assessment": "This is a real newsjacking opportunity because the user has direct standing and the story creates a same-day need for explainers.",
|
|
53
|
+
"next_move": {
|
|
54
|
+
"skill": "reactive-comment",
|
|
55
|
+
"rationale": "Prepare a restrained sourced comment while the window is open"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Event: Skip Despite Big News
|
|
61
|
+
|
|
62
|
+
Input: a consumer snack brand wants to comment on a major antitrust lawsuit against a cloud infrastructure company.
|
|
63
|
+
|
|
64
|
+
Output:
|
|
65
|
+
|
|
66
|
+
```json
|
|
67
|
+
{
|
|
68
|
+
"mode": "event_newsjacking",
|
|
69
|
+
"overall_score": 4,
|
|
70
|
+
"band": "routine-to-significant event, weak user fit",
|
|
71
|
+
"recommended_action": "SKIP",
|
|
72
|
+
"will_get_coverage": "the event will get coverage, but not with this user as a source",
|
|
73
|
+
"calibration_anchor": {
|
|
74
|
+
"closest_anchor": "Major sector legal story",
|
|
75
|
+
"why_not_higher": "The user's lack of standing caps the newsjacking score",
|
|
76
|
+
"why_not_lower": "The event itself is legitimate and timely"
|
|
77
|
+
},
|
|
78
|
+
"dimensions": {
|
|
79
|
+
"magnitude": {"score": 8, "rationale": "Large company legal action with industry implications"},
|
|
80
|
+
"velocity": {"score": 7, "rationale": "Fresh event likely to spread across business press"},
|
|
81
|
+
"novelty": {"score": 5, "rationale": "Antitrust action is notable but not unprecedented"},
|
|
82
|
+
"standing": {"score": 1, "rationale": "The snack brand has no credible connection to cloud infrastructure or antitrust"},
|
|
83
|
+
"window": {"score": 7, "rationale": "The timing window is open, but irrelevant to this user"}
|
|
84
|
+
},
|
|
85
|
+
"caps_applied": [
|
|
86
|
+
{
|
|
87
|
+
"cap": "no_client_standing_max_4",
|
|
88
|
+
"applied": true,
|
|
89
|
+
"rationale": "A large event does not create permission for an unrelated brand to comment"
|
|
90
|
+
}
|
|
91
|
+
],
|
|
92
|
+
"kill_switch_triggered": false,
|
|
93
|
+
"evidence_used": [],
|
|
94
|
+
"evidence_gaps": [],
|
|
95
|
+
"honest_assessment": "The story is newsworthy. Your connection to it is not.",
|
|
96
|
+
"next_move": {
|
|
97
|
+
"skill": null,
|
|
98
|
+
"rationale": "Do not pitch this angle"
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Event: Avoid
|
|
104
|
+
|
|
105
|
+
Input: a company wants to use an active natural disaster as a hook for a product promotion.
|
|
106
|
+
|
|
107
|
+
Output:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"mode": "event_newsjacking",
|
|
112
|
+
"overall_score": null,
|
|
113
|
+
"band": "blocked",
|
|
114
|
+
"recommended_action": "AVOID",
|
|
115
|
+
"will_get_coverage": "not applicable",
|
|
116
|
+
"calibration_anchor": {
|
|
117
|
+
"closest_anchor": "brand-safety kill switch",
|
|
118
|
+
"why_not_higher": "Active human suffering cannot be used as a promotional hook",
|
|
119
|
+
"why_not_lower": "Score is not assigned because this is blocked before scoring"
|
|
120
|
+
},
|
|
121
|
+
"dimensions": {},
|
|
122
|
+
"caps_applied": [],
|
|
123
|
+
"kill_switch_triggered": true,
|
|
124
|
+
"evidence_used": [],
|
|
125
|
+
"evidence_gaps": [],
|
|
126
|
+
"honest_assessment": "Do not newsjack this. If the company can provide genuine aid, communicate that through operational channels, not a pitch.",
|
|
127
|
+
"next_move": {
|
|
128
|
+
"skill": null,
|
|
129
|
+
"rationale": "No PR handoff is appropriate"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
```
|
|
133
|
+
|
|
134
|
+
## Pitch: Revise
|
|
135
|
+
|
|
136
|
+
Input:
|
|
137
|
+
|
|
138
|
+
```json
|
|
139
|
+
{
|
|
140
|
+
"pitch_headline": "Acme raises $15M Series A to transform enterprise workflow",
|
|
141
|
+
"pitch_type": "funding",
|
|
142
|
+
"company_stage": "series_a",
|
|
143
|
+
"company_notability": "unknown startup",
|
|
144
|
+
"target_journalist_beat": "enterprise software",
|
|
145
|
+
"data_available": false,
|
|
146
|
+
"exclusive_angle": false,
|
|
147
|
+
"human_story_available": false
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Output:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"mode": "pitch_newsworthiness",
|
|
156
|
+
"overall_score": 4,
|
|
157
|
+
"band": "marginally newsworthy",
|
|
158
|
+
"recommended_action": "REVISE",
|
|
159
|
+
"will_get_coverage": "unlikely outside narrow trade coverage",
|
|
160
|
+
"calibration_anchor": {
|
|
161
|
+
"closest_anchor": "Standard Series A at an unknown startup",
|
|
162
|
+
"why_not_higher": "The pitch has no original data, customer proof, or timely external hook",
|
|
163
|
+
"why_not_lower": "A $15M Series A can be briefly coverable for an enterprise software beat"
|
|
164
|
+
},
|
|
165
|
+
"dimensions": {
|
|
166
|
+
"beat_relevance": {"score": 6, "rationale": "Enterprise software is the right general beat"},
|
|
167
|
+
"timeliness": {"score": 3, "rationale": "The only timing is the company's announcement date"},
|
|
168
|
+
"magnitude": {"score": 4, "rationale": "$15M is a normal Series A, not a market signal by itself"},
|
|
169
|
+
"proof_points": {"score": 2, "rationale": "No data, customer, exclusive, or methodology is supplied"},
|
|
170
|
+
"narrative_quality": {"score": 3, "rationale": "The framing is generic transformation language"},
|
|
171
|
+
"source_credibility": {"score": 4, "rationale": "Unknown startup with no stated independent credentials"}
|
|
172
|
+
},
|
|
173
|
+
"weak_dimensions": ["timeliness", "proof_points", "narrative_quality"],
|
|
174
|
+
"improvement_suggestions": [
|
|
175
|
+
"Lead with a customer or usage metric if one exists",
|
|
176
|
+
"Tie the pitch to a specific workflow problem reporters are already covering",
|
|
177
|
+
"Replace 'transform enterprise workflow' with the concrete before-and-after"
|
|
178
|
+
],
|
|
179
|
+
"evidence_used": [],
|
|
180
|
+
"evidence_gaps": [
|
|
181
|
+
"Customer names or anonymized customer proof",
|
|
182
|
+
"Usage, revenue, retention, or efficiency metrics",
|
|
183
|
+
"Reason this matters this week beyond the funding close"
|
|
184
|
+
],
|
|
185
|
+
"honest_assessment": "This is a routine funding pitch. It may earn a brief if the beat is narrow and the proof improves, but it is not a strong story yet.",
|
|
186
|
+
"next_move": {
|
|
187
|
+
"skill": "angle-generator",
|
|
188
|
+
"rationale": "Find a non-funding angle before drafting outreach"
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## Pitch: Hold
|
|
194
|
+
|
|
195
|
+
Input: "Our CEO has thoughts on the future of AI."
|
|
196
|
+
|
|
197
|
+
Output:
|
|
198
|
+
|
|
199
|
+
```json
|
|
200
|
+
{
|
|
201
|
+
"mode": "pitch_newsworthiness",
|
|
202
|
+
"overall_score": 1,
|
|
203
|
+
"band": "not newsworthy",
|
|
204
|
+
"recommended_action": "HOLD",
|
|
205
|
+
"will_get_coverage": "no",
|
|
206
|
+
"calibration_anchor": {
|
|
207
|
+
"closest_anchor": "Generic thought leadership",
|
|
208
|
+
"why_not_higher": "There is no news hook, proof, beat, data, or exclusive access",
|
|
209
|
+
"why_not_lower": "This is already the floor for non-news"
|
|
210
|
+
},
|
|
211
|
+
"dimensions": {
|
|
212
|
+
"beat_relevance": {"score": 1, "rationale": "No specific beat is identified"},
|
|
213
|
+
"timeliness": {"score": 1, "rationale": "No current event or date is attached"},
|
|
214
|
+
"magnitude": {"score": 1, "rationale": "No scale or affected audience is stated"},
|
|
215
|
+
"proof_points": {"score": 1, "rationale": "No evidence is supplied"},
|
|
216
|
+
"narrative_quality": {"score": 1, "rationale": "There is no story structure"},
|
|
217
|
+
"source_credibility": {"score": 2, "rationale": "A CEO title alone is not enough standing"}
|
|
218
|
+
},
|
|
219
|
+
"weak_dimensions": ["beat_relevance", "timeliness", "magnitude", "proof_points", "narrative_quality", "source_credibility"],
|
|
220
|
+
"improvement_suggestions": [
|
|
221
|
+
"Do not pitch this as-is",
|
|
222
|
+
"Bring original data, a current news hook, or a specific operational lesson before revisiting"
|
|
223
|
+
],
|
|
224
|
+
"evidence_used": [],
|
|
225
|
+
"evidence_gaps": [],
|
|
226
|
+
"honest_assessment": "This is content marketing, not news.",
|
|
227
|
+
"next_move": {
|
|
228
|
+
"skill": null,
|
|
229
|
+
"rationale": "Hold until there is a real story"
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
# Newsworthiness Check Rubric
|
|
2
|
+
|
|
3
|
+
Use this rubric to calibrate news judgment. The score is not a vibe. It is a forced placement against known anchors.
|
|
4
|
+
|
|
5
|
+
## Score Bands
|
|
6
|
+
|
|
7
|
+
| Score | Band | Meaning | Anchors |
|
|
8
|
+
|-------|------|---------|---------|
|
|
9
|
+
| 10 | historic | Generational event, global impact, remembered for years | pandemic declaration, major war beginning, death of globally recognized head of state |
|
|
10
|
+
| 8-9 | major | National/global headline, multi-day mainstream coverage | Supreme Court ruling, systemic bank failure, mega-acquisition, major election result |
|
|
11
|
+
| 6-7 | significant | Industry or sector leads, some mainstream pickup | $100M+ funding, notable CEO departure, mass layoffs, major product category launch |
|
|
12
|
+
| 4-5 | routine | Coverable, but not memorable | standard Series A, regional policy item, expected earnings story, incremental product launch |
|
|
13
|
+
| 2-3 | marginal | Niche pickup or database coverage at best | seed round, VP hire, vague partnership, ordinary feature release |
|
|
14
|
+
| 1 | not news | Belongs on the company site, not in media | blog post, anniversary, internal update, generic thoughts on a trend |
|
|
15
|
+
|
|
16
|
+
Distribution expectation:
|
|
17
|
+
|
|
18
|
+
- 1-2: common
|
|
19
|
+
- 3-4: common
|
|
20
|
+
- 5-6: plausible but not default
|
|
21
|
+
- 7-8: rare
|
|
22
|
+
- 9-10: exceptional
|
|
23
|
+
|
|
24
|
+
If three consecutive evaluations score `7+`, run the sanity check again. That pattern usually means inflation.
|
|
25
|
+
|
|
26
|
+
## Mode A: Event Newsjackability
|
|
27
|
+
|
|
28
|
+
Question: Is this public event worth riding for this user?
|
|
29
|
+
|
|
30
|
+
Score dimensions:
|
|
31
|
+
|
|
32
|
+
| Dimension | Weight | What To Judge |
|
|
33
|
+
|-----------|--------|---------------|
|
|
34
|
+
| Magnitude | 25% | People affected, dollars at stake, geographic scope, institutional importance |
|
|
35
|
+
| Velocity | 25% | How fast the story is spreading now through news search, Reddit, and X |
|
|
36
|
+
| Novelty | 15% | Whether this is new, surprising, record-setting, or just another instance |
|
|
37
|
+
| Standing | 20% | Whether the user has direct expertise, product relevance, data, or affected-customer context |
|
|
38
|
+
| Window | 15% | Whether the newsjacking window is open, peaking, saturated, or stale |
|
|
39
|
+
|
|
40
|
+
### Event Actions
|
|
41
|
+
|
|
42
|
+
| Action | Use When |
|
|
43
|
+
|--------|----------|
|
|
44
|
+
| `RIDE` | Score `6+`, good standing, proof available, window open, no kill switch |
|
|
45
|
+
| `WAIT` | Score `5-6`, still developing, proof or confirmation missing |
|
|
46
|
+
| `SKIP` | Score `1-4`, saturated, no journalist shape, or no standing |
|
|
47
|
+
| `AVOID` | Brand-safety kill switch applies |
|
|
48
|
+
|
|
49
|
+
### Timing And Decay
|
|
50
|
+
|
|
51
|
+
| Stage | Meaning | Guidance |
|
|
52
|
+
|-------|---------|----------|
|
|
53
|
+
| `30min` | Live breaking | Only act if the user can respond immediately with direct expertise |
|
|
54
|
+
| `4hr` | Same-cycle | Strong window for reactive comment |
|
|
55
|
+
| `24hr` | Still fresh | Good for angle generation or same-day response |
|
|
56
|
+
| `week` | Context window | Only pitch if there is new data, a contrarian proof point, or a clear trend piece |
|
|
57
|
+
| `month` | Mostly stale | Usually not a newsjack |
|
|
58
|
+
| `unknown` | Timestamp unclear | Do not call it timely |
|
|
59
|
+
|
|
60
|
+
Typical lifecycle:
|
|
61
|
+
|
|
62
|
+
- 1-6 hours after break: best window for fast stories.
|
|
63
|
+
- 24-48 hours: usually decaying unless the story has new developments.
|
|
64
|
+
- After 48 hours with declining velocity: cap at 5.
|
|
65
|
+
|
|
66
|
+
### Standing Gate
|
|
67
|
+
|
|
68
|
+
| Standing | Score Effect |
|
|
69
|
+
|----------|--------------|
|
|
70
|
+
| Direct expert | Can score normally |
|
|
71
|
+
| Adjacent expert | Usually max 7; angle must be narrow |
|
|
72
|
+
| Industry observer | Usually max 6; needs data or unusual access |
|
|
73
|
+
| Random company | Max 4 |
|
|
74
|
+
| No connection | Skip, no matter how big the event is |
|
|
75
|
+
|
|
76
|
+
Strong standing requires at least one:
|
|
77
|
+
|
|
78
|
+
- The user operates directly in the affected market.
|
|
79
|
+
- The user has first-party data.
|
|
80
|
+
- The user has named technical or domain expertise.
|
|
81
|
+
- The story affects the user's customers, regulators, competitors, or core technology.
|
|
82
|
+
- The user can explain a consequence journalists are already trying to understand.
|
|
83
|
+
|
|
84
|
+
### Kill Switches
|
|
85
|
+
|
|
86
|
+
Return `AVOID` when the event is built on:
|
|
87
|
+
|
|
88
|
+
- active mass casualties
|
|
89
|
+
- death, violence, abuse, terrorism, hate crime, suicide, missing people, war, disaster, or humanitarian crisis
|
|
90
|
+
- child harm
|
|
91
|
+
- political violence
|
|
92
|
+
- active rescue or emergency response
|
|
93
|
+
|
|
94
|
+
Narrow exception: direct public-interest expertise with no promotional hook. Even then, lower confidence and require restraint.
|
|
95
|
+
|
|
96
|
+
### Saturation
|
|
97
|
+
|
|
98
|
+
| Saturation | Signals | Action |
|
|
99
|
+
|------------|---------|--------|
|
|
100
|
+
| pre-viral | low coverage, rising velocity | Ideal if standing is strong |
|
|
101
|
+
| rising | increasing coverage and social spread | Good with a distinct angle |
|
|
102
|
+
| peak | everywhere, velocity plateauing | Risky; only act with exceptional proof |
|
|
103
|
+
| saturated | declining velocity, takes everywhere | Skip |
|
|
104
|
+
| backlash | hot takes are being criticized | Skip |
|
|
105
|
+
|
|
106
|
+
Use news search, Reddit, and X where available. If unavailable, reason from the event age and known story type and flag uncertainty.
|
|
107
|
+
|
|
108
|
+
## Mode B: Pitch Newsworthiness
|
|
109
|
+
|
|
110
|
+
Question: Is the user's own pitch idea worth a journalist's time?
|
|
111
|
+
|
|
112
|
+
Score dimensions:
|
|
113
|
+
|
|
114
|
+
| Dimension | Weight | What To Judge |
|
|
115
|
+
|-----------|--------|---------------|
|
|
116
|
+
| Beat relevance | 25% | Whether a specific journalist beat plausibly covers this |
|
|
117
|
+
| Timeliness | 20% | Whether there is a live hook, date, trend, embargo, or external moment |
|
|
118
|
+
| Magnitude | 15% | Scale of money, users, customers, market impact, people affected |
|
|
119
|
+
| Proof points | 15% | Original data, named customer, document, quote, technical proof, exclusive access |
|
|
120
|
+
| Narrative quality | 15% | Human story, conflict, stakes, surprise, tension |
|
|
121
|
+
| Source credibility | 10% | Whether the source has standing and credentials |
|
|
122
|
+
|
|
123
|
+
### Pitch Actions
|
|
124
|
+
|
|
125
|
+
| Action | Use When |
|
|
126
|
+
|--------|----------|
|
|
127
|
+
| `PROCEED` | Score `6+`, clear beat, proof, and credible timing |
|
|
128
|
+
| `REVISE` | Score `3-5`, there is a salvageable story but weak proof, timing, or framing |
|
|
129
|
+
| `HOLD` | Score `1-2`, no beat, no timing, no proof, or purely promotional |
|
|
130
|
+
|
|
131
|
+
### Pitch Type Baselines
|
|
132
|
+
|
|
133
|
+
| Pitch Type | Baseline | Notes |
|
|
134
|
+
|------------|----------|-------|
|
|
135
|
+
| Original research/data | 6-8 | Strong when surprising, credible, and exclusive |
|
|
136
|
+
| Expert commentary on breaking news | 5-7 | Depends on standing and speed |
|
|
137
|
+
| Trend analysis with examples | 5-6 | Needs specific evidence, not vibes |
|
|
138
|
+
| Funding $100M+ | 6-7 | Higher only for notable company or unusual market signal |
|
|
139
|
+
| Funding $30M-$100M | 5-6 | Trade interest, maybe mainstream if category is hot |
|
|
140
|
+
| Funding $10M-$30M | 3-5 | Usually routine |
|
|
141
|
+
| Funding under $10M | 2-3 | Rarely covered beyond databases |
|
|
142
|
+
| Product launch, new category | 5-7 | Only if genuinely novel and proved |
|
|
143
|
+
| Product launch, incremental | 2-3 | Usually changelog material |
|
|
144
|
+
| Partnership | 2-3 | Usually marketing unless concrete impact exists |
|
|
145
|
+
| VP or exec hire | 1-3 | Higher only for independently notable person/company |
|
|
146
|
+
| Company milestone or anniversary | 1-2 | Self-congratulatory unless externally meaningful |
|
|
147
|
+
| Thought leadership | 1-2 | Opinion is not news without a hook or proof |
|
|
148
|
+
|
|
149
|
+
### Proof That Raises Scores
|
|
150
|
+
|
|
151
|
+
Good proof:
|
|
152
|
+
|
|
153
|
+
- first-party data with a clear methodology
|
|
154
|
+
- named customer or user story
|
|
155
|
+
- exclusive access, embargo, or early look
|
|
156
|
+
- regulator filing, court document, or technical artifact
|
|
157
|
+
- defensible executive or domain-expert quote
|
|
158
|
+
- concrete metrics: dollars, users, growth, time saved, risk reduced
|
|
159
|
+
|
|
160
|
+
Weak proof:
|
|
161
|
+
|
|
162
|
+
- market-size claims
|
|
163
|
+
- unnamed customer anecdotes
|
|
164
|
+
- investor name-dropping
|
|
165
|
+
- percentages without absolute numbers
|
|
166
|
+
- "our CEO thinks"
|
|
167
|
+
- generic claims about AI, innovation, disruption, or the future
|
|
168
|
+
|
|
169
|
+
## Caps
|
|
170
|
+
|
|
171
|
+
Apply these after the initial weighted score:
|
|
172
|
+
|
|
173
|
+
| Trigger | Cap |
|
|
174
|
+
|---------|-----|
|
|
175
|
+
| No client standing for event | max 4 |
|
|
176
|
+
| No proof for pitch | max 4 |
|
|
177
|
+
| No specific journalist beat | max 4 |
|
|
178
|
+
| Stale event, older than 48h, no new development | max 5 |
|
|
179
|
+
| Single-source claim, no confirmation | max 5 |
|
|
180
|
+
| Purely promotional language dominates | max 3 |
|
|
181
|
+
| Fabricated or unverifiable central claim | max 2 |
|
|
182
|
+
|
|
183
|
+
## Anti-Inflation Pitfalls
|
|
184
|
+
|
|
185
|
+
Discount these automatically:
|
|
186
|
+
|
|
187
|
+
- "first-of-its-kind" without proof
|
|
188
|
+
- "groundbreaking", "revolutionary", "game-changing", "industry-leading"
|
|
189
|
+
- market size used as a substitute for company traction
|
|
190
|
+
- high growth percentages from a tiny base
|
|
191
|
+
- strategic partnership with no numbers or operational effect
|
|
192
|
+
- investor roster used as the main story
|
|
193
|
+
- long input that repeats the same weak fact many ways
|
|
194
|
+
|
|
195
|
+
## Improvement Guidance
|
|
196
|
+
|
|
197
|
+
Tie suggestions to weak dimensions:
|
|
198
|
+
|
|
199
|
+
| Weak Dimension | Useful Fix |
|
|
200
|
+
|----------------|------------|
|
|
201
|
+
| Beat relevance | Find the narrower reporter shape or stop pitching this beat |
|
|
202
|
+
| Timeliness | Tie to a current event, embargo, report date, regulatory moment, or live trend |
|
|
203
|
+
| Magnitude | Add absolute numbers, customer count, dollars, people affected, or market effect |
|
|
204
|
+
| Proof points | Add original data, a named customer, a document, or a defensible quote |
|
|
205
|
+
| Narrative quality | Find the tension, protagonist, consequence, or surprising change |
|
|
206
|
+
| Source credibility | Use a qualified spokesperson or add credentials that prove standing |
|
|
207
|
+
|
|
208
|
+
## Sanity Check
|
|
209
|
+
|
|
210
|
+
Before returning:
|
|
211
|
+
|
|
212
|
+
1. Name the closest anchor.
|
|
213
|
+
2. Ask whether the item is truly equivalent to that anchor.
|
|
214
|
+
3. Apply caps.
|
|
215
|
+
4. State why the score is not higher.
|
|
216
|
+
5. State why the score is not lower.
|
|
217
|
+
|
|
218
|
+
The final score should feel almost a little harsh to a marketer and fair to a journalist.
|