headless-word
Word document automation via LibreOffice for headless environments.
Install
uv tool install headless-word
Agent Skill
npx skills add hewliyang/headless-word
Requirements
- Python 3.10+
- LibreOffice 25.2+ (with Writer)
poppler-utilsfor screenshots (pdftoppm)
Quick Start
headless-word check # verify LibreOffice is installed
headless-word start # start the daemon
headless-word new doc.docx # create a new document → session ID
headless-word get-document-text <sid>
headless-word screenshot <sid> --page 1 --out page1.png
headless-word stop # stop the daemon
Commands
headless-word <command> [options]
Daemon:
start Start the LibreOffice daemon
stop Stop the daemon
status Check daemon status
check Check environment setup
Sessions:
open Open a document
new Create a new document
save Save a document
close Close a session
list List open sessions
export-pdf Export as PDF
Reading:
get-document-text Get document text (paragraphs, styles, lists)
get-document-structure Get document structure (headings, tables, sections)
get-ooxml Extract OOXML for inspection
screenshot Render a page to PNG
Writing:
execute Execute Python/UNO code inside LibreOffice
insert-ooxml Insert raw OOXML elements into document
Live Preview:
watch Live document viewer with auto-reload
Metadata
Release files for headless-word 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| headless_word-0.1.1.tar.gz | 521.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| headless_word-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 560.5 kB
Release files / headless_word-0.1.1.tar.gz
| Download URL | headless_word-0.1.1.tar.gz |
|---|---|
| Size | 521.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4da6e7f94c1de9bdf95c7a26398550a3abf003d855673f3e5923b37db6ee30c7
|
|
BLAKE2b-256 checksum How to use checksums |
c620fb5ef5d7c6d39b6fd8b37dc35d8366ebec61cd3fdccc28158cc3c3453a21
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.
Transparency logRelease files / headless_word-0.1.1-py3-none-any.whl
| Download URL | headless_word-0.1.1-py3-none-any.whl |
|---|---|
| Size | 39.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
918ff37f5251e2786a41b0c3d5ed953c99537132eaebb02498f9afa7120f56f3
|
|
BLAKE2b-256 checksum How to use checksums |
fbf5481d5cdb2fd8283aec2fbb79eb3be07c4ebc3f6a5c077acdf33390b526a5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 2, 2026.
Transparency log