Sandbox
@QinghongLin/data2story-skill

Data journalism skill for Claude Code and Codex

Data2Story is a skill bundle that turns data into a self-contained HTML article with charts, media, and source links. The main orchestrator is `skills/data2story/SKILL.md`, which runs a fixed sequence of roles from research through verification, and `data2story-pro` offers a larger version of the same idea.

155 stars22 forksPythonUpdated 2mo ago
Who it's for

Builders who want their agent to research data, draft the story, generate visuals, and verify every claim in one run.

What it delivers

You can turn a dataset into a publishable story where every sentence and visual is traceable to evidence.

What it does

Seven-role newsroom pipeline

Runs Detective, Analyst, Editor, Designer, Programmer, Auditor, and Inspector in order, each producing its own artifact.

Evidence-linked claims

Tags sentences and visuals back to source IDs, then builds `viewer.html` so you can click a claim and inspect the evidence behind it.

Multimodal story generation

Chooses charts, images, video, audio, maps, and interactive elements based on the data, with media generation routed through OpenRouter.

Versioned, verifiable runs

Writes each run to its own project folder and snapshots the skill versions used so the result can be traced and checked later.

Progressive disclosure skill layout

Keeps instructions in `SKILL.md` and pushes schemas, field rules, and lookup tables into `references/` folders that load only when needed.

