OfficeCLI: управление Word, Excel и PowerPoint для ИИ

OfficeCLI — первый в мире офисный пакет, спроектированный специально для ИИ-агентов.

Дайте любому ИИ-агенту полный контроль над Word, Excel и PowerPoint — одной строкой кода.

Открытый исходный код. Один бинарный файл. Не требует установки Office. Без зависимостей. Работает везде.

Встроенный движок HTML-рендеринга OfficeCLI воспроизводит документы с высокой точностью — именно это даёт ИИ «глаза». Он преобразует .docx / .xlsx / .pptx в HTML или PNG, замыкая цикл рендеринг → просмотр → исправление.

OfficeCLI создаёт презентацию PowerPoint в AionUi

Процесс создания презентации с помощью OfficeCLI в AionUi

Презентации PowerPoint

Дизайн-презентация в PowerPoint
Бизнес-презентация в PowerPoint
Технологическая презентация в PowerPoint
Презентация о космосе в PowerPoint
Игровая презентация в PowerPoint
Креативная презентация в PowerPoint

Документы Word

Научная статья в Word
Проектное предложение в Word
Годовой отчёт в Word

Таблицы Excel

Таблица бюджета в Excel
Журнал оценок в Excel
Дашборд продаж в Excel

Все документы выше созданы целиком ИИ-агентами с помощью OfficeCLI — без шаблонов и ручного редактирования.

Для ИИ-агентов — запуск одной строкой

Вставьте это в чат вашего ИИ-агента — он прочитает файл навыков и автоматически всё установит:

curl -fsSL https://officecli.ai/SKILL.md

Всё. Файл навыков (skill file) объясняет агенту, как установить бинарный файл и использовать все команды.

Для людей

Вариант А — GUI: Установите AionUi — настольное приложение, позволяющее создавать и редактировать документы Office с помощью естественного языка на базе OfficeCLI. Просто опишите, что вам нужно, и AionUi сделает всё остальное.

Вариант Б — CLI: Скачайте бинарный файл для вашей платформы из GitHub Releases и выполните:

officecli install

Команда копирует бинарный файл в PATH и устанавливает навык officecli во все обнаруженные ИИ-инструменты для написания кода — Claude Code, Cursor, Windsurf, GitHub Copilot и другие. Агент сразу же сможет создавать, читать и редактировать документы Office без какой-либо дополнительной настройки.

Для разработчиков — живая демонстрация за 30 секунд

# 1. Установка (macOS / Linux) — или: brew install officecli / npm install -g @officecli/officecli
curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash
# Windows (PowerShell): irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex

# 2. Создать пустую презентацию PowerPoint
officecli create deck.pptx

# 3. Запустить живой предпросмотр — откроет http://localhost:26315 в браузере
officecli watch deck.pptx

# 4. Открыть второй терминал, добавить слайд — браузер обновится мгновенно
officecli add deck.pptx / --type slide --prop title="Hello, World!"

Всё. Каждая команда add, set или remove будет обновлять предпросмотр в реальном времени. Экспериментируйте — браузер служит живой обратной связью.

Быстрый старт

# Создать презентацию и добавить содержимое
officecli create deck.pptx
officecli add deck.pptx / --type slide --prop title="Q4 Report" --prop background=1A1A2E
officecli add deck.pptx '/slide[1]' --type shape \
  --prop text="Revenue grew 25%" --prop x=2cm --prop y=5cm \
  --prop font=Arial --prop size=24 --prop color=FFFFFF

# Просмотр в виде структуры
officecli view deck.pptx outline
# → Slide 1: Q4 Report
# →   Shape 1 [TextBox]: Revenue grew 25%

# Просмотр как HTML — открывает отрендеренный предпросмотр в браузере без сервера
officecli view deck.pptx html

# Получить структурированный JSON для любого элемента
officecli get deck.pptx '/slide[1]/shape[1]' --json

# Сохранить и закрыть — записывает активную сессию на диск
officecli close deck.pptx
{
  "tag": "shape",
  "path": "/slide[1]/shape[1]",
  "attributes": {
    "name": "TextBox 1",
    "text": "Revenue grew 25%",
    "x": "720000",
    "y": "1800000"
  }
}

