Plank help · updated 2026-10-29

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

Маршрут правки презентации, которая уже есть: найти её, скопировать в её формате, изменить только названные слайды и отдать, только когда diff из plank_html_edit.py завершился с кодом 0. HTML (включая Bundled Page), .pptx и PDF.

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

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

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

mkdir -p scripts/deck
curl -sSfL -o scripts/deck/plank_html_edit.py https://plank.md/help/assets/plank_html_edit.py
python3 scripts/deck/plank_html_edit.py inventory "Sales/Их презентация.html"
python3 scripts/deck/plank_html_edit.py copy "Sales/Их презентация.html" "Sales/Новая.html"
python3 scripts/deck/plank_html_edit.py apply "Sales/Новая.html" scripts/deck/edits.json
python3 scripts/deck/plank_html_edit.py diff "Sales/Их презентация.html" "Sales/Новая.html"   # код возврата 0

Это маршрут всегда, когда человек указывает на презентацию, которая уже есть — «на основе наших презентаций», «такую же», «как наша», «переделай под», «поправь презентацию», «возьми нашу и поменяй». Вы ПРАВИТЕ их файл, а не собираете новый. Сборка — это Как собрать презентацию: маршрут, и здесь это не та страница, даже если в просьбе есть отрасль, клиент или новый слайд. Сначала не спрашивайте: найдите презентацию и начинайте.

1. Найдите ту самую презентацию

Папка, которую назвал человек, важнее index.md — он может устареть. Никогда не начинайте с Архив/, old/ или резервной копии, если о них не сказано. Если в названной папке несколько презентаций, возьмите ближайшую к просьбе. В первой строке ответа скажите, с какого файла начали.

2. Скопируйте; оригинал не трогайте

copy не перезаписывает файлы. Копируйте ОДИН раз, с оригинала человека; каждая следующая правка в этом разговоре — «ещё добавь цену» — это apply к той же копии, а не вторая копия. Копия лежит рядом с оригиналом и в ТОМ ЖЕ формате: HTML остаётся HTML, .pptx остаётся .pptx. Второй формат — только если попросили. Инструменты лежат в scripts/deck/, туда же — ваш edits.json и рендеры, а не в папку человека.

3. Меняйте только то, о чём просили

Адаптировать презентацию значит оставить её их презентацией — примерно девять слайдов из десяти без изменений. Меняйте названные слайды и добавляйте не больше одного-двух, о которых просят. Не «адаптируйте» под отрасль каждый слайд.

  • Слайд, смысл которого меняется, переписывается ЦЕЛИКОМ — и заголовок, и тело: {"slide": 5, "lines": [...]} заменяет все текстовые узлы по порядку. Никогда не ставьте новый заголовок над старым телом — именно из-за этого человек спросил «откуда это взялось?».
  • Имя, число, название: {"slide": 1, "set": {"3": "…"}} меняет один узел по номеру из inventory.
  • Новый слайд: {"duplicate": 5, "after": 5}, затем перепишите копию через lines — останется собственная вёрстка презентации.

4. Отдавайте только при коде возврата 0 у diff

plank_html_edit.py diff (для .pptx — plank_deck_edit.py diff) показывает, какие слайды не изменились, изменены, добавлены или исчезли. Он завершается с кодом 1 — не готово —, если есть наполовину отредактированный слайд (новый заголовок, старые строки под ним), если изменено больше 4 слайдов человека или добавлено больше 2. Код 1 — не предупреждение для ответа, а незаконченная правка. Исправьте и запустите diff снова.

Поднимайте лимит, только если человек просил столько: --max-changed N, --max-added N. Если просили лёгкую правку одного слайда — «сделай акцент на …», — новый заголовок над прежним телом и есть просьба: передайте --keep-body N --because "<их слова>" только для этого слайда и повторите их слова в ответе. Никогда — для слайда, который не получилось переписать: такая правка не закончена. Если просьба правда требует больше лимитов — скажите об этом, а не делайте.

5. Посмотрите, потом отчитайтесь

Отрендерите копию и посмотрите каждый изменённый слайд через plank_look_at (HTML печатает Chromium: chrome-headless-shell --headless --print-to-pdf=…, затем pdftoppm -png; файлы — в scripts/deck/.qa/). Отчёт — словами человека: «Взял "Plank — Управление компанией"; изменил слайды 1 и 6, добавил слайд про заявки; остальные 9 без изменений.»

По форматам

HTML, в том числе «Bundled Page». Многие презентации здесь — экспорт «Bundled Page»: одна JSON-строка внутри <script type="__bundler/template"> рядом с мегабайтом шрифтов и картинок. Правьте её ТОЛЬКО инструментом из scripts/deck, скачанным с plank.md/help/assets/plank_html_edit.py.

Никаких sed, perl и регулярок по файлу и никакого самостоятельного перекодирования шаблона: json.dumps оставляет </script> как есть, скрипт страницы обрывается, и презентация перестаёт открываться. Инструмент перекодирует точно и отказывается сохранять шаблон, который не раскодируется.

PPTX. Используйте тулкит порта, скачанный в scripts/deck с plank.md/help/assets/plank_deck_edit.py.

Его вызовы: open_deck, inventory, replace_text для имени или числа, rewrite_slide(prs, i, lines) для слайда, смысл которого меняется, duplicate_slide, save под новым именем. Дальше тот же шлюз, что у HTML — отдавайте, только когда это завершилось с кодом 0:

python3 scripts/deck/plank_deck_edit.py diff theirs.pptx new.pptx
curl -sSfL -o scripts/deck/plank_deck_edit.py https://plank.md/help/assets/plank_deck_edit.py
curl -sSfL -o scripts/deck/plank_deck_qa.py   https://plank.md/help/assets/plank_deck_qa.py

PDF. PDF — это экспорт, а не исходник. Если та же презентация есть в .pptx или HTML, правьте её и экспортируйте заново. Если есть только PDF — скажите об этом и попросите редактируемый оригинал; пока его нет, оставьте все нетронутые страницы байт в байт (pypdf) и замените только изменённые, отрендеренные в том же размере страницы.

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

scripts/deck/plank_html_edit.py, plank_deck_edit.py и plank_deck_qa.py берутся с plank.md/help/assets/ и больше ниоткуда. Если скачать не удалось — скажите об этом; не пишите модуль под таким именем.