From newsroom
Line-edit for readability, accessibility, and SEO without touching facts. This is your technical publishing QA before editorial review—catch typographical errors, rhythm problems, ad placement conflicts, and metadata gaps that confuse search engines.
How this skill is triggered — by the user, by Claude, or both
Slash command
/newsroom:copy-reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Copy review is **technical publishing QA**, not editorial judgment or fact verification. This skill focuses on:
Copy review is technical publishing QA, not editorial judgment or fact verification. This skill focuses on:
This skill does NOT:
final-editor-review)Before copy review, establish your audience profile:
| Audience Factor | Example Values | Impact on Review |
|---|---|---|
| Reading Level | High school (8.0), College (12.0+), Professional jargon-heavy | Flesch-Kincaid score targets; vocabulary simplification; jargon explanations |
| Time Budget | 2 min (news brief), 8 min (investigative), 30 min (whitepaper) | Paragraph length, sentence density, scannable structure |
| Domain Knowledge | Lay audience, Domain experts, Mixed | Define technical terms in context; assume no prior knowledge or assume deep knowledge |
| Device | Mobile-first, Desktop, Print | Sentence length (shorter = mobile-friendly); heading density; link density |
| Language | English (native), English (second language), Bilingual | Passive voice reduction; Latinate word replacement; sentence length |
Red Flag: Copy review proceeding without audience parameters = uneven readability standards.
Most publishers use one of these patterns:
| Pattern | Description | Copy Review Focus |
|---|---|---|
| Top-of-page ad (leaderboard) | 728×90 or 970×250, pre-headline | No image captions or critical content in top 250px; headline spacing clean |
| In-article ads (mid-roll) | 300×250 or 336×280 sidebar/inline | No tombstoning (two ads touching); text wrapping correct; no ad labels bleeding into article text |
| Native ads (sponsored content) | Clearly labeled "Sponsored" or "Partner Content"; same grid system as articles | Review sponsor disclosure is visible, not buried; sponsor links don't masquerade as story links |
| Sticky footer (mobile) | Persistent footer ad on mobile | No footer ad text overlapping article body text; sufficient margin below content |
| Sidebar ads (desktop) | Vertical 160×600 or 300×600 | Article content doesn't narrow to <500px; ad containers have breathing room |
Critical Safety Rules:
| Field | Character Limit | Requirement | Example |
|---|---|---|---|
| Meta Title | 50–60 chars | Unique per article; keyword + brand optional; no clickbait | "How Pesticide Runoff Pollutes County Water: 2025 Investigation" |
| Meta Description | 155–160 chars | Compelling summary; no keyword stuffing; includes hook | "Investigative report reveals how agricultural chemicals contaminate drinking water. Read our analysis of state testing failures." |
| H1 (Article Headline) | — | One per page; matches or closely mirrors meta title | (same as title, usually) |
| Image Alt Text | <125 chars | Describe what's in image; don't repeat caption; include relevant keywords naturally | Alt: "Water sample from Miller County aquifer glowing under UV light, showing fluorescent chemical residue" |
| Open Graph (og:title, og:description, og:image) | — | Mirror meta title/description; 1200×630px image; JPG/PNG | og:image should be unique per article (not site-wide placeholder) |
| Structured Data (JSON-LD, NewsArticle) | — | Include author, datePublished, dateModified, headline, image, description | Required for news index eligibility |
| Element | Requirement | How to Verify |
|---|---|---|
| Color Contrast | 4.5:1 (text), 3:1 (graphics) | Use WebAIM contrast checker; assume no user color-blindness mode |
| Heading Hierarchy | H1 → H2 → H3 (no skips); one H1 per page | Outline test: press Tab, verify logical reading order |
| Links | Descriptive text, not "click here"; sufficient size (24×24px); underlined or high contrast | "Read the investigation" not "click here" |
| Images | Alt text present (or decorative: alt=""); captions for charts/graphs | Every image has alt attribute; charts have long descriptions |
| Video | Captions (live speech), transcript (background audio) | Assume deaf user; assume no audio |
| Forms | Labels associated with inputs (for/id attributes); error messages clear | No placeholder-only labels |
| Mobile | Touch targets 24×24px; zoom to 200% doesn't break layout | Test on real device, not just browser zoom |
Create a style reference for your publication (update once, reuse always):
| Category | Rule | Example/Counterexample |
|---|---|---|
| Numbers | Spell out zero–nine; numerals 10+; exceptions: addresses, percentages, dollar amounts | "Five people" vs. "25 people"; "$5.2M" not "five point two million" |
| Dates | Month DD, YYYY or DD Month YYYY (not MM/DD/YY) | "March 15, 2025" not "3/15/25" |
| Time | 12-hour with a.m./p.m., not 24-hour | "3:30 p.m." not "15:30" |
| Oxford Comma | Use in lists | "Red, white, and blue" not "red, white and blue" |
| Quotes | Double quotes; single quotes inside; attribution after period | "He said, 'Hello.'" not 'He said "Hello."' |
| Acronyms | Expand on first use | "Federal Bureau of Investigation (FBI)" then "FBI" thereafter |
| Emphasis | Italics for publication titles, vessels; bold for headers only | New York Times vs. New York Times |
| Contractions | Use or avoid consistently (decide once per publication) | "don't" or "do not" — pick one, apply everywhere |
| Titles Before Names | "Mayor Jane Smith" or "Jane Smith, mayor"? | Decide; apply consistently |
| State/Country Abbreviations | Two-letter postal codes (AP style) or spell out? | "TX" vs. "Texas" — decide |
Red Flag: Inconsistent application of style rules (some articles spell out numbers, others don't).
Establish Parameters (5 min)
Readability Pass (10–15 min)
Accessibility Audit (10 min)
SEO Metadata Check (5 min)
Ad Placement Safety (5 min)
Style Consistency Pass (10 min)
Final Read (5 min)
Sign-Off
| Mistake | Why It Fails | Fix |
|---|---|---|
| Entire paragraph is one sentence (>50 words) | Reader loses thread; accessibility burden (screen reader pause required) | Break into 2–3 sentences at natural pause points |
| All paragraphs 1 sentence | Feels choppy; no rhythm | Vary: some single, some 2–3 sentences |
| Passive voice everywhere ("The report was issued by the agency.") | Buried actors; weaker voice; harder to parse | Rewrite active: "The agency issued the report." |
| Acronym used without first expansion ("The EPA warned...") | New reader lost; accessibility failure (screen readers spell out "EPA") | First use: "Environmental Protection Agency (EPA) warned..." |
| "Very," "really," "quite," "somewhat" | Weak intensifiers; editorial bias | Delete or replace: "really good" → "increased by 40%" (fact, not opinion) |
| Heading caps: "Flood Waters Rise In Three Counties" | Harder to scan; unclear emphasis | Use sentence case: "Flood waters rise in three counties" |
| Mistake | Why It Fails | Fix |
|---|---|---|
| Red text (no underline) for links on blue background | Color-blind readers can't distinguish; fails 4.5:1 contrast | Underline all links; confirm 4.5:1 contrast ratio |
| Heading hierarchy: H1 → H3 (skips H2) | Screen reader users can't navigate by skipped levels | Follow strict H1 → H2 → H3 hierarchy |
| Alt text is caption or redundant ("Image: Flooded street") | Screen reader repeats caption; wasted alt space | Write unique alt: "Main Street submerged under 4 feet of water, Sept 2025" |
| Decorative image with alt text ("Decorative line separator") | Screen readers read unnecessary text; auditory clutter | Use alt="" (empty) for purely decorative images |
| Video captions auto-generated (unchecked) | Auto-captions often wrong ("river" → "reever"); fail accessibility | Manually review captions; sync timing |
| Mistake | Why It Fails | Fix |
|---|---|---|
| Meta title = article headline (always) | No brand recognition; missed keyword opportunities | Meta title can be slight variation: headline vs. title |
| Meta description copied from first paragraph (no hook) | No reason to click; low CTR | Write benefit-driven summary: "Investigative analysis reveals..." not "The report shows..." |
| og:image is site-wide placeholder | Social shares don't show article-specific image | Generate unique social card per article |
| H1 ≠ meta title | Search engines confused about primary topic | Align H1 and meta title; allow minor variation for readability |
| Keyword stuffed in title ("Water Pollution Investigation Water Pollution Report Water") | Google penalizes keyword stuffing; unreadable | Use keyword once naturally: "Water Pollution Investigation: County Failed Safety Standards" |
| Structured data missing or invalid JSON | News articles not eligible for Google News index | Test with Google Structured Data Tester; include author, datePublished, headline, image |
| Mistake | Why It Fails | Fix |
|---|---|---|
| Article text flows directly into sidebar ad (no margin) | Visual confusion; readers click ad by accident (high bounce rate) | Add 20–30px margin; visual border/background color difference |
| Two ad blocks side-by-side with no gap (tombstoning) | Reads as single mega-ad; low CTR; looks cheap | Ensure grid system prevents adjacent ad slots |
| Sponsored content not labeled "Sponsored" (or buried) | FTC violation; reader deception; destroys trust | Label above-the-fold in 14+ pt font, contrasting color |
| Sticky footer ad covers article body on mobile | Unreadable; high bounce; low engagement | Test on real mobile device; ensure sufficient bottom margin |
| Affiliate links disguised as citations ("Click here for more info [affiliate link]") | Deceptive; undermines credibility; potential legal exposure | Disclose affiliate status upfront; use [Affiliate Link] label if policy requires |
final-editor-review)final-editor-review)If copy review uncovers factual inconsistencies (dates, titles, quotes), do NOT fix them:
final-editor-review with note: "Copy review found potential factual discrepancy: (specific example)"Before marking "Ready for Final Editor Review":
npx claudepluginhub ehurrn/newsroom-extension --plugin newsroomCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.