Зачем OfficeCLI?

То, что раньше требовало 50 строк на Python и трёх отдельных библиотек:

from pptx import Presentation
from pptx.util import Inches, Pt
prs = Presentation()
slide = prs.slides.add_slide(prs.slide_layouts[0])
title = slide.shapes.title
title.text = "Q4 Report"
# ... ещё 45 строк ...
prs.save('deck.pptx')

Теперь выполняется одной командой:

officecli add deck.pptx / --type slide --prop title="Q4 Report"

Что умеет OfficeCLI:

  • Создавать документы с нуля — пустые или сразу с содержимым

  • Читать текст, структуру, стили, формулы — в виде обычного текста или структурированного JSON

  • Анализировать проблемы форматирования, несоответствия стилей и структурные ошибки

  • Изменять любой элемент — текст, шрифты, цвета, разметку, формулы, диаграммы, изображения

  • Реорганизовывать содержимое — добавлять, удалять, перемещать, копировать элементы между документами

Формат Чтение Изменение Создание

Word (.docx)

Excel (.xlsx)

PowerPoint (.pptx)

Word — полная поддержка i18n и RTL (слоты шрифтов на скрипт, теги языка BCP-47 на скрипт lang.latin/ea/cs, жирность/курсив/размер для сложных скриптов, direction=rtl каскадируется через абзац/фрагмент/раздел/таблицу/стиль/колонтитул/docDefaults, сокращения rtlGutter + pgBorders, учитывающая локаль нумерация страниц для хинди/арабского/тайского/CJK; create --locale ar-SA автоматически включает RTL), абзацы (framePr, сокращения табуляций, отступы в символах), фрагменты текста (underline.color, позиция в полупунктах), таблицы (виртуальные операции над столбцами: добавить/удалить/переместить/скопировать, hMerge), стили, текстовые блоки / фигуры (поворот, textDirection eaVert/vert270, градиент, тень, прозрачность), верхние/нижние колонтитулы, изображения (PNG/JPG/GIF/SVG), уравнения (ввод в LaTeX), диаграммы (mermaid → нативные редактируемые фигуры или любой тип mermaid как полноточный PNG), комментарии, сноски, водяные знаки, закладки, оглавление, диаграммы, гиперссылки, разделы, поля формы, элементы управления содержимым (SDT), поля (22 типа без параметров + MERGEFIELD / REF / PAGEREF / SEQ / STYLEREF / DOCPROPERTY / IF), OLE-объекты, версии / отслеживание изменений (revision.type=ins\|del\|format\|moveFrom\|moveTo + revision.action=accept\|reject, селектор по автору /revision[@author=Alice], отслеживаемый поиск и замена), цвет фона страницы, свойства документа

Excelячейки (фонетическая разметка / фуригана при добавлении, --shift left\|up в стиле Excel-UI при удалении / shift=right\|down при добавлении), формулы (350+ встроенных функций с автоматическим вычислением при записи, динамические массивы с разливом с автопрефиксом _xlfn., финансовые / облигационные и статистические семейства, OFFSET/INDIRECT, тела формул с именованными диапазонами подставляются при разборе, перезапись ссылок в формулах при вставке строк/столбцов), листы (visible/hidden/veryHidden, поля печати, printTitleRows/Cols, RTL sheetView, каскадное переименование листов, фильтр раздувания пустых ячеек при открытии), булевы селекторы and/or (row[Salary>5000 and Region=EMEA]), таблицы, сортировка (лист / диапазон, несколько ключей, с учётом sidecar), условное форматирование, диаграммы (включая box-whisker, Парето с автосортировкой и накопительным %, логарифмическая ось), сводные таблицы (несколько полей, группировка по дате, showDataAs, сортировка, итоги/подитоги, компактный/структурированный/табличный макет, повторение меток элементов, пустые строки, вычисляемые поля, постоянные фильтры labelFilter / topN, копирование кэша + общий доступ между сводными таблицами), срезы, именованные диапазоны, проверка данных, изображения (PNG/JPG/GIF/SVG с резервным двойным представлением), спарклайны, комментарии (RTL), автофильтр, фигуры, OLE-объекты, импорт CSV/TSV, адресация ячеек $Sheet:A1

