with one click
superdoc-edit-docx
// Edit, query, and transform Word documents with the SuperDoc CLI v1 operation surface. Use when the user asks to read, search, modify, comment, or review changes in .docx files.
// Edit, query, and transform Word documents with the SuperDoc CLI v1 operation surface. Use when the user asks to read, search, modify, comment, or review changes in .docx files.
| name | superdoc-edit-docx |
| description | Edit, query, and transform Word documents with the SuperDoc CLI v1 operation surface. Use when the user asks to read, search, modify, comment, or review changes in .docx files. |
Use SuperDoc CLI for DOCX work. Use v1 commands (canonical operations and their helper wrappers). Do not default to legacy commands unless explicitly needed for v0-style bulk workflows.
Use superdoc if installed, or npx @superdoc-dev/cli@latest as a fallback.
For unknown commands or flags, inspect runtime metadata first:
superdoc describe
superdoc describe command find
superdoc describe command "comments add"
Use describe command for per-command args and constraints.
superdoc open ./contract.docx
superdoc query match --select-json '{"type":"text","pattern":"termination"}' --require exactlyOne
superdoc replace --target-json '{"kind":"text","blockId":"p1","range":{"start":0,"end":11}}' --text "expiration"
superdoc save --in-place
superdoc close
query match when you are modifying existing content and need an exact mutation target.open, commands run against the active/default session when <doc> is omitted.superdoc session list|set-default|save|close for explicit session control.close on dirty state requires --discard or a prior save.Use open --content-override when you want to create a new body from Markdown, HTML, or plain text in one step.
superdoc open --content-override "# Probe Title\n\nALPHA01" --override-type markdown
superdoc save --out ./probe.docx
superdoc close
superdoc open template.docx \
--content-override '<p>ALPHA01 <strong>BRAVO02</strong><br/>CHARLIE03</p>' \
--override-type html
superdoc save --out ./probe.docx
superdoc close
--content-override is the fastest way to seed paragraphs, headings, lists, and <br/> line breaks.--override-type markdown|html|text explicitly. open rejects --content-override without it.query match unless you are modifying content that already exists.When you need deterministic inline formatting after seeding text, insert first, then reuse the returned target block/range.
superdoc open
superdoc insert --value "ALPHA01 BRAVO02 CHARLIE03"
superdoc format apply --block-id <from-insert-receipt> --start 8 --end 15 --inline-json '{"fontSize":16,"fontFamily":"Times New Roman"}'
superdoc format apply --block-id <from-insert-receipt> --start 16 --end 25 --inline-json '{"fontSize":10,"fontFamily":"Arial"}'
superdoc save --out ./probe.docx
superdoc close
receipt.resolution.target.--block-id --start --end formatting is usually shorter than re-querying.query match again only if later steps need to rediscover content by meaning, not by the range you just created.superdoc get-text ./proposal.docx
superdoc get-markdown ./proposal.docx
superdoc info ./proposal.docx
superdoc replace ./proposal.docx \
--target-json '{"kind":"text","blockId":"p1","range":{"start":0,"end":5}}' \
--text "Updated" \
--out ./proposal.updated.docx
<doc> provided), mutating commands require --out unless using --dry-run.insert line-break inserts a real Word line break node inside the current paragraph.insert tab inserts a real Word tab node inside the current paragraph.superdoc insert line-break --block-id p1 --offset 12
superdoc insert tab --block-id p1 --offset 12
format paragraph set-tab-stop / related paragraph formatting commands when you need the tab stop definitions themselves.w:br or w:tab content in exported DOCX.--dry-run to preview any mutation without applying it.--expected-revision <n> with stateful mutations for optimistic concurrency checks.find --type text --pattern "..." or find --query-json '{...}'query match --select-json '{...}' --require exactlyOneblocks list, get-node, get-node-by-idget-text, get-markdown, get-htmlreplace --target-json '{...}' --text "..."insert --block-id <id> --offset <n> --value "..."insert tab, insert line-breakdelete --target-json '{...}'blocks delete, blocks delete-rangemutations apply --steps-json '[...]' --atomic true --change-mode directcreate paragraph --text "..." (with optional --at-json)create heading --input-json '{"level":<n>,"text":"..."}'format apply --block-id <id> --start <n> --end <n> --inline-json '{"bold":true}'format bold, format italic, format underline, format strikethroughlists list, lists getlists insert --node-id <id> --position after --text "..."lists indent, lists outdent, lists set-level, lists set-type, lists convert-to-textcomments add, comments replycomments get, comments listcomments edit, comments resolve, comments move, comments set-internalcomments delete (canonical) or comments remove (alias)track-changes list, track-changes gettrack-changes accept, track-changes reject, track-changes accept-all, track-changes reject-allhistory get, history undo, history redocall <operationId> --input-json '{...}' (JSON output only — --pretty is not supported)Not all --*-file variants are available on every command. Use describe command <name> to check.
Always supported alongside their -json counterpart (use one, not both):
| Flag pair | Available on |
|---|---|
--query-json / --query-file | find, lists list |
--address-json / --address-file | get-node, lists get |
--input-json / --input-file | call, create paragraph |
--at-json / --at-file | create paragraph |
--target-json is widely available on mutation commands but has no --target-file counterpart. Use flat flags (--block-id, --start, --end) as an alternative to --target-json.
--pretty for human-readable output (not supported by call).--quiet to suppress non-essential warnings in pretty mode.--output <json|pretty>, --session <id>, --timeout-ms <n>, --quiet.<doc> can be - to read DOCX bytes from stdin.Legacy v0.x bridge commands still exist:
superdoc search <pattern> <files...>
superdoc replace-legacy <find> <to> <files...>
superdoc read <file>
Use these only when you specifically need v0-style behavior (especially multi-file glob search/replace). For new automations, prefer v1 operations.