Quickstart
Install Witan, create a deck, run a script, and render the result. No signup or API key is required for the personal tier.
1. Install
Install the standalone binary with the quick install script:
curl -fsSL https://witanlabs.com/install.sh | sh
Alternatively, use npm or PyPI:
npx witan --help
uvx witan --help
2. Install the agent skill
If you use Witan through a skills-aware coding agent, install the Witan skills:
npx skills add witanlabs/witan-cli --skill witan-pptx-officejs
The witan-pptx-officejs skill gives the agent the command shapes, Office.js runtime notes, and chart extension reference.
3. Create a deck
Create a small presentation:
witan pptx exec quickstart.pptx --create --save --stdin <<'JS'
return await PowerPoint.run(async context => {
const slide = context.presentation.slides.getItemAt(0);
slide.background.fill.setSolidFill({ color: "#F7F8FA" });
slide.shapes.addTextBox("Quarterly Review", {
left: 60,
top: 56,
width: 520,
height: 60
}).textFrame.textRange.font.size = 34;
slide.shapes.addTextBox("Created with Witan Presentations", {
left: 64,
top: 128,
width: 520,
height: 36
});
await context.sync();
return context.presentation.slides.getCount().value;
});
JS
--create refuses to overwrite an existing file. Delete quickstart.pptx or choose another path before rerunning.
4. Render the slide
witan pptx render quickstart.pptx --slide 1 -o quickstart-slide-1.png
The command prints the output path and render metadata:
quickstart-slide-1.png
slide=1 | dpr=1 | image/png
5. Add a chart
witan pptx exec quickstart.pptx --save --stdin <<'JS'
return await PowerPoint.run(async context => {
const slide = context.presentation.slides.getItemAt(0);
const shape = slide.shapes.addChart(PowerPoint.ChartType.columnClustered, [
["Quarter", "Revenue", "Margin"],
["Q1", 12, 0.31],
["Q2", 18, 0.34],
["Q3", 25, 0.39],
["Q4", 31, 0.43]
], {
left: 70,
top: 210,
width: 620,
height: 310,
name: "Revenue Chart",
seriesBy: "columns"
});
const chart = shape.getChart();
chart.title.text = "Revenue and Margin";
chart.legend.position = "Bottom";
chart.series.getItemAt(1).chartType = PowerPoint.ChartType.lineMarkers;
chart.series.getItemAt(1).axisGroup = PowerPoint.ChartAxisGroup.secondary;
await context.sync();
return chart.name;
});
JS
Render again after chart edits:
witan pptx render quickstart.pptx --slide 1 -o quickstart-chart.png
6. Compare visual changes
Use --diff to compare a fresh render against a baseline:
witan pptx render quickstart.pptx --slide 1 -o before.png
# ... edit the deck ...
witan pptx render quickstart.pptx --slide 1 --diff before.png -o diff.png
Next steps
- CLI Scripting - flags, input handling, saving, and runtime behavior.
- Render - full slide rendering reference.
- Charts - supported chart families and examples.
- pptx API - generated scripting reference.