PowerPointслайды (переключение верхнего/нижнего колонтитула/даты/номера слайда, скрытие), фигуры (узорная заливка, эффект размытия, подсказка гиперссылки + ссылки-переходы на слайды, выделение цветом фрагментов, типизированные add/set/remove для slideMaster/slideLayout, псевдоним стрелки, effective.X + effective.X.src), изображения (PNG/JPG/GIF/SVG, режимы заливки: stretch/contain/cover/tile, яркость/контраст/свечение/тень, поворот, ссылка и подсказка), таблицы (встроенный каталог стилей PowerPoint, виртуальный get /col[C] + swap/copyFrom, перемещение/копирование строк и столбцов, псевдоним заливки/фона), диаграммы (pieOfPie, barOfPie, сеттеры осей/линий сетки для каждого атрибута, добавление/удаление серий с палитрой темы, сокращение anchor=x,y,w,h), анимации (15 пресетов акцента и 16 пресетов выхода на основе шаблонов, цепочки из нескольких эффектов, пресеты траектории движения, repeat/restart/autoReverse, анимации диаграмм + chartBuild), переходы (morph + p14 + 12 пресетов p15 PowerPoint 2013+), 3D-модели (.glb) (комбинированный rotation=ax,ay,az), масштабирование слайда, уравнения (ввод в LaTeX), диаграммы (mermaid flowchart / sequence → нативные редактируемые фигуры или любой тип mermaid как полноточный PNG), темы, соединители (from/to принимают полный путь /slide[N]/shape[@name=Foo]), видео/аудио (цикл, автозапуск), группы (ссылка и подсказка; Get/Query/Add/Remove спускаются внутрь групп), заметки (RTL, язык), комментарии (RTL, устаревшие + современные потоковые комментарии p188 с полным round-trip), SmartArt (round-trip через add-part + raw-set), OLE-объекты, заполнители (add/set по phType)

Варианты применения

Для разработчиков:

  • Автоматизация генерации отчётов из баз данных или API

  • Пакетная обработка документов (массовый поиск и замена, обновление стилей)

  • Построение документных конвейеров в CI/CD (генерация документов по результатам тестов)

  • Безголовая автоматизация Office в Docker и контейнерных средах

Для ИИ-агентов:

  • Генерация презентаций по запросу пользователя (см. примеры выше)

  • Извлечение структурированных данных из документов в JSON

  • Проверка качества документов перед отправкой

Для команд:

  • Клонирование шаблонов документов и заполнение их данными

  • Автоматическая проверка документов в CI/CD-конвейерах

Установка

Поставляется как единый самодостаточный бинарный файл. Среда выполнения .NET встроена — ничего устанавливать не нужно.

Установка одной командой:

# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.sh | bash

# Windows (PowerShell)
irm https://raw.githubusercontent.com/iOfficeAI/OfficeCLI/main/install.ps1 | iex

Или через менеджер пакетов:

# Homebrew (macOS / Linux)
brew install officecli

# Scoop (Windows)
scoop install officecli

# npm (все платформы — загружает нативный бинарный файл для вашей платформы)
npm install -g @officecli/officecli

Или скачайте вручную из GitHub Releases:

Платформа Бинарный файл

macOS Apple Silicon

officecli-mac-arm64

macOS Intel

officecli-mac-x64

Linux x64

officecli-linux-x64

Linux ARM64

officecli-linux-arm64

Windows x64

officecli-win-x64.exe

Windows ARM64

officecli-win-arm64.exe

Проверка установки: officecli --version

Или самоустановка из скачанного бинарного файла (либо просто запустите officecli без аргументов):

officecli install    # явный вызов
officecli            # запуск без аргументов тоже запускает установку

Обновления проверяются автоматически в фоне. Отключить: officecli config autoUpdate false или пропустить для одного вызова с помощью OFFICECLI_SKIP_UPDATE=1. Конфигурация хранится в ~/.officecli/config.json.

