Plank help · updated 2026-09-18

Как собрать презентацию: маршрут

Маршрут сборки слайд-презентации на одной короткой странице: скачать сборщики в /workspace/scripts/deck/, положить туда же скрипт сборки, прогнать проверку перед выдачей и никогда не писать файлы с именами сборщиков самостоятельно.

Agents: fetch the raw markdown of this page at /ru/help/deck.md

Как собрать презентацию: маршрут

Весь маршрут одним блоком. Всё ниже — пояснения к нему.

mkdir -p /workspace/scripts/deck
curl -sSfL -o /workspace/scripts/deck/plank_deck.py    https://plank.md/help/assets/plank_deck.py
curl -sSfL -o /workspace/scripts/deck/plank_deck_qa.py https://plank.md/help/assets/plank_deck_qa.py
# напишите /workspace/scripts/deck/build_<name>.py с `from plank_deck import *`
python3 /workspace/scripts/deck/build_<name>.py
python3 /workspace/scripts/deck/plank_deck_qa.py /workspace/<name>.pptx   # код возврата должен быть 0

Маршрут сборки слайд-презентации от начала до конца. Фирменный стиль, примитивы слайдов и палитры — на длинной странице: Как Plank создаёт слайд-презентацию. Здесь — маршрут: взять сборщик, запустить, проверить, отдать.

1. Сборщики живут в /workspace/scripts/deck/

Скачайте plank.md/help/assets/plank_deck.py и plank.md/help/assets/plank_deck_qa.py командой curl -sSfL -o в /workspace/scripts/deck/ — всегда в этот каталог, а не в текущий: вызов bash не наследует рабочий каталог предыдущего вызова, поэтому голый curl -o plank_deck.py положит файл туда, где случайно начался этот один вызов, и следующий вызов его не найдёт.

mkdir -p /workspace/scripts/deck
curl -sSfL -o /workspace/scripts/deck/plank_deck.py     https://plank.md/help/assets/plank_deck.py
curl -sSfL -o /workspace/scripts/deck/plank_deck_qa.py  https://plank.md/help/assets/plank_deck_qa.py

Добавьте plank_slides.py для маршрута HTML → PDF и plank_deck_edit.py, когда правите презентацию, которую сверстал кто-то другой:

curl -sSfL -o /workspace/scripts/deck/plank_slides.py    https://plank.md/help/assets/plank_slides.py
curl -sSfL -o /workspace/scripts/deck/plank_deck_edit.py https://plank.md/help/assets/plank_deck_edit.py

/workspace/scripts/deck/ — папка рабочего пространства: она переживает перезапуски, и её видят и личный, и общий чат. Повторяйте загрузку в начале каждой задачи с презентацией. Это дёшево, файл перезаписывается на месте, а копия трёхнедельной давности может устареть — не пропускайте шаг только потому, что файл вроде бы уже лежит.

2. Никогда не пишите эти файлы сами

plank_deck.py, plank_slides.py, plank_deck_edit.py и plank_deck_qa.py берутся с plank.md/help/assets/ и больше ниоткуда. Если импорт не прошёл — повторите загрузку в /workspace/scripts/deck/ и прочитайте ошибку.

Не пишите собственный файл с таким именем — ни минимальную версию «чтобы разблокироваться», ни внутри папки проекта. Самодельный модуль под нашим именем хуже, чем его отсутствие: import проходит, ничего не измеряется, и все последующие сборки в этом рабочем пространстве молча берут его вместо настоящего сборщика. Если скачать не удаётся — скажите об этом и соберите презентацию на голом python-pptx под другим именем файла.

3. Скрипт сборки кладите тоже в /workspace/scripts/deck/

Держите свой build_*.py рядом со сборщиком. Тогда импорт разрешается без PYTHONPATH и без cd, из любого вызова:

curl -sSfL -o /workspace/scripts/deck/plank_deck.py https://plank.md/help/assets/plank_deck.py
python3 /workspace/scripts/deck/build_acme_deck.py
# /workspace/scripts/deck/build_acme_deck.py
from plank_deck import *

prs = new_deck(theme="studio")          # или theme="report" — светлая, печатная
set_brand(prs, meta=(("brand", "ACME"),), city="Алматы", year="2026")
cover(prs, "Складской учёт без планшета в руках", subtitle="Предложение на IV квартал")
save(prs, "/workspace/acme-proposal.pptx")

DeckError означает, что на слайде слишком много текста, а не что нужно уменьшить кегль. Вызов ничего не нарисовал и убирать за ним нечего: сократите текст, разбейте слайд или унесите подробности в заметки.

4. Прогоните проверку до того, как отдать файл

curl -sSfL -o /workspace/scripts/deck/plank_deck_qa.py https://plank.md/help/assets/plank_deck_qa.py
python3 /workspace/scripts/deck/plank_deck_qa.py /workspace/acme-proposal.pptx

Проверка plank_deck_qa.py скачивается туда же, в /workspace/scripts/deck/, с plank.md/help/assets/plank_deck_qa.py. Принимает .pptx и .html, рендерит презентацию, считывает, куда на самом деле легли слова, и заодно пишет PDF в <deck>-qa/. Код возврата ненулевой, если есть хоть одна ошибка.

Ошибка — это не предупреждение и не «известная особенность шаблона». Текст за пределами своей фигуры, текст за краем слайда, слова поверх слов, пустой слайд, не раскодировавшаяся картинка, нечитаемый текст поверх собственной фотографии — каждая из них означает, что читатель увидит поломку. Почините и прогоните проверку снова.

Если вы всё-таки отдаёте презентацию с ошибками — напишите об этом в сообщении, с числом и перечнем: «проверка показывает 45 ошибок — 16 переполнений текста и 24 заголовка с низким контрастом, — которые я не исправил». Отдать презентацию, забракованную проверкой, не назвав число, — ровно то, ради чего этот шаг существует.

5. Навык рабочего пространства не заменяет этот маршрут

Навык, шаблон или AGENTS.md в этом рабочем пространстве могут владеть внешним видом — фирменными цветами, шрифтом, тоном, составом слайдов. Для этого они и нужны, и вы им следуете.

Они не владеют инструментом. Если там прямо не назван другой сборщик и не объяснено почему, презентация всё равно собирается через /workspace/scripts/deck/plank_deck.py и всё равно проверяется через /workspace/scripts/deck/plank_deck_qa.py. Навык, который молчит о способе сборки, не выбирает другой маршрут — он просто не упомянул этот.

Какой формат

.pptx — когда презентацию будут перекраивать, перебрендировать или откроют в PowerPoint. HTML → PDF (plank_slides.py, которому нужен plank_deck.py рядом, в /workspace/scripts/deck/) — когда она должна выглядеть арт-дирекшн и править её никто не будет. Если запрос не отвечает на этот вопрос — спросите пользователя. Полный разбор и цена каждого формата: Как Plank создаёт слайд-презентацию.