How to get it

  1. 1Set your API key. Media generation routes through OpenRouter by default
    export OPENROUTER_API_KEY=sk-or-...
  2. 2Claude Code — make the skill available (place skills/data2story/ under…
    /data2story data/pick_a_card
  3. 3Codex / other agents — open the repo and ask the agent to follow the orchestrator
    Read skills/data2story/SKILL.md and run the Data2Story pipeline on data/pick_a_card

README

Data2Story

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.

Website arXiv License: MIT

What it does

https://github.com/user-attachments/assets/7a2e2b65-3289-431d-b06a-230252df8774

  • Dataset → finished article. Point it at a CSV, a folder of data, or a paper, and a fixed pipeline of seven roles produces a publishable HTML story end to end.
  • Evidence-grounded. Every sentence and visual links back to its source. The pipeline emits a viewer.html inspector where you can click any claim to see the data, code, or citation behind it.
  • Multimodal by default. Charts, images, video, audio, maps, and interactive elements — chosen from the data's actual properties, not a fixed checklist. Media generation routes through OpenRouter.
  • Verifiable. Each run writes to its own versioned project folder and snapshots the exact skill versions used, so every result can be traced and re-checked.
  • Progressive disclosure. Each role's SKILL.md holds only its instructions; bulky reference material (output schemas, field rules, lookup tables) lives in that role's references/ folder as JSON and is loaded only when needed.

Two versions. The repository ships two peer skills under skills/ — the richer, current build is data2story-pro; the paper's reproducible version is data2story.

SkillInvokeWhat it is
data2story-pro/data2story-proImproved version of data2story. See skills/data2story-pro/README.md.
data2story/data2storyThe paper's canonical 7-role pipeline.

Updates

Installation & usage

Data2Story is an agent skill. The orchestrator lives in skills/data2story/SKILL.md — it works first-class with Claude Code, and equally with Codex, Cursor, Gemini CLI, and other agents.

  1. Set your API key. Media generation routes through OpenRouter by default:

    export OPENROUTER_API_KEY=sk-or-...
    
  2. Run the skill on a dataset:

    • Claude Code — make the skill available (place skills/data2story/ under ~/.claude/skills/, or run from inside this repo), then:

      /data2story data/pick_a_card
      
    • Codex / other agents — open the repo and ask the agent to follow the orchestrator:

      Read skills/data2story/SKILL.md and run the Data2Story pipeline on data/pick_a_card
      
  3. Open the output: index.html (the finished article) and viewer.html (the evidence inspector).

Project structure

data2story-skill/
├── skills/
│   ├── data2story/           the paper's canonical 7-role pipeline    ·  /data2story
│   ├── data2story-pro/       the extended 14-agent build              ·  /data2story-pro
│   │                         └ self-contained: its own README, package.json, example data/
│   ├── frontend-design/      visual design system used by data2story
│   ├── frontend-design-pro/  extended design system used by data2story-pro
│   ├── dataviz-craft/        chart-craft recipes               ·  data2story-pro helper
│   ├── find-data/            dataset discovery & validation    ·  data2story-pro helper
│   └── sparring-partner/     idea-to-topic ideation            ·  data2story-pro helper
├── .claude-plugin/           marketplace.json  ·  installs either skill
└── assets/                   shared images

Inside each orchestrator, a role is a SKILL.md + a references/ folder (JSON schemas & lookup tables) + any scripts/ it runs — e.g. designer/scripts/ (OpenRouter media tools), inspector/scripts/ (the verify.py / generate_viewer.py verifier), detective/scripts/ (media fetch helpers).

The virtual newsroom

Think of it as a small newsroom in a box. Each role reads what the previous one produced, then adds its own artifact — a fixed pipeline that runs once, end to end.

#RoleWhat it doesProduces
1DetectiveResearches external context — domain background, history, why the data mattersdetective.json
2AnalystExhaustively profiles the data — distributions, correlations, trends, anomaliesanalyst.json, code/*.py
3EditorDecides the narrative — what the article argues and which findings mattereditor.md, editor.json
4DesignerChooses how to show each point — charts, images, video, audio, interactivesdesigner.json, assets/
5ProgrammerBuilds the final HTML, tagging every element with its source IDsindex.html
6AuditorFixes layout issues — overlap, spacing, alignment — without changing contentindex.html (fixed), auditor.json
7InspectorVerifies every sentence traces to its evidence; builds an interactive viewerinspector.json, viewer.html
flowchart TB
    DATA[(dataset)]

    subgraph plan [Plan and design]
        direction LR
        DET[Detective] -->|detective.json| ANA[Analyst]
        ANA -->|analyst.json + code| EDT[Editor]
        EDT -->|editor.md + editor.json| DES[Designer]
    end

    subgraph build [Build and verify]
        direction LR
        PRG[Programmer] -->|index.html| AUD[Auditor]
        AUD -->|index.html| INS[Inspector]
    end

    DATA --> DET
    DES -->|designer.json + assets| PRG
    INS -->|inspector.json + viewer.html| OUT([article + evidence viewer])

License

Released under the MIT License.

Acknowledgement

If you use Data2Story in your research, please kindly cite:

@article{data2story,
  title   = {Data Journalist Agent: Transforming Data into Verifiable Multimodal Stories},
  author  = {Lin, Kevin Qinghong and EI, Batu and Shi, Yuhong and Lu, Pan and Torr, Philip and Zou, James},
  journal = {arXiv preprint arXiv:2606.11176},
  year    = {2026}
}

Files in the repo

Repository payload6 top-level entries
  • .claude-plugin
  • assets
  • skills
  • .gitignore
  • LICENSE
  • README.md

Discussion (0)

Ask about usage, or say what you built with it

Sign in to join the discussion.

No comments yet. Be the first to say what this is good for.

More skills

Turn any codebase, with its docs, SQL schemas, configs, and PDFs, into a queryable knowledge graph. A /graphify skill for Claude Code, Cursor, Codex, and Gemini CLI: local deterministic AST parsing, every edge explained, no vector store.

117k
1 add

Open-source AI job search: scan job portals, evaluate listings into a structured A-H report with a global 1-5 score, tailor your CV, track applications — runs locally in your AI coding CLI (Claude Code, Codex, OpenCode, Antigravity…)

71k
ayghri/
i-have-adhd

A skill to stop your coding agent from burying the answer. ADHD-friendly output.

38k
mvanhorn/
last30days-skill

AI agent skill that researches any topic across Reddit, X, YouTube, HN, Polymarket, and the web - then synthesizes a grounded summary

62k
Nanako0129/
sepia

De-AI writing skill for any Agent Skills-compatible agent (77+ via the Skills CLI), with native plugins for Claude Code, Codex, Grok Build, and Antigravity. Narrative-architecture repair for fiction, venue-matched rules for professional prose. Based on StoryScope (arXiv:2604.03136).

2.5k
Imbad0202/
academic-research-skills

Academic Research Skills for Claude Code: research → write → review → revise → finalize

48k