Ключевые возможности

Встроенные движки и примитивы генерации

OfficeCLI самодостаточен. Все перечисленные возможности входят в состав бинарного файла — Office не требуется.

Движок рендеринга — высокая точность, встроенный

Ключевой компонент OfficeCLI: написанный с нуля высокоточный движок HTML-рендеринга, позволяющий ИИ-агенту видеть отрендеренный документ вместо того, чтобы гадать по DOM. Охватывает фигуры, диаграммы (линии тренда, планки погрешностей, водопадные, свечные, спарклайны), уравнения (OMML → LaTeX, отрисовка с KaTeX), 3D-модели .glb через Three.js, переходы morph, масштабирование слайдов и эффекты фигур. Постраничные PNG-снимки экрана создаются путём передачи отрендеренного HTML в безголовый браузер. Три режима:

  • view html — самодостаточный HTML-файл со встроенными ресурсами. Открывается в любом браузере.

  • view screenshot — PNG на страницу, готовый к чтению мультимодальными агентами.

  • watch — локальный HTTP-сервер с автообновляемым предпросмотром; каждая команда add / set / remove мгновенно обновляет браузер. Режим watch для Excel поддерживает встроенное редактирование ячеек и перетаскивание диаграмм.

officecli view deck.pptx html -o /tmp/deck.html
officecli view deck.pptx screenshot -o /tmp/deck.png # добавьте --page 1-N для нескольких слайдов
officecli watch deck.pptx                            # http://localhost:26315

Без визуализации агент, генерирующий слайды, работает вслепую — он может читать DOM, но не видит, вышел ли заголовок за границы или перекрываются ли две фигуры. Поскольку рендеринг встроен в бинарный файл, цикл рендеринг → просмотр → исправление работает в CI, в Docker, на сервере без дисплея — везде, где запускается бинарный файл.

Движок формул и сводных таблиц

Более 350 встроенных функций Excel вычисляются автоматически при записи — напишите =SUM(A1:A2), выполните get для ячейки, и значение уже там. Никакого обращения к Office для пересчёта. Охватывает динамические массивы с разливом (FILTER / SORT / UNIQUE / SEQUENCE / LET / LAMBDA / MAP), VLOOKUP / XLOOKUP / INDEX / MATCH, финансовую и облигационную математику (XIRR / PRICE / YIELD / DURATION / COUPNUM), статистические распределения, тесты и регрессию (NORM.DIST / T.TEST / LINEST), функции дат и текста.

А также нативные сводные таблицы OOXML из диапазона-источника одной командой — несколько полей в строках/столбцах/фильтрах, 10 агрегаций, режимы showDataAs, группировка по дате, вычисляемые поля, топ-N, макеты. Кэш сводной таблицы и её определение записываются в OOXML, так что Excel открывает файл с уже готовой агрегацией:

officecli add sales.xlsx '/Sheet1' --type pivottable \
  --prop source='Data!A1:E10000' --prop rows='Region,Category' \
  --prop cols=Quarter --prop values='Revenue:sum,Units:avg' \
  --prop showDataAs=percentOfTotal

Слияние шаблонов — создать один раз, заполнять сколько угодно

merge заменяет заполнители {{key}} в любом .docx / .xlsx / .pptx данными из JSON — в абзацах, ячейках таблиц, фигурах, верхних/нижних колонтитулах и заголовках диаграмм. Агент разрабатывает макет один раз (это дорого); производственный код заполняет его N раз (дёшево, предсказуемо, без затрат токенов). Исключает сценарий, при котором агент заново генерирует каждый отчёт с нуля и получает N несовместимых макетов.

officecli merge invoice-template.docx out-001.docx --data '{"client":"Acme","total":"$5,200"}'
officecli merge q4-template.pptx q4-acme.pptx --data data.json

Дамп с полным round-trip — учитесь на готовых документах

dump сериализует любой .docx, .pptx или .xlsx — весь документ или любое поддерево (отдельный абзац, таблицу, слайд, рабочий лист, часть стилей, нумерацию, тему или настройки) — в воспроизводимый пакетный JSON; batch воспроизводит его. Получив образец, которому нужно следовать, агент читает структурированную спецификацию вместо сырого XML OOXML, изменяет и воспроизводит. Объединяет сценарии «у меня есть готовый шаблон» и «сгенерируй мне 100 вариаций».

