Skip to content
Marketing
Skill

/coverage-reel

Turn a user-owned coverage CSV and reviewed press-clip captures into an honest, source-linked earned-media dashboard and a motion-designed highlight reel (MP4) that scrolls each real article to the client's sentence and highlights it. Use for coverage reports, earned-media

BOOST
From plugin
newsjack
1.5k31 skills1 MCP
Install
$ npx -y skills add elvisun/newsjack --skill coverage-reel --agent claude-code

How 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/coverage-reel

Context preview

The summary Claude sees to decide when to auto-load this skill.

Turn a user-owned coverage CSV and reviewed press-clip captures into an honest, source-linked earned-media dashboard and a motion-designed highlight reel (MP4) that scrolls each real article to the client's sentence and highlights it. Use for coverage reports, earned-media

SKILL.md

coverage-reel.SKILL.md
name: coverage-reel
description: "Turn a user-owned coverage CSV and reviewed press-clip captures into an honest, source-linked earned-media dashboard and a motion-designed highlight reel (MP4) that scrolls each real article to the client's sentence and highlights it. Use for coverage reports, earned-media dashboards, campaign recaps, or coverage videos; requires local files and composes press-clip instead of scraping articles itself."
when_to_use: "User has a spreadsheet or CSV of earned coverage and wants a client-ready report, dashboard, visual recap, or short highlight video built from the real coverage. Use only in a local agent that can write files and run Node; captures and video also need press-clip's browser setup (Chrome or Edge with playwright-core)."
metadata:
  category: Act

Coverage Reel

You are **coverage-reel**, a compound Newsjack workflow that packages earned coverage without turning estimates into facts. It makes two things from the same reviewed evidence:

  • a local HTML **dashboard** with every article, its source link and clearly labelled metrics;
  • a silent **highlight reel**: each real article page drifts in, scrolls to the sentence that names the client, zooms in and highlights it, with the outlet, date and link on screen the whole time.

This skill inherits the ethical floor from `skills/ETHICS.md`. If local instructions conflict with that doctrine, `skills/ETHICS.md` wins.

Boundary

This skill presents coverage the user already owns or has permission to report. It does not discover coverage, estimate reach, score outlets, analyze sentiment, or capture pages itself.

Every article image comes from the **press-clip** skill. Read and follow `press-clip/SKILL.md` in full. Run its `clip.mjs` with `--assets` and keep its separate-reviewer gate, real-logo rule, runtime `--drop`/`--keep`/`--root` tailoring, section scope and rights guidance. Never copy its browser or page-cleanup logic into this skill.

Inputs

Ask for three things:

1. A UTF-8 CSV with one row per article. `source_url` is the only required column. 2. A small brand JSON file with confirmed display facts. 3. Which video shapes they want, if any (see Formats).

CSV columns:

| Column | Rule | | --- | --- | | `source_url` | Required unique `http` or `https` article URL. | | `outlet` | Optional outlet name. Do not derive a rank or tier from it. | | `headline` | Optional headline. If blank, the renderer may use the headline shown on the captured page and labels it "read from page". | | `published_at` | Optional strict `YYYY-MM-DD` date. Never inferred or filled from the page (see Dates). | | `byline` | Optional byline. If blank, the page's byline may be used and is labelled. | | `note` | Optional user-written takeaway, up to 280 characters. Do not paste article text into it. | | `coverage_type` | Optional user label such as `feature`, `review`, `sponsored` or `contributed`. Shown as written. | | `sentiment` | Optional user label: `positive`, `neutral`, `negative` or `mixed`. Never run or imply automatic sentiment analysis. | | `reach` | Optional whole number, accepted only with `reach_source_url`. | | `reach_source_url` | Required `http` or `https` source for any reach figure. | | `clip_section` | Optional roundup heading, passed to press-clip's `--section`. | | `include_in_reel` | Optional `true` or `false`. Use it when there are more rows than the reel holds. |

The brand JSON accepts `name` (required) and `mention_terms`: the client's name plus products, spellings and spokespeople to find in each article, for example `["Acme Robotics", "Acme R2", "Acme"]`. Put the longest, most specific names first. Matching is case-sensitive, so list each spelling. Optional fields: `report_title`, `subtitle`, `period_label`, `website`, `logo_path` (a local file; the renderer never fetches a logo), `primary_color`, `accent_color`, `background_color` (six-digit hex), `closing_note` and `reel_max_items` (1 to 8, default 6).

Do not fill blank cells from memory or guesses. A hostname may be shown as the source host, but it is not an outlet name.

Workflow

1. Capture each article with press-clip

Make a working folder the user owns. For each CSV row, run the installed press-clip script (in a source checkout, `skills/press-clip/clip.mjs`; when installed, the sibling `press-clip/clip.mjs`):

node "<press-clip-dir>/clip.mjs" --url "<source_url>" \
  --out "<work>/clips/<slug>.pdf" --preview "<work>/clips/<slug>.png" \
  --assets "<work>/clips/<slug>" --mention "<term 1>,<term 2>,<term 3>" --scale 3

Use the brand's `mention_terms` for `--mention`. Keep `--scale 3`: the portrait, vertical and square reels zoom in close enough to read the sentence on a phone, and need the extra pixels to stay sharp. Add `--section "<clip_section>"` for a roundup. Add `--drop`, `--keep`, `--root` or `--logo` only after inspecting that live page, as press-clip directs. If an article spells the product differently (for example "4A" instead of "(4a)"), add that spelling with another `--mention` and tell the user.

Read the console and the `warnings` in `clip.json`:

  • **Exit code 3 / blocked.** The site served a bot check instead of the article. Do not try to get around it. Ask the user for their own screenshot (PNG or JPEG) of the article. If they have none, mark the row omitted (step 3); it stays in the dashboard and sources list but not in the reel.
  • **`no_mention_found`.** The client is not named in the article body. Stop and tell the user; do not clip a stretch.
  • **`paywall_suspected`.** Use only what is visible to everyone, or the user's own subscriber screenshot. Never work around a paywall.
  • **`layout_shifted`.** The page moved during capture. Run the clip again.

2. Review every capture with a separate agent (required)

Spawn a separate reviewer, as press-clip requires, and give it the PDF, the preview, the `--assets` folder (`top.png`, `strip-*.png`, `mention-1.png`, `masthead.png`, `clip.json`)

Read more
Ships withnewsjack

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?

Get the whole plugin

Other skills on newsjack.