Open-source agent skill · MIT

One sentence in,
a designed web page out

Markdown, Excel, Word, tables, images or a paragraph of text — hand it to your AI agent, pick a theme, and get a self-contained page you can host anywhere.

See 19 themes View on GitHub ↗
Markdown Excel .xlsx Word .docx Images Tables Plain text
easy-html
Capabilities

Not a format converter — a redesign

Most tools just move your text into HTML. easy-html treats the content as design material.

Everything goes in

Six input types, one pipeline: every Excel sheet becomes a table, Word headings and tables are parsed with zero dependencies, images can be embedded or reproduced as layout.

MarkdownExcelWordImagesTablesPlain text

Visualisation first

A mandatory scan step finds the numbers, ratios, rankings, trends and timelines in your content and turns them into KPI cards, progress bars, donuts and real charts — instead of another wall of text.

KPI cardsChartsProgress barsTimelines

Layout inheritance

Already have a beautiful deck or design mock-up? The original structure is kept pixel-for-pixel and only the palette and fonts are re-mapped — so cycling through all 19 themes can never make it worse.

Layout preserved19 themesFonts follow
How it works

A four-step pipeline

You provide the content and pick a theme. The agent does the rest.

1

Normalise input

Six formats parsed into structured blocks — headings, paragraphs, tables and data, nothing dropped.

2

Scan for visuals

Numbers become KPI cards, trends become line charts, rankings become bars, steps become timelines.

3

Build the skeleton

A semantic page structure with layout, components and charts in place — colour is left to the theme.

4

Theme & ship

Pick any of 19 themes, swap freely, then publish the self-contained file anywhere.

Path A · Rebuild Loose content (text / tables / docs) → full redesign | Path B · Inherit Finished layout (polished HTML / design) → recolour only
Get started

Install and run

Two dependencies, no build step, no account.

1 · Install the engine

The 19 themes come from the sibling project html-golive. It also gives you one-command publishing.

# theme CSS engine (+ optional publishing) pip install html-golive # optional, only to read .xlsx pip install openpyxl

2 · Add the skill to your agent

Self-contained directory — no cross-skill imports, no shared runtime.

# OpenClaw clawhub install easy-html # Claude Code cp -r easy-html ~/.claude/skills/ # Cursor cp -r easy-html .cursor/skills/

3 · The pipeline in six commands

Normally your agent runs these for you — but nothing is hidden, and every step works standalone.

# normalise the input python3 scripts/ingest.py report.xlsx > blocks.json # (the agent writes a semantic HTML skeleton from blocks.json) # inject layout + components + chart helper python3 scripts/apply_layout.py page.html # pick one of 19 themes python3 scripts/apply_style.py page.html --style bloomberg -o out.html # title + favicon FAV=$(python3 scripts/make_favicon.py --emoji 📊) python3 scripts/set_meta.py out.html --title "Q3 Report" --favicon "$FAV" # publish (optional — it is a plain file, host it anywhere) golive publish out.html --name "Q3 Report"

Layout inheritance mode

When the input already looks good: map its :root colours onto the seven --eh-* variables, then swap themes at will. The layout never moves.

python3 scripts/inherit_layout.py deck.html --check python3 scripts/inherit_layout.py deck.html --style palace -o out.html
QWhich input formats are supported?

Markdown, plain text, Excel (.xlsx), Word (.docx), pasted or Markdown tables, stdin, images, and existing HTML. Legacy .xls / .doc need to be saved in the modern format first — the parser tells you so explicitly instead of failing silently.

QWhere does the page get published?

Wherever you like. The output is a self-contained single HTML file, so GitHub Pages, Netlify, Vercel, an S3 bucket, python3 -m http.server or an email attachment all work. html-golive gives you a one-command self-hosted option if you want URLs on your own infrastructure.

QCan I change the theme afterwards?

Yes, any number of times. Themes only carry colour and typography; layout and content live in the skill's own CSS, so the two layers never fight. Re-running apply_style.py with a different key is all it takes.

QDoes it phone home or download anything silently?

No. The theme engine is resolved in a fixed order — EASY_HTML_CSS_ENGINE, then the installed golive package, then a local source tree — and if none is found the script exits with install instructions rather than fetching code. Chart.js is loaded from public CDNs at page-view time, and you can point window.EH_CHART_CDN at your own mirror for offline use.

QWhich agents does it work with?

Any agent that can read a SKILL.md and run Python — OpenClaw, Claude Code and Cursor are the tested ones. The scripts are also plain CLIs, so you can drive the whole pipeline by hand without an agent at all.

Give your next document a web page

Part of the html-tool-suite — a set of skills for generating, publishing and sharing HTML.

Get easy-html on GitHub ↗