officecli dump existing.docx -o blueprint.json                  # весь документ
officecli dump existing.docx /body/tbl[1] -o table.json         # любое поддерево
officecli dump existing.xlsx /Sheet1 -o sheet.json              # один рабочий лист
officecli batch new.docx --input blueprint.json

Резидентный режим и пакетная обработка

Для многошаговых рабочих процессов резидентный режим (resident mode) держит документ в памяти. Пакетный режим применяет несколько операций за один проход.

# Резидентный режим — минимальная задержка через именованные каналы
officecli open report.docx
officecli set report.docx /body/p[1]/r[1] --prop bold=true
officecli set report.docx /body/p[2]/r[1] --prop color=FF0000
officecli close report.docx

# Пакетный режим — выполнение нескольких команд (по умолчанию атомарный: сбой любого элемента откатывает весь пакет)
echo '[{"command":"set","path":"/slide[1]/shape[1]","props":{"text":"Hello"}},
      {"command":"set","path":"/slide[1]/shape[2]","props":{"fill":"FF0000"}}]' \
  | officecli batch deck.pptx --json

# Встроенный пакет с --commands (без stdin)
officecli batch deck.pptx --commands '[{"op":"set","path":"/slide[1]/shape[1]","props":{"text":"Hi"}}]'

# Сохранить успешно выполненное даже при сбое части элементов (поведение до версии 1.0.137)
officecli batch deck.pptx --input updates.json --best-effort --json

# Остановиться на первой неудачной команде вместо выполнения остальных (всё равно откатывает всё, если не совмещено с --best-effort)
officecli batch deck.pptx --input updates.json --stop-on-error --json

Читаете файл другим инструментом? Сначала сбросьте данные на диск. Собственные операции чтения officecli (get/query/view) всегда видят последние правки, поэтому внутри officecli сохранение не требуется. Но активный резидент откладывает запись на диск, поэтому перед тем как другая программа прочитает файл — python‑docx/openpyxl, Microsoft Word, рендерер, доставка/загрузка — сбросьте данные:

officecli set report.docx /body/p[1] --prop bold=true
officecli save report.docx           # сброс, резидент остаётся активным (или `close` для сброса + освобождения)
python my_reader.py report.docx      # теперь видит правки

Активный резидент также автоматически сбрасывает данные вскоре после перехода в режим ожидания (адаптивно, 2–10 с, масштабируется с учётом измеренной стоимости сохранения). Для конвейера, где другая программа читает файл после каждой команды, установите OFFICECLI_RESIDENT_FLUSH=each — каждая мутация оказывается на диске до возврата команды, резидент при этом остаётся активным. Полная модель сброса (each/auto/фиксированный/off, save / close, настройка через переменные окружения): вики → open / close.

Трёхуровневая архитектура

Начните просто — переходите глубже только при необходимости.

Уровень Назначение Команды

L1: Чтение

Семантические представления содержимого

view (text, annotated, outline, stats, issues, html, svg, screenshot)

L2: DOM

Структурированные операции над элементами

get, query, set, add, remove, move, swap

L3: Сырой XML

Прямой доступ через XPath — универсальный запасной вариант

raw, raw-set, add-part, validate

# L1 — высокоуровневые представления
officecli view report.docx annotated
officecli view budget.xlsx text --cols A,B,C --max-lines 50

# L2 — операции на уровне элементов
officecli query report.docx "run:contains(TODO)"
officecli add budget.xlsx / --type sheet --prop name="Q2 Report"
officecli move report.docx /body/p[5] --to /body --index 1

# L3 — сырой XML, когда L2 недостаточно
officecli raw deck.pptx '/slide[1]'
officecli raw-set report.docx document \
  --xpath "//w:p[1]" --action append \
  --xml '<w:r><w:t>Injected text</w:t></w:r>'

Интеграция с ИИ

MCP-сервер

Встроенный MCP-сервер — регистрируется одной командой:

