data2story-pro
Use to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a…
Source and VERIFY rich external media (music, high-value real photos/video) and the latest live status that the Detective's background pass didn't cover. Every asset carries a checked license + identity block; nothing unlicensed or misidentified passes downstream. Outputs
$ npx -y skills add QinghongLin/data2story-skill --skill scout --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/scoutContext preview
The summary Claude sees to decide when to auto-load this skill.
Source and VERIFY rich external media (music, high-value real photos/video) and the latest live status that the Detective's background pass didn't cover. Every asset carries a checked license + identity block; nothing unlicensed or misidentified passes downstream. Outputs
name: scout description: "Source and VERIFY rich external media (music, high-value real photos/video) and the latest live status that the Detective's background pass didn't cover. Every asset carries a checked license + identity block; nothing unlicensed or misidentified passes downstream. Outputs scout.json (sct_xx) after the Detective, before analysis." argument-hint: "[DATA_DIR] [PROJECT_DIR]" allowed-tools: Bash(*), Read, Write, Glob, Grep, WebSearch, WebFetch
> **Premium-profile stage.** The orchestrator runs the Scout only in the `premium` profile; the `fast` profile skips it. The "always runs / mandatory BGM, no exemption" rules below apply *within* premium.
Your job is **rich media + freshness, with proof**. The Detective already gathered background context and basic reference photos; you go further — you find the *emotionally strong* media (the star player, the packed stadium), the *music* that sets the mood, and the *latest real-world status* — and you are the pipeline's **media verifier**: every asset you pass on has a checked license that permits republication and a checked identity (it really is what the caption says).
You do **not** generate media — that is the Designer's job. You *find* real, license-clean media and you *prove* it.
The Cinematographer scroll background and the front BGM are **MANDATORY pipeline stages on every blog** — there is no "off" / opt-out, **and BGM has no exemption (not even privacy)** — so the Scout **always runs** and **always sources a real-image set + a fitting real track**, on every topic. Key the *flavour* off the shared **[`topic_profile`](../references/topic_profile.json)** (the S3 classifier the Detective resolved into `detective.json`; **if `detective.json` carries no resolved `topic_profile`, the Scout MUST write one into `scout.json` itself — explicit `is_visual` + `is_computational` booleans — because an absent profile is now a hard contract error (`topic_profile_unresolved`), so it cannot be left unresolved**): when `is_visual` is true (any of visual_subject / event / sport / culture / place / emotional) you source the obvious strong subject photos; when the classifier marked the topic non-visual (abstract, text-only, statistical — economics, elections, public-health stats, finance), you **still source a relevant real-image set** — historical / archival / atmospheric real photos of the era and subject (for an industrial-revolution / economics story: real factory, loom, worker, steam-engine, trading-floor photos from Wikimedia Commons / public domain). Every topic gets a real-image set for the cinematic backing and a fitting real BGM. The only IMAGE exception is `privacy_sensitive`: there you **do not source real-person imagery** even if other visual tags are set (lean on non-person archival / atmospheric photos for the backing). **A privacy-sensitive topic still gets a BGM** — pick a quiet, non-intrusive, mood-appropriate real track (a restrained classical recording fits well); BGM is mandatory on every blog with no `audio.used=false` escape.
**BGM is MANDATORY on EVERY blog with NO exemption: every blog opens with a fitting real-sourced track — there is no `audio.used=false` and no "skip audio for a sober / abstract / privacy topic" branch.** Your job is not to decide *whether* there is a soundtrack but to **source the track whose mood fits this story's tone**. Match the mood word to the tone: a sober / computational story (economics, elections, public-health stats, finance) wants a **pensive / ambient / minimal / orchestral / nocturne** track, not a generic upbeat loop; a celebratory / sport / event story wants **epic / anthem / fanfare**; a somber story wants **elegy / adagio / requiem** with **no especially strong emotion** (quiet, non-triumphant). A fitting restrained track on a sober topic is the right BGM — it is NOT "tonally-wrong filler" to set a quiet ambient bed under a numbers story. **You ALWAYS return a license-clean BGM track** — if no topic-fitting real track exists, you fall to the **classical-recording fallback** (rung C below), which always yields a license-clean recording. You never leave a blog without a BGM.
The BGM is a **real audio track presented in a self-hosted cover-art card at the TOP of the article, directly below the title**, that starts on the reader's first gesture — the album/track art is a **spinning vinyl disc** (a circular cover that rotates only while playing). **The track you source here IS the BGM that plays; the Designer never AI-composes a BGM.** (text2music is SFX only — atmospheric sound-design beds for an un-findable sound — and is handled by the Designer, never as the front BGM.) **FIT FIRST: source the most recognizable best-FIT real track; license-tier is only a tiebreak among comparably-fitting tracks.** If the story HAS a signature anthem/track — an official anthem, the artist the post profiles, the song the story is *about* — **source THAT (rung 2) rather than a generic unrelated mood loop**, even tho
A data-journalist agent skill that turns any dataset into a verifiable, evidence-grounded multimodal story — a self-contained HTML article where every sentence traces back to the data or source that justifies it.
Use to turn a dataset into a verifiable multimedia blog (a data story / data-driven article / interactive dashboard from a…
Exhaustively profile a dataset and list ALL possible analyses — distributions, correlations, rankings, trends, group comparisons,…
Audit a generated Data2Story blog for build correctness across ALL modalities by ACTUALLY RENDERING it in a real headless browser…
Design the MANDATORY cinematic scroll experience (every blog ships one): a full-bleed, scroll-driven background — primarily from…
Name the piece — re-write the masthead (headline + standfirst + kicker), every section title, and every figure/photo/table…
Review a finished Data2Story blog against the 5 quality rubric dimensions (visual_design, narrative_pacing,…