Pptx Author
Собирает презентации PowerPoint в headless-режиме через python-pptx.
Метаданные навыка
| Источник | Опциональный — установка командой hermes skills install official/finance/pptx-author |
| Путь | optional-skills/finance/pptx-author |
| Версия | 1.0.0 |
| Автор | Anthropic (adapted by Nous Research) |
| Лицензия | Apache-2.0 |
| Платформы | linux, macos, windows |
| Теги | powerpoint, pptx, python-pptx, presentation, finance |
| Связанные навыки | excel-author, powerpoint |
Справочник: полный SKILL.md
Ниже — полное определение навыка, которое Hermes загружает при его срабатывании. Именно это агент видит как инструкции, когда навык активен.
pptx-author
Создаёт файл .pptx на диске средствами python-pptx. Берите этот навык, когда нужно отдать презентацию как файл-артефакт, а не управлять живой сессией PowerPoint.
Адаптировано из навыков pptx-author и pitch-deck от Anthropic в репозитории anthropics/financial-services. Ветки MCP / Office-JS из оригиналов исключены — здесь предполагается headless-Python.
Для более общего, уже выпущенного навыка по сборке PowerPoint (слайды, заметки докладчика, встраивания, медиа) смотрите встроенный навык powerpoint. Этот навык — облегчённый паттерн, заточенный под презентации на основе модели (питч-деки, IC-меморандумы, заметки по отчётности), где каждая цифра обязана восходить к исходной рабочей книге.
Контракт вывода
- Записывайте в
./out/<name>.pptx. Если каталога./out/нет — создайте. - В финальном сообщении верните относительный путь.
Установка
pip install "python-pptx>=0.6"
Основные соглашения
Одна мысль на слайд
Заголовок формулирует вывод; тело его подкрепляет. Слайд с заголовком «Q3 Revenue» слабый; «Revenue growth accelerated to 14% Y/Y in Q3» — сильный.
Каждая цифра восходит к модели
Если число на слайде взято из ./out/model.xlsx, дайте сноску на лист и ячейку.
Revenue: $1,250M (Source: model.xlsx, Inputs!C3)
Никогда не переписывайте числа по памяти или из сводки — откройте рабочую книгу, прочитайте именованный диапазон и, где можете, привяжите значение в презентации к нему программно.
Используйте корпоративный шаблон, если он подключён
Если файл ./templates/firm-template.pptx есть, загрузите его — презентация унаследует фирменные цвета, шрифты и макеты-мастера.
from pptx import Presentation
from pathlib import Path
template = Path("./templates/firm-template.pptx")
prs = Presentation(str(template)) if template.exists() else Presentation()
Графики: PNG из модели лучше нативных диаграмм pptx
Когда важна точность (стилистика диаграммы из модели должна в точности совпадать с презентацией), отрисуйте график в PNG прямо из исходной рабочей книги и встройте картинку. Нативные диаграммы pptx.chart хрупкие и часто расходятся с фирменными соглашениями.
from pptx.util import Inches
slide.shapes.add_picture("./out/charts/football_field.png",
Inches(1), Inches(2),
width=Inches(8))
Никаких внешних отправок
Этот навык пишет файл. Он не шлёт писем, не загружает и не публикует. Доставкой занимаются слои оркестрации.
Каркас
from pptx import Presentation
from pptx.util import Inches, Pt
from pptx.dml.color import RGBColor
from pathlib import Path
template = Path("./templates/firm-template.pptx")
prs = Presentation(str(template)) if template.exists() else Presentation()
# Титульный слайд
slide = prs.slides.add_slide(prs.slide_layouts[0])
slide.shapes.title.text = "Project Aurora — Strategic Alternatives"
slide.placeholders[1].text = "Preliminary Discussion Materials"
# Слайд со сводкой оценки (макет только с заголовком)
slide = prs.slides.add_slide(prs.slide_layouts[5])
slide.shapes.title.text = "Valuation implies $38–$52 per share across methodologies"
# Добавляем таблицу, привязанную к выводам модели
rows, cols = 5, 4
tbl_shape = slide.shapes.add_table(rows, cols,
Inches(0.5), Inches(1.5),
Inches(9), Inches(3))
tbl = tbl_shape.table
headers = ["Methodology", "Low ($)", "Mid ($)", "High ($)"]
for c, h in enumerate(headers):
tbl.cell(0, c).text = h
# В реальной презентации читайте их из рабочей книги модели через openpyxl
data = [
("Trading comps", "35", "41", "48"),
("Precedent M&A", "39", "45", "52"),
("DCF (base)", "36", "43", "51"),
("LBO (10% IRR)", "33", "38", "44"),
]
for r, row in enumerate(data, start=1):
for c, val in enumerate(row):
tbl.cell(r, c).text = val
# Встраиваем график, отрисованный из модели
slide = prs.slides.add_slide(prs.slide_layouts[5])
slide.shapes.title.text = "Football field — current price $42"
slide.shapes.add_picture("./out/charts/football_field.png",
Inches(1), Inches(1.8), width=Inches(8))
Path("./out").mkdir(exist_ok=True)
prs.save("./out/pitch-aurora.pptx")
Привязка чисел презентации к исходной рабочей книге
Читайте именованные диапазоны или конкретные ячейки из вашей Excel-модели — тогда цифры в презентации не разъедутся с данными.
from openpyxl import load_workbook
wb = load_workbook("./out/model.xlsx", data_only=True)
def nr(name):
"""Resolve a named range to its current computed value."""
rng = wb.defined_names[name]
sheet, coord = next(rng.destinations)
return wb[sheet][coord].value
revenue_fy24 = nr("RevenueFY24")
implied_mid = nr("ImpliedSharePriceBase")
Затем стройте содержимое презентации на этих значениях:
slide.shapes.title.text = f"Implied share price of ${implied_mid:.2f} (base case)"
Не забудьте пересчитать книгу перед чтением — openpyxl видит вычисленные значения только если лист уже кем-то пересчитан. Сначала запустите помощник пересчёта из навыка excel-author либо откройте и сохраните файл через настоящую сессию Excel.
Чек-лист типов слайдов для питч-деков
Типовой банковский питч-дек строится по такой структуре. Не догма, но удобен как стартовый каркас:
- Обложка / титул
- Дисклеймер
- Оглавление
- Обзор ситуации
- Снимок компании (цель сделки)
- Контекст рынка / сектора
- Сводка оценки (football field) — главный слайд
- Детализация торговых компсов
- Детализация прецедентных сделок
- Сводка по DCF
- Иллюстративный LBO / кейс спонсора
- Соображения по процессу
- Приложение
Когда НЕ использовать этот навык
- Если пользователь работает в живой сессии PowerPoint с доступным Office MCP — управляйте его живым документом.
- Нефинансовые презентации (квартальные all-hands, маркетинговые деки) — берите более общий навык
powerpoint. - Презентации с обилием анимации, переходов или заметок докладчика — берите более общий навык
powerpoint.
Атрибуция
Соглашения адаптированы из набора плагинов Claude for Financial Services от Anthropic, лицензия Apache-2.0. Оригинал: https://github.com/anthropics/financial-services/tree/main/plugins/agent-plugins/pitch-agent/skills/pptx-author