officecli mcp claude       # Claude Code
officecli mcp cursor       # Cursor
officecli mcp vscode       # VS Code / Copilot
officecli mcp lmstudio     # LM Studio
officecli mcp list         # Проверить статус регистрации

Предоставляет все операции с документами как инструменты через JSON-RPC — доступ к оболочке не нужен.

Прямая интеграция через CLI

Подключить OfficeCLI к ИИ-агенту можно в два шага:

  1. Установить бинарный файл — одна команда (см. раздел Установка)

  2. Готово. OfficeCLI автоматически обнаруживает ваши ИИ-инструменты (Claude Code, GitHub Copilot, Codex), проверяя известные директории конфигурации, и устанавливает файл навыков. Агент сразу же может создавать, читать и изменять любые документы Office.

Почему ваш агент преуспеет с OfficeCLI

  • Детерминированный JSON-вывод — каждая команда поддерживает --json с согласованными схемами. Никакого парсинга регулярными выражениями, никакого скрейпинга stdout.

  • Адресация по пути — каждый элемент имеет стабильный путь (/slide[1]/shape[2]). Агенты навигируют по документам, не разбираясь в пространствах имён XML. (Синтаксис OfficeCLI: индексация с 1, локальные имена элементов — не XPath.)

  • Прогрессивная сложность (L1 → L2 → L3) — агенты начинают с представлений только для чтения, переходят к операциям с DOM и обращаются к сырому XML лишь при необходимости. Минимизирует расход токенов.

  • Самовосстанавливающийся рабочий процессvalidate, view issues и структурированные коды ошибок (not_found, invalid_value, unsupported_property) возвращают подсказки и допустимые диапазоны. Агенты самостоятельно исправляют ошибки без вмешательства человека.

  • Встроенный агент-дружественный движок рендерингаview html / view screenshot / watch нативно выдают HTML и PNG. Office не нужен. Агенты видят свой результат и исправляют проблемы макета даже в CI / Docker / безголовых средах.

  • Встроенный движок формул и сводных таблиц — более 350 функций Excel автоматически вычисляются при записи (включая динамические массивы с разливом, финансовые / облигационные и статистические семейства); нативные сводные таблицы OOXML из диапазона-источника одной командой. Агенты сразу читают вычисленные значения и готовые агрегации без обращения к Office.

  • Слияние шаблонов — агент разрабатывает макет один раз, последующий код заполняет заполнители {{key}} N раз. Исключает сжигание токенов на повторную генерацию каждого отчёта с нуля.

  • Round-trip дампdump преобразует любой .docx, .pptx или .xlsx в воспроизводимый пакетный JSON. Агенты учатся на созданных людьми образцах, читая структурированную спецификацию, а не сырой XML OOXML.

  • Встроенная справка — когда агент не уверен в названиях свойств или форматах значений, он выполняет officecli <format> set <element> вместо того, чтобы гадать.

  • Автоустановка — OfficeCLI обнаруживает ваши ИИ-инструменты (Claude Code, Cursor, VS Code, …) и настраивается самостоятельно. Ручная установка файла навыков не требуется.

Встроенная справка

Не гадайте с названиями свойств — воспользуйтесь справкой:

officecli help pptx set              # Все настраиваемые элементы и свойства
officecli help pptx set shape        # Подробности для одного типа элемента
officecli help docx query            # Справка по селекторам: атрибуты, :contains, :has() и др.

Выполните officecli --help для полного обзора.

Схемы JSON-вывода

Все команды поддерживают --json. Общие форматы ответов:

Одиночный элемент (get --json):

{"tag": "shape", "path": "/slide[1]/shape[1]", "attributes": {"name": "TextBox 1", "text": "Hello"}}

Список элементов (query --json):

[
  {"tag": "paragraph", "path": "/body/p[1]", "attributes": {"style": "Heading1", "text": "Title"}},
  {"tag": "paragraph", "path": "/body/p[5]", "attributes": {"style": "Heading1", "text": "Summary"}}
]

Ошибки возвращают ненулевой код выхода со структурированным объектом ошибки, включающим код ошибки, подсказку и допустимые значения при их наличии:

