П.ВИН
Tool

Pencil APITool из портфолио Паши Вина

HTTP-микросервис, оборачивающий Pencil MCP для генерации презентационных слайдов. Принимает запросы, управляет жизненным циклом Pencil-процесса и возвращает готовые .pen-файлы.

01. КатегорияTool
02. РольFull-stack, Product
03. Датамар 2026

Что это?

HTTP-микросервис, оборачивающий Pencil MCP для генерации презентационных слайдов. Принимает запросы, управляет жизненным циклом Pencil-процесса и возвращает готовые .pen-файлы.

Какую задачу решает?

Ручная сборка слайдов → автоматическая генерация через API-вызов

Как реализовано?

Реализовано на стеке: Bun, TypeScript, JSON-RPC, Pencil MCP. Перед каждой генерацией сервис перезапускает Pencil через systemd, гарантируя чистое состояние, и работает только с активным документом без явных путей.

BunTypeScriptJSON-RPCPencil MCPsystemdBunTypeScriptJSON-RPCPencil MCPsystemdBunTypeScriptJSON-RPCPencil MCPsystemdBunTypeScriptJSON-RPCPencil MCPsystemd
Генерация презентаций через API — задача, которая ломается из-за нестабильного состояния графического редактора. Цель — обернуть Pencil в надёжный микросервис: перезапускать процесс перед каждым запросом и возвращать готовый файл без участия человека.
Pencil API
Pencil API — Генерация презентаций через API — задача, которая ломается из-за нестабильного состояния графического редактора.

Вызов

Нестабильный MCP

Pencil MCP накапливает открытые документы в памяти, из-за чего активный документ становится неоднозначным и генерация ломается.

  • После нескольких генераций export_nodes и batch_design падают с ошибкой «wrong .pen file»
  • Pencil не записывает .pen-файлы на диск — их нужно извлекать из памяти через batch_get
  • Явная передача filePath в MCP-инструменты вызывает нестабильные сбои

Решение

Чистый перезапуск

Перед каждой генерацией сервис перезапускает Pencil через systemd, гарантируя чистое состояние, и работает только с активным документом без явных путей.

  • + Kill Pencil перед каждым запросом — systemd автоматически поднимает его заново за 5с
  • + Все MCP-вызовы работают с активным документом через open_document, без передачи filePath
  • + batch_get с nodeIds из snapshotLayout и readDepth: 10 извлекает полный .pen из памяти

Архитектура & Стек

Mindmap

[ Mindmap Процессов / v2.0 ]
NODE.01

HTTP сервер

Приём API-запросов
Bun · TypeScript

NODE.02

MCP Bridge

stdio JSON-RPC связь
Pencil MCP · JSON-RPC

NODE.03

Process Manager

Управление процессом
systemd · Bun spawn

NODE.04

Export Engine

Извлечение .pen файлов
batch_get · batch_design

COREEngine

Смоделировано 100 предпринимателями

Бизнес Импакт

0

ручной сборки слайдов

~10с

гарантированно чистый старт

3x

retry на каждый слайд

Следующий кейс

18ai