Agent skill · Audited from source
press-clip
skill · elvisun/newsjackMIT licenceAudited 31 Oct 2026 · source 384ad36be393
Is it safe? Yes — SAFE, grade B (89/100). We read this skill's source at commit 384ad36be393 and observed network and shell access and no hard-coded secrets. What it does: Turn a live article URL into a press clip that looks like the real coverage — the publication's own logo, fonts, photos and layout kept intact, the ads and clutter removed, and (for a roundup) just the client's section.…
Cite
Cite this page
ModelsAtlas. “press-clip (elvisun/newsjack)”. Retrieved 31 Oct 2026. https://modelsatlas.com/skills/elvisun/press-clip
Trust audit
Audit 0.4.1 · source read 31 Oct 2026
SAFE means nothing in the source contradicts what the skill says it does. Grade B is shared by 16,667 of 17,602 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkDeclared1 observation
- ShellDeclared1 observation
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | PASS | 0 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | PASS | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (0)
No findings at any severity. We re-audit when the source changes.
Audit 0.4.1 · source sha 384ad36be393 · 31 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherelvisun GitHub userOwner of the repository this skill is read from
- Source folderelvisun/newsjack/skills/press-clipThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdict384ad36be393A new audit runs when the source changes
- Repository statusNot archivedLast push 5 days ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Turn a live article URL into a press clip that looks like the real coverage — the publication's own logo, fonts, photos and layout kept intact, the ads and clutter removed, and (for a roundup) just the client's section.…
--- name: press-clip description: "Turn a live article URL into a press clip that looks like the real coverage — the publication's own logo, fonts, photos and layout kept intact, the ads and clutter removed, and (for a roundup) just the client's section. Renders to PDF. You inspect each site and tailor the removal; the bundled script carries no site-specific logic." when_to_use: "User wants to clip coverage, save an article as a PDF for a client, make a press clip, pull the part of a roundup that mentions their brand, or turn a cluttered article page into a clean shareable record of a mention. Also when another skill (coverage-tracker, newsjack-detector) surfaces real coverage the user wants to package for a client." metadata: category: Act --- # Press Clip You are **press-clip**, the Newsjack skill that turns a live article into the artifact a PR agency hands a client: proof their coverage ran, in a form the client trusts on sight. Understand this first, because it's the mistake that ruins clips: **a press clip must look like the publication it came from.** The outlet's logo, masthead, real fonts, the article's photos, the familiar layout — those are not decoration, they are the *trust signals* that tell a client "yes, this really ran in this outlet." A clip rebuilt as plain text reads like a memo and convinces no one. So you do **not** rebuild the page. You take the **real, rendered page** and operate on it: isolate the article, strip the ads and clutter, stamp the outlet's logo on top — and leave every trust signal intact. A clip is also **evidence**. The journalist's words and the outlet's branding are reproduced as they are. You select and present; you never rewrite the reporting or fake the source. Only clip a page the user can already read in full, either publicly or through their own logged-in access. If the article body is paywalled, metered, login-blocked, or truncated for the user, stop and tell them. Never bypass a paywall, meter, or login, and never use page surgery or a site-specific script to reveal content the user's current access does not show. ## The one rule that shapes everything **Every publication's HTML is different, so there is no universal "remove the junk" selector list — and the bundled script deliberately contains no site-specific logic.** Broad keyword selectors (`[class*="sidebar"]`, `[class*="social"]`) look tempting but betray you: real layout wrappers reuse those words (a responsive grid classed `layout--has-sidebar` actually *holds the article body*), so a blind rule deletes the story on some templates. The robust division of labor is: - **Structure is generic.** The script isolates the article by its position in the page tree — it keeps the article and its ancestor chain and drops everything that is a *sibling* of that chain (site header, nav, sidebars, footer, recirculation rails). This needs no class names and works across templates. - **Per-publisher junk is yours to find at runtime.** Ads, sponsored modules, newsletter sign-ups, "around the web" / Taboola / Zergnet rails, comment embeds, in-article video players — these live *inside* the article on many sites and differ per publisher. You inspect the specific page, identify those blocks, and remove them with `--drop` selectors, or by writing a small tailored Playwright script. Then you **look at the preview** and iterate. If you ever feel the urge to hardcode a publisher's selector into the script, don't — pass it at runtime instead. ## What you need - **The article URL.** - **The client** — the brand, product, person, or company the clip is *for*. In a roundup you'll narrow to its section. Optional: whole article vs the client's section (see Scope), and where to save (defaults to `press-clips/`). ## Setup The clipper drives a real Chromium-based browser (Chrome or Edge — most machines have one) and needs one npm package. From the folder you'll run clips in: ```bash npm i playwright-core ``` If the browser isn't at the default path, pass `--chrome "/path/to/Chrome"` or set `PRESS_CLIP_CHROME`. ## The workflow Before running the clipper, open the URL with the user's current permitted access and confirm the complete article body is visible. If the body ends at a subscription prompt, meter, login wall, or preview cutoff, stop before capture and tell the user. A `paywall_suspected` warning is a cue to confirm access, not permission to work around it. ### 1. Run the baseline clip ```bash node clip.mjs --url "<URL>" \ --out "press-clips/<outlet>-<slug>.pdf" --preview "press-clips/<outlet>-<slug>.png" ``` For a **roundup** where the client is one entry among many, add `--section "<Client Name>"` to keep only their part. The script will: block ad/recirc/comment/video networks at the request level (this alone removes most lazy-loaded junk generically), load the page, **pick the article container structurally** before anything scrolls (the tightest element that holds the `<h1>` matching the page's own headline and most of the page text, never one nested in `header`/`nav`/`footer`/`aside`), isolate it, sweep out **empty placeholder boxes** and **link lists** (a dead ad slot that still takes height; a "most read" rail or related-stories list that is almost all links — both logged, never deleted silently), force a **white page background** so no off-white site color bleeds into the last page, **resolve the outlet logo**, stamp it large at the top, and write the PDF plus a preview PNG. These passes are all generic — they key on structure, "renders empty" and "is all links", never on any publisher's class names. Other generic safeguards run on every page, learned from real failures: - **Next-article loaders are stopped.** Some templates append the next story as you scroll and rewrite the address bar. Once the page has settled, the script blocks same-site scripts from fetching whole HTML pages and keeps the URL from changing, and it pins the article before any scrolling. - **Floating ch
Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 384ad36
npm i playwright-core
git clone https://github.com/elvisun/newsjack git -C newsjack checkout 384ad36be393
Commands as the repository documents them: shown, never run by us. Our verdict covers commit 384ad36be393 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- ✓SAFE B 89 / 100
first audit · source
384ad36be393
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/elvisun/press-clip/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
elvisun/newsjack
Triage inbound journalist source queries and draft a response only when the user's expertise is a real fit. Runs each query through proven source-request lenses (4-gate fit triage, credential-standing test, deadline…
elvisun/newsjack
Cheap, high-recall first-pass filter that removes obvious junk from a detector candidate pool before expensive story-origin research and PR judgment. Decides keep, monitor_only, or reject — never ranks, writes angles,…
elvisun/newsjack
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…
elvisun/newsjack
Turn the Medialyst PR calendar feed into a brand-specific, lead-time-aware plan. Pull source-backed upcoming moments, keep only the few a brand has real standing to own, schedule backward from the event date, screen out…
elvisun/newsjack
Opinionated startup-PR strategist that helps founders figure out audience, positioning, news pegs, and drumbeat before any tactical PR. Refuses outlet-naming-before-audience, mass blasts, vanity metrics, and premature…
elvisun/newsjack
Consolidate freshness-gated newsjack signals and route them by client standing before angle generation. Collapses any remaining same-story duplicates, decides strong/partial/none standing with a journalist-shape sanity…
Add this badge to your README
[](https://modelsatlas.com/skills/elvisun/press-clip/)
<a href="https://modelsatlas.com/skills/elvisun/press-clip/"><img src="https://modelsatlas.com/skills/elvisun/press-clip/badge.svg" alt="ModelsAtlas: SAFE B"></a>
Questions about press-clip
What does the press-clip skill do?
Is press-clip safe to install?
What can press-clip access on my machine?
How current is this page?
Sources
- github.com/elvisun/newsjack/tree/main/skills/press-clip — the audited source at commit 384ad36be393 and every finding aboveObserved · 31 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the press-clip skill do?
- Is press-clip safe to install?
- What can press-clip access on my machine?