{
  "success": false,
  "error": {
    "error": "Slide 50 not found (total: 8)",
    "code": "not_found",
    "suggestion": "Valid Slide index range: 1-8"
  }
}

Коды ошибок: not_found, invalid_value, unsupported_property, invalid_path, unsupported_type, missing_property, file_not_found, file_locked, invalid_selector. Названия свойств автоматически исправляются — опечатка в имени свойства возвращает подсказку с наиболее близким совпадением.

Восстановление после ошибок — агенты самостоятельно исправляются, проверяя доступные элементы:

# Агент пробует неверный путь
officecli get report.docx /body/p[99] --json
# Возвращает: {"success": false, "error": {"error": "...", "code": "not_found", "suggestion": "..."}}

# Агент самостоятельно исправляется, проверяя доступные элементы
officecli get report.docx /body --depth 1 --json
# Возвращает список доступных дочерних элементов, агент выбирает правильный путь

Подтверждения мутаций (set, add, remove, move, create с --json):

{"success": true, "path": "/slide[1]/shape[1]"}

Выполните officecli --help для подробной информации о кодах выхода и форматах ошибок.

Сравнение

OfficeCLI Microsoft Office LibreOffice python-docx / openpyxl

Открытый код и бесплатность

✓ (Apache 2.0)

✗ (платная лицензия)

Нативный CLI + JSON для ИИ

Нулевая установка (один бинарный файл)

✗ (Python + pip)

Вызов из любого языка

✓ (CLI)

✗ (COM/Add-in)

✗ (UNO API)

Только Python

Доступ к элементам по пути

Резервный доступ к сырому XML

Частично

Встроенный агент-дружественный движок рендеринга

Безголовый вывод HTML/PNG

Частично

Слияние шаблонов ({{key}}) для всех форматов

Round-trip дамп → пакетный JSON

Живой предпросмотр (автообновление при правке)

Безголовый / CI

Частично

Кроссплатформенность

Windows/Mac

Word + Excel + PowerPoint

Отдельные библиотеки

Справочник команд

Команда Описание

create

Создать пустой .docx, .xlsx или .pptx (тип определяется по расширению)

view

Просмотр содержимого (режимы: outline, text, annotated, stats (--page-count), issues, html, svg, screenshot, pdf (через плагин экспорта), forms (через плагин обработчика формата)). Для docx поддерживает --render auto|native|html.

load_skill

Вывести содержимое встроенного SKILL.md для специализированного навыка (без установки)

get

Получить элемент и дочерние элементы (--depth N, --json)

query

CSS-подобный запрос с булевыми and/or, по имени столбца (row[Salary>5000]), флаг --find

set

Изменить свойства элемента; принимает селекторы и нативные пути Excel (паритет с get/query), флаги --find/--replace

add

Добавить элемент (или клонировать с --from <path>)

remove

Удалить элемент

move

Переместить элемент (--to <parent>, --index N, --after <path>, --before <path>)

swap

Поменять местами два элемента

validate

Проверить соответствие схеме OpenXML

view <file> issues

Перечислить проблемы документа (переполнение текста, отсутствующий альтернативный текст, ошибки формул и др.)

batch

Несколько операций за один проход (stdin, --input или --commands; по умолчанию атомарный — сбой любого элемента откатывает весь пакет — --best-effort для сохранения частичного прогресса, --stop-on-error для раннего прерывания)

dump

Сериализовать .docx, .pptx или .xlsx в воспроизводимый пакетный JSON (round-trip через batch); принимает путь к поддереву

refresh

Пересчитать номера страниц в оглавлении / PAGE / перекрёстные ссылки (.docx; бэкенд Word на Windows, запасной HTML без дисплея)

plugins

Список / просмотр / проверка установленных плагинов (расширение на .doc, .hwpx, экспорт .pdf через dump-reader / exporter / format-handler)

merge

Слияние шаблонов — замена заполнителей {{key}} данными из JSON

watch

Живой HTML-предпросмотр в браузере с автообновлением

mcp

Запустить MCP-сервер для интеграции с ИИ-инструментами

raw

Просмотр сырого XML части документа

raw-set

Изменить сырой XML через XPath

add-part

Добавить новую часть документа (колонтитул, диаграмму и др.)

open

Запустить резидентный режим (держать документ в памяти)

close

Сохранить и завершить резидентный режим

install

Установить бинарный файл + навыки + MCP (all, claude, cursor и др.)

config

Получить или задать параметры конфигурации

help <format> <command>

Встроенная справка (например, officecli help pptx set shape)

Пример сквозного рабочего процесса

Типичный самовосстанавливающийся рабочий процесс агента: создать презентацию, наполнить её содержимым, проверить и исправить проблемы — всё без участия человека.

# 1. Создать
officecli create report.pptx

# 2. Добавить содержимое
officecli add report.pptx / --type slide --prop title="Q4 Results"
officecli add report.pptx '/slide[1]' --type shape \
  --prop text="Revenue: $4.2M" --prop x=2cm --prop y=5cm --prop size=28
officecli add report.pptx / --type slide --prop title="Details"
officecli add report.pptx '/slide[2]' --type shape \
  --prop text="Growth driven by new markets" --prop x=2cm --prop y=5cm

# 3. Проверить
officecli view report.pptx outline
officecli validate report.pptx

# 4. Исправить найденные проблемы
officecli view report.pptx issues --json
# Устранить проблемы по результатам вывода, например:
officecli set report.pptx '/slide[1]/shape[1]' --prop font=Arial

Единицы измерения и цвета

Все свойства размеров и цветов принимают гибкие форматы ввода:

Тип Принимаемые форматы Примеры

Размеры

cm, in, pt, px или EMU

2cm, 1in, 72pt, 96px, 914400

Цвета

Hex, именованные, RGB, тема

#FF0000, FF0000, red, rgb(255,0,0), accent1

Размеры шрифта

Число или с суффиксом pt

14, 14pt, 10.5pt

Интервалы

pt, cm, in или множитель

12pt, 0.5cm, 1.5x, 150%

Типичные шаблоны использования

# Заменить весь текст Heading1 в документе Word
officecli query report.docx "paragraph[style=Heading1]" --json | ...
officecli set report.docx /body/p[1]/r[1] --prop text="New Title"

# Экспортировать всё содержимое слайдов как JSON
officecli get deck.pptx / --depth 2 --json

# Массовое обновление ячеек Excel
officecli batch budget.xlsx --input updates.json --json

# Импорт данных CSV в лист Excel
officecli add budget.xlsx / --type sheet --prop name="Q1 Data"
officecli import budget.xlsx "/Q1 Data" sales.csv --header

# Слияние шаблонов для пакетных отчётов
officecli merge invoice-template.docx invoice-001.docx --data '{"client":"Acme","total":"$5,200"}'

# Проверка качества документа перед отправкой
officecli validate report.docx && officecli view report.docx issues --json

Из Python или Node.js — установите один из тонких SDK через резидентные каналы (без создания нового процесса на каждый вызов):

# Python — `pip install officecli-sdk`
import officecli
with officecli.create("deck.pptx") as doc:          # или officecli.open("deck.pptx")
    doc.send({"command": "add", "parent": "/", "type": "slide"})
    print(doc.send({"command": "get", "path": "/slide[1]"}))
// Node.js — `npm install @officecli/sdk`
const oc = require("@officecli/sdk");
const doc = await oc.create("deck.pptx");            // или oc.open("deck.pptx")
await doc.send({ command: "add", parent: "/", type: "slide" });
console.log(await doc.send({ command: "get", path: "/slide[1]" }));
await doc.close();

Оба SDK автоматически устанавливают нативный CLI при его отсутствии (с приоритетом зеркала, поддержка Windows) и сообщают об установке вместо того, чтобы делать это молча.

Или оберните subprocess напрямую, однократный вызов:

import json, subprocess
def cli(*args):
    return json.loads(subprocess.check_output(["officecli", *args, "--json"], text=True))
cli("create", "deck.pptx")

Документация

Вики содержит подробные руководства по каждой команде, типу элемента и свойству:

© 2026 meganuke