PowerPoint CLI
For installation and requirements, see README.md.
Batch Mode (recommended)
The server is stateful — create a presentation, then build it up, then save. Use the batch runner to execute multiple commands in a single session:
echo '<json>' | bun ~/.pi/agent/skills/powerpoint/powerpoint-batch.ts
bun ~/.pi/agent/skills/powerpoint/powerpoint-batch.ts recipe.json
bun ~/.pi/agent/skills/powerpoint/powerpoint-batch.ts --recipe '<json>'
Input format — a JSON object with a commands array:
{
"commands": [
{ "tool": "create_presentation" },
{ "tool": "add_slide", "args": { "title": "Hello World" } },
{ "tool": "manage_text", "args": { "slide_index": 0, "operation": "add", "left": 1, "top": 2, "width": 8, "height": 1, "text": "Body text", "font_size": 18 } },
{ "tool": "save_presentation", "args": { "file_path": "./output.pptx" } }
]
}
Output: JSON array of { tool, result } objects (or { tool, error } on failure).
The batch runner auto-injects presentation_id into all commands after create_presentation/open_presentation, so you don't need to track it yourself.
Single-Command Mode
For one-off read operations, use the single-command CLI:
bun ~/.pi/agent/skills/powerpoint/powerpoint-cli.js <command> [flags]
bun ~/.pi/agent/skills/powerpoint/powerpoint-cli.js --help
Useful for inspection commands that don't need state:
bun <cli> list-slide-templates
bun <cli> get-template-info --template-id title_slide
bun <cli> get-server-info
Available Tools
Lifecycle
create_presentation— create empty presentationcreate_presentation_from_template— create from .pptx template:{ "template_path": "./template.pptx" }open_presentation— open existing file:{ "file_path": "./deck.pptx" }save_presentation— save to file:{ "file_path": "./output.pptx" }get_presentation_info— slide count, dimensions, propertiesset_core_properties— set title, author, keywords, etc.
Slides
add_slide— add a slide:{ "layout_index": 1, "title": "Slide Title" }- layout_index: 0=Title, 1=Title+Content, 2=Section, 5=Blank, etc.
- Optional:
background_type("solid"/"gradient"),background_colors,color_scheme
get_slide_info— shapes, layout info:{ "slide_index": 0 }extract_slide_text— all text from a slide:{ "slide_index": 0 }extract_presentation_text— all text from all slides
Text Content
populate_placeholder— fill a layout placeholder:{ "slide_index": 0, "placeholder_idx": 1, "text": "Hello" }add_bullet_points— bullets in a placeholder:{ "slide_index": 0, "placeholder_idx": 1, "bullet_points": ["A", "B", "C"] }manage_text— add/format text boxes:Operations:{ "slide_index": 0, "operation": "add", "left": 1, "top": 2, "width": 8, "height": 1, "text": "Hello", "font_size": 24, "bold": true, "color": [0, 0, 0] }add,format,validate,format_runs
Images
manage_image— add/enhance images:{ "slide_index": 0, "operation": "add", "image_source": "./photo.png", "left": 1, "top": 2, "width": 4, "height": 3 }source_type: "file" (default), "url", "base64"
Tables
add_table— add a data table:{ "slide_index": 0, "rows": 3, "cols": 4, "left": 1, "top": 2, "width": 8, "height": 3, "data": [["H1","H2","H3","H4"],["a","b","c","d"],["e","f","g","h"]] }format_table_cell— style a cell:{ "slide_index": 0, "shape_index": 0, "row": 0, "col": 0, "bold": true, "bg_color": [68, 114, 196] }
Charts
add_chart:Note:{ "slide_index": 0, "chart_type": "bar", "left": 1, "top": 2, "width": 8, "height": 4, "categories": ["Q1","Q2","Q3"], "series_names": ["Revenue"], "series_values": [[100, 200, 300]] }series_valuesis an array of arrays (one inner array per series). Chart types:bar,column,line,pie,scatter,area,doughnutupdate_chart_data— replace data on existing chart
Shapes & Connectors
add_shape:Types:{ "slide_index": 0, "shape_type": "rectangle", "left": 1, "top": 1, "width": 3, "height": 2, "fill_color": "4472C4", "text": "Box" }rectangle,rounded_rectangle,oval,triangle,diamond,arrow_right, etc.add_connector— lines/arrows between points:{ "slide_index": 0, "connector_type": "straight", "start_x": 2, "start_y": 3, "end_x": 6, "end_y": 3 }
Design & Styling
apply_professional_design— apply themes:{ "operation": "apply_theme", "color_scheme": "modern_blue" }- Operations:
apply_theme,design_slide,enhance_slide
- Operations:
apply_picture_effects— shadow, reflection, etc.optimize_slide_text— auto-resize fonts:{ "slide_index": 0 }manage_fonts— analyze/optimize:{ "operation": "analyze", "font_path": "./deck.pptx" }
Templates
list_slide_templates— list available layout templatesget_template_info— details about a template:{ "template_id": "title_slide" }apply_slide_template— apply template to existing slidecreate_slide_from_template— new slide from templatecreate_presentation_from_templates— full deck from template sequenceauto_generate_presentation— auto-generate from topic:{ "topic": "Q4 Results", "slide_count": 8, "presentation_type": "business", "color_scheme": "modern_blue" }
Other
manage_hyperlinks— add/remove/list linksmanage_slide_transitions— set/remove transitionsmanage_slide_masters— inspect master layouts
Reference
- Positions (
left,top) and sizes (width,height) are in inches. Standard slide is 10×7.5. - Slide indices are 0-based.
- Colors: hex RGB without
#for shape fills (e.g.,"4472C4"), RGB arrays[r, g, b]for text/cell colors. - Color schemes:
modern_blue,corporate_gray,elegant_green,warm_red. - Tool names accept both
snake_caseandkebab-case.
Scan to join WeChat group