export-pdf
Печать HTML-макета или дека в PDF через headless Chrome (Playwright). Одна страница = один слайд.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Печать HTML-макета или дека в PDF через headless Chrome (Playwright). Одна страница = один слайд.
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-pdf |
| description | Печать HTML-макета или дека в PDF через headless Chrome (Playwright). Одна страница = один слайд. |
| when_to_use | Пользователь просит сохранить дизайн/презентацию в PDF. |
Headless Chromium через Playwright. Без него не работает — поставь:
npm i -D playwright
npx playwright install chromium
templates/print-pdf.mjs:
import { chromium } from 'playwright';
import { pathToFileURL } from 'node:url';
import path from 'node:path';
const [, , file, outArg] = process.argv;
if (!file) { console.error('Usage: node print-pdf.mjs <html> [out.pdf]'); process.exit(1); }
const out = outArg || file.replace(/\.html?$/, '.pdf');
const url = pathToFileURL(path.resolve(file)).href;
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto(url, { waitUntil: 'networkidle' });
// Размер страницы PDF берём из <deck-stage width height>, если он есть
const dims = await page.evaluate(() => {
const ds = document.querySelector('deck-stage');
return ds ? { w: +ds.getAttribute('width') || 1920, h: +ds.getAttribute('height') || 1080 } : null;
});
if (dims) {
// Перед печатью включим режим "noscale", чтоб <deck-stage> отдал слайды для @page
await page.evaluate(() => document.querySelector('deck-stage').setAttribute('noscale', ''));
await page.pdf({
path: out,
width: dims.w + 'px',
height: dims.h + 'px',
printBackground: true,
pageRanges: '',
margin: { top: 0, bottom: 0, left: 0, right: 0 },
preferCSSPageSize: true,
});
} else {
// Обычный документ — A4
await page.pdf({ path: out, format: 'A4', printBackground: true });
}
await browser.close();
console.log('✓', out);
node print-pdf.mjs deck.html
# → deck.pdf
window.print() требует пользовательского клика и не даёт контроля над размером страницы. Playwright делает то же самое, но программно и предсказуемо.
waitUntil до 'load' и добавь await page.waitForTimeout(500).await page.waitForLoadState('networkidle') ИЛИ document.fonts.ready через evaluate.lazy — пролистай страницу до конца перед печатью или поменяй на eager.<deck-stage> должен иметь корректные width/height. Скрипт читает их и задаёт размер @page.Прежняя расширенная версия скилла (дерево @2026-04-30) сохранена целиком в references/legacy-export-pdf.md. Секции там: Каркас, Для slides — особенности, Для лендингов, Custom CSS @page, Шрифты в PDF, Размер файла, Multi-section PDF, Stacking со связанными скиллами, Антипаттерны.