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.