Skip to content
Content
Skill

/scout

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

BOOST
From plugin
data2story-skill
15827 skills
Install
$ npx -y skills add QinghongLin/data2story-skill --skill scout --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/scout

Context 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

SKILL.md

scout.SKILL.md
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

Scout

> **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.

Setup

  • `DATA_DIR` = first argument
  • `PROJECT_DIR` = second argument
  • `SKILL_DIR` = the directory containing this `SKILL.md` (`.../skills/data2story-pro/scout`)
  • Read `PROJECT_DIR/detective.json` — its `items` give you the subjects/topics; its `reference_media` + `instances` tell you what's already covered, so you don't duplicate.
  • Read any existing manifests in `PROJECT_DIR/assets/` (`wikimedia_manifest.json`, `flags_manifest.json`, `logos_manifest.json`) for the same reason.
  • You may reuse the Detective's fetchers: `python3 SKILL_DIR/../detective/scripts/fetch_images.py` (and `fetch_flags.py`, `fetch_logos.py`, `fetch_openverse.py`).
  • Output: `PROJECT_DIR/scout.json` (write **incrementally**). Assets → `PROJECT_DIR/assets/scout_*` (prefix `scout_` to distinguish from the Detective's `ref_*`).

When to run (always — the cinematic + BGM are mandatory on EVERY blog)

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.

Step 1 — Music (a REAL sourced track + its cover, never AI) — MANDATORY ON EVERY BLOG

**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

Read more
Ships withdata2story-skill

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.

Get the whole plugin
Stats
158
Stars
23
Forks
Maintained
Maintenance
Python
Language
MIT
License
3mo ago
Last commit
5mo ago
Created
6d ago
Added

Repo: QinghongLin/data2story-skill

Other skills on data2story-skill.