Install
openclaw skills install zentableRender structured table data as high-quality PNG images using Headless Chrome. Use when: need to visualize tabular data for chat interfaces, reports, or soci...
openclaw skills install zentableRender structured table data into high-quality PNG images.
ZenTable turns messy table-like content into readable, decision-ready table outputs for both mobile (Discord-first) and desktop.
Accepted inputs
Core capabilities
--both)This skill runs local scripts and depends on local runtime binaries (python3, google-chrome).
Review code and dependencies before running in sensitive environments.
zentable (lowercase)ZenTablezeble* / zenble* are legacy compatibility aliasesNAMING_MIGRATION.md (repository document)✅ Use this skill when:
❌ Do not use this skill when:
| Capability | Status | Notes |
|---|---|---|
| CSS output | ✅ Stable | Primary release path; default minimal_ios_mobile + width=450 |
| PIL output | ✅ Stable | Safe fallback when Chrome is unavailable |
| ASCII output | ⚠️ Beta / Experimental | Works, but alignment can drift cross-platform due to font and whitespace behavior |
--both already includes text-theme fallback to default when no text theme exists.When user input is Zx, treat it as a strong render intent:
minimal_ios_mobile + width=450.Data source priority for Zx:
| Sugar | Canonical key | Normalization | Final renderer args |
|---|---|---|---|
--width N / --w N | width | positive int | --width N |
--transpose / --cc | transpose | boolean | --transpose |
--tt | keep_theme_alpha | boolean | --tt |
--per-page N / --pp N | per_page | positive int | --per-page N |
--page ... / --p ... | page_spec | N / A-B / A- / all | expanded by table_renderer.py |
--all | page_spec | equivalent to all | expanded by table_renderer.py |
--text-scale V / --ts V | text_scale | enum/ratio | --text-scale V |
--sort SPEC | sort_spec | single/multi-key | --sort SPEC |
--asc / --desc | sort_default_dir | default direction | --asc / --desc |
--f SPEC / --filter SPEC | filters | repeatable filter | --f SPEC |
--smart-wrap | smart_wrap | true | --smart-wrap |
--no-smart-wrap / --nosw | smart_wrap | false | --no-smart-wrap |
--theme NAME / -t NAME | theme | theme id | --theme NAME |
--both / --bo | output_both | boolean | --both |
--pin KEYS | pin_keys | persist defaults | --pin |
--pin-reset | pin_reset | reset pinned defaults | --pin-reset |
Pinned default baseline:
theme=minimal_ios_mobilewidth=450smart_wrap=trueper_page=15page_spec rulesN: page N onlyA-B: inclusive range A..BA-: from A to last pageall: all pages1-3{
"theme": "minimal_ios_mobile",
"width": 900,
"transpose": false,
"keep_theme_alpha": false,
"per_page": 15,
"page_spec": "2-",
"sort_spec": "score:desc,name:asc",
"sort_default_dir": "asc",
"filters": ["col:!note,attachment", "row:status!=disabled;score>=60"],
"text_scale": "auto",
"smart_wrap": true,
"output_both": false
}
# run from repository root
# basic CSS output
python3 skills/zentable/table_renderer.py - /tmp/out.png --theme minimal_ios_mobile --width 900 --text-scale large --page 1
# transpose + disable smart wrap
python3 skills/zentable/table_renderer.py - /tmp/out.png --theme compact_clean --transpose --no-smart-wrap --page 1
# page range expansion (2-4)
python3 skills/zentable/table_renderer.py - /tmp/out.p2.png --per-page 12 --page 2
python3 skills/zentable/table_renderer.py - /tmp/out.p3.png --per-page 12 --page 3
python3 skills/zentable/table_renderer.py - /tmp/out.p4.png --per-page 12 --page 4
# PNG + ASCII side output
python3 skills/zentable/table_renderer.py - /tmp/out.png --theme mobile_chat --both
python3 -m py_compile scripts/zentable_render.py--pin, --pin-reset, --both verifiedCurrent channel: beta. ASCII remains beta/experimental for SkillHub release.