export-pptx
Конверт HTML-дека в PPTX. Два режима — картинки (всегда работает) и редактируемый (текст и фигуры остаются нативными).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Конверт HTML-дека в PPTX. Два режима — картинки (всегда работает) и редактируемый (текст и фигуры остаются нативными).
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Research a company or person for sales intel — web search standalone, richer with enrichment tools or CRM connected. Trigger with "research [company]", "look up [person]", "intel on [prospect]", "who is [name] at [company]".
AI-музыка локально на your GPU (ACE-Step 1.5): инструменталы и песни, авто/кастомная лирика, модели base/xl-turbo; CLI scripts/generate.py. Триггеры: «напиши песню», jingle, soundtrack, background music. НЕ Suno (skill suno), не ElevenLabs Music.
OpenAI-совместимый HTTP-сервер поверх ЛОКАЛЬНОГО claude CLI (подписка Max, без API-ключа) — отдаёт Claude как /v1/chat/completions для n8n, OpenAI-SDK, IDE, curl, Open WebUI; SSE-стрим, X-Session-Id. НЕ: наружу к OpenAI/Perplexity/Runway→local-gateway; разовый вызов из Python→claude-cli-runner; боевые Hermes-боты→agent-builder tooling.
Prepare for a sales call — account context, attendee research, suggested agenda; richer with CRM, email, chat or transcripts connected. Trigger with "prep me for my call with [company]", "call prep [company]", "get me ready for [meeting]".
Создание визуальных карточек-каруселей для Telegram-канала — editorial стиль. HTML+CSS шаблон → Playwright render → PNG-серия 1080×1350. Библиотека шаблонов лежит в templates/ (read-only образцы); новая серия создаётся в рабочей директории (CWD). Вызывается сам или из tg-post. Триггеры — «карточки для канала», «карусель в канал», «сделай series», «нарисуй cover», «slides для поста».
Verify any fact, claim, number, statement, citation or AI-generated output for hallucinations — cross-check sources, validate research findings. Triggers: "/check-skill-solo", «проверь», «перепроверь», "verify", "fact-check".
| name | export-pptx |
| description | Конверт HTML-дека в PPTX. Два режима — картинки (всегда работает) и редактируемый (текст и фигуры остаются нативными). |
| when_to_use | Пользователь просит "выгрузить в PowerPoint", "PPTX-файл", "сделать редактируемым в PowerPoint". |
Два режима. Выбирай по запросу.
Каждый слайд → PNG → вставка в пустой PPTX. Pixel-perfect, но текст внутри картинки.
Зависимости: Node + Playwright + python-pptx + Pillow (или JS-аналог).
npm i -D playwright pptxgenjs
npx playwright install chromium
Скрипт templates/pptx-screenshots.mjs — рендерит слайды через тот же путь, что export-png, и собирает их через pptxgenjs:
import pptxgen from 'pptxgenjs';
import { chromium } from 'playwright';
import { pathToFileURL } from 'node:url';
import path from 'node:path';
const [, , file, out = 'deck.pptx'] = process.argv;
const browser = await chromium.launch();
const page = await browser.newPage({ viewport: { width: 1920, height: 1080 }});
await page.goto(pathToFileURL(path.resolve(file)).href, { waitUntil: 'networkidle' });
const total = await page.evaluate(() => document.querySelector('deck-stage').total);
await page.evaluate(() => document.querySelector('deck-stage').setAttribute('noscale', ''));
const pres = new pptxgen();
pres.layout = 'LAYOUT_WIDE'; // 13.33×7.5 inch ~ 1920×1080
for (let i = 0; i < total; i++) {
await page.evaluate(idx => document.querySelector('deck-stage').go(idx), i);
await page.waitForTimeout(600);
const buf = await page.screenshot({ type: 'png' });
const slide = pres.addSlide();
slide.background = { data: 'data:image/png;base64,' + buf.toString('base64') };
}
await pres.writeFile({ fileName: out });
await browser.close();
console.log('✓', out);
Сложнее. Идея: пройти по DOM каждого слайда, для каждого text-node создать slide.addText(...), для прямоугольника — slide.addShape(...), для картинки — slide.addImage(...).
pptxgenjs это умеет. Но 1:1 не получится — отказывайся от градиентов, теней, нестандартных шрифтов. Хорошо работает для деков, где макет = заголовок + текст + 1–2 фигуры.
Алгоритм:
page.evaluate собери список объектов:
[
{ type: 'text', x, y, w, h, text, font, size, color, bold, align },
{ type: 'rect', x, y, w, h, fill, stroke },
{ type: 'image', x, y, w, h, src },
]
Координаты — относительно слайда, в пикселях, потом конвертируй в дюймы (px / 96).slide.addX(...).pres.writeFile({ fileName }).Минимальный экстрактор лежит в templates/extract-shapes.js. Это черновик — для сложных макетов потребуется ручная подкрутка.
| Ситуация | Режим |
|---|---|
| Дек уйдёт в PowerPoint, его будут править | editable (с компромиссами по визуалу) |
| Просто переслать как PPTX, без правок | screenshots |
| В деке много кастомных эффектов / SVG | screenshots, иначе сломается |
| Текст должен искаться / переводиться в PowerPoint | editable |
LAYOUT_WIDE (13.33×7.5 in). 4:3 — LAYOUT_STANDARD (10×7.5 in).Прежняя расширенная версия скилла (дерево @2026-04-30) сохранена целиком в references/legacy-export-pptx.md. Секции там: Зависимости, Каркас, Workflow целиком, PPTX размеры, Альтернативный путь: LibreOffice, Когда нужен редактируемый PPTX, Скрытые слайды, Speaker notes, Метаданные, Антипаттерны.