moonlight-lupin/agent-skills/media-analyzer
Claude Code and agent skill by moonlight-lupin/agent-skills
- community
Checking that the SKILL.md file is still in the repository.
Use when an article or media piece needs rhetorical or technique-focused analysis — detects rhetorical tools (loaded language, cherry-picking, source selection bias, framing, omission, emotional appeals, false balance) in articles and produces a structured analysis report. Identifies specific techniques without labeling political positions.
Install
npx vskill@latest install moonlight-lupin/agent-skills/media-analyzerSKILL.md
Media Analyzer
Overview
Media Analyzer is a technique-focused workflow for reading news articles, opinion pieces, press releases, and other media with a critical but neutral lens. Media texts often use rhetorical choices to shape perception: emotionally charged verbs, selective statistics, source mixes, framing metaphors, omissions, emotional appeals, and disproportionate presentation of evidence. This skill identifies those observable techniques systematically without deciding which political position is correct.
Use this skill when the goal is to understand how a text guides interpretation. Do not use it to label an outlet, author, or article as left-wing, right-wing, conservative, liberal, pro-X, or anti-Y. The output is a structured analysis report that surfaces technique usage and leaves conclusions to the reader.
Core Principle: Detect Techniques, Not Positions
The central rule is: DETECT TECHNIQUES, NOT POSITIONS.
Never label a source as "left-wing," "right-wing," "conservative," "liberal," or "biased toward X." Instead, identify specific rhetorical tools:
- loaded words and their neutral alternatives;
- source types quoted or omitted;
- statistics cited and relevant data not cited;
- framing devices such as metaphor, naming choices, presupposition, or loaded questions;
- emotional appeal patterns;
- false balance between positions with unequal evidence weight.
A valid finding says: "The article uses three high-intensity verbs in the first four paragraphs." An invalid finding says: "The article is biased against the policy." Keep the analysis observable, specific, and politically direction-neutral.
Quick Start
From this skill directory:
Save scan output and generate a report:
Review the loaded-language dictionary:
Completion criterion: the report lists detected technique signals, identifies where contextual research is still required, explains the bias-signal spectrum as intensity only, and avoids political-direction labels.
The 7 Technique Categories
1. Loaded Language
Definition: Emotionally charged verbs, adjectives, nouns, or modifiers replace neutral wording and guide the reader's reaction.
Detection criteria: Compare word choice against neutral alternatives. Ask whether the same factual event could be reported with less emotional force.
Examples:
- "slammed" vs. "responded";
- "devastating" vs. "significant";
- "blasted" vs. "criticized."
Script support: scripts/analyze.py counts loaded words against a built-in word list of aggressive verbs, emotional adjectives, dismissive terms, and framing words. Each detected instance includes paragraph context and a neutral alternative.
2. Cherry-Picking
Definition: Citing only data, examples, or time periods that support a thesis while leaving out readily available qualifying or conflicting data.
Detection criteria: Compare cited statistics against available data on the topic. Check time windows, baselines, revisions, uncertainty, and representative comparison groups.
Examples:
- citing one month of sales growth while omitting the annual decline;
- highlighting one school result without district-wide comparison;
- reporting a single survey question while omitting the full survey context.
Script support: The script does not verify cherry-picking. Use it to scan the article, then use a web search tool and web extraction tool to locate primary data and compare what exists against what was cited.
3. Source Selection Bias
Definition: Quoting or paraphrasing sources from only one institutional type or perspective when the topic has relevant perspectives beyond that group.
Detection criteria: Count and categorize quoted or attributed sources by institutional type: official, expert, citizen, organization, or unknown. Then assess whether the source mix fits the topic.
Examples:
- a transit article quotes only agency officials and no riders or independent planners;
- a workplace article quotes only management and no employees or outside labor experts;
- a product safety story quotes only a manufacturer and no regulator or customer.
Script support: scripts/analyze.py extracts attribution patterns such as "according to X," "X stated," "said X," and quoted statements followed by attribution. It categorizes source mentions by keyword.
4. Framing
Definition: Presenting information in a way that guides interpretation through naming, metaphor, order, headline wording, presupposition, or question structure.
Detection criteria: Identify framing devices such as metaphor, presupposition, loaded questions, and naming choices.
Examples:
- "rightsizing" frames job cuts as correcting a size error;
- "gaming industry" vs. "gambling industry" uses different naming frames for the same businesses;
- "streamlining" presupposes the existing process was inefficient;
- "Why did the plan fail?" presupposes failure before demonstrating it.
Script support: The script can count questions and loaded words that may indicate framing. Framing judgment requires analyst or LLM review.
5. Omission
Definition: Relevant context is left out in a way that changes how readers understand the article.
Detection criteria: Check what topics, baselines, time periods, caveats, or primary-source context are absent but relevant.
Examples:
- incident counts without a baseline rate;
- budget changes without inflation-adjusted context;
- study results without sample size or limitations.
Script support: The script cannot know what is missing. Use a web search tool to identify available context, primary sources, timelines, and caveats.
6. Emotional Appeals
Definition: Appeals to fear, outrage, pity, anger, urgency, or authority that may steer reader response or substitute for evidence.
Detection criteria: Identify emotional manipulation patterns and compare their intensity against the evidence provided.
Examples:
- "think of the children" used as a debate-closing appeal;
- fear-mongering language such as "catastrophe" without scale or likelihood;
- outrage manufacturing through repeated scandal terms without proportional evidence.
Script support: scripts/analyze.py detects fear words, outrage words, pity appeals, appeal-to-authority phrases, and urgency phrases.
7. False Balance
Definition: Presenting unequal evidence positions as equivalent.
Detection criteria: Compare the weight given to majority and minority positions, including source expertise, evidence quality, and consensus level.
Example: If 97% of relevant scientists say X and 3% say Y, an article gives equal space to both without explaining the evidence imbalance.
Script support: Source counts can suggest a space-allocation pattern, but false-balance analysis requires contextual research into evidence weight.
The 4-Stage Pipeline
1. Extract
Pull the article text into Markdown or plain text. Identify the title, author, publication date, source URL if available, sources cited, direct quotes, and visible statistics.
Completion criterion: the article text is available locally and source metadata is recorded if available.
2. Scan
Run rule-based analysis:
The scan reports:
- loaded-language count and instances;
- source mention extraction and source-type counts;
- emotional appeal patterns;
- paragraph count, average sentence length, questions, and exclamation marks;
- technique-count intensity score.
Completion criterion: analysis.json exists and includes the article's word count, technique count, and bias-signal spectrum score.
3. Contextualize
Use contextual research for what the script cannot know:
- Cherry-picking: use web search to find primary datasets, longer time series, revisions, and independent summaries.
- Omission: search for relevant baselines, caveats, event history, and missing affected groups.
- False balance: compare evidence weight, source expertise, and consensus level.
- Framing: review headline, lead, order, naming choices, and presupposed questions.
Completion criterion: the analyst can state what relevant context was checked and whether missing context was detected, not detected, or uncertain.
4. Report
Generate a draft report:
Then fill in context-dependent sections using the contextual research. Use templates/analysis-report.md when writing a report manually.
Completion criterion: the final report contains specific instances, a bias-signal spectrum, and a "What's Missing" section populated from research or marked "not detected / insufficient context."
Output Format
Reports should follow this structure:
The Bias-Signal Spectrum
Use the spectrum as an intensity scale for observable bias signals, not a political label:
The score rates density and intensity of rhetorical tools, framing choices, source-selection patterns, and other observable signals. It does not say what direction the article leans. The script counts signals only for things that are unusual in neutral copy — normal journalism must not score:
- loaded-language hits (any) → 1 signal;
- single-perspective sourcing (3+ sources, all one type) → 1 signal — plain attribution never counts;
- distinct emotional-appeal patterns → up to 2 signals (capped, so a wordlist pile-up alone can't reach "Partisan");
- 2+ rhetorical questions → 1 signal (a single question is ordinary);
- any exclamation marks → 1 signal (rare in straight news copy).
The total maps to the label:
0signals → Neutral;1-2signals → Slight lean;3-4signals → Clear lean;5+signals → Partisan.
Reserve the word "Propaganda" for exceptional human-reviewed cases with dense, coordinated technique usage and strong evidence that informational accuracy is subordinated to persuasion. Do not apply it casually.
Neutrality Rules
Critical rules:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingresearch/media-analyzer/SKILL.md
Popularity
- Repository stars
- 76
- Repository forks
- 12
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/moonlight-lupin/agent-skills/media-analyzer)