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.

Чек-лист типов слайдов для питч-деков

Типовой банковский питч-дек строится по такой структуре. Не догма, но удобен как стартовый каркас:

  1. Обложка / титул
  2. Дисклеймер
  3. Оглавление
  4. Обзор ситуации
  5. Снимок компании (цель сделки)
  6. Контекст рынка / сектора
  7. Сводка оценки (football field) — главный слайд
  8. Детализация торговых компсов
  9. Детализация прецедентных сделок
  10. Сводка по DCF
  11. Иллюстративный LBO / кейс спонсора
  12. Соображения по процессу
  13. Приложение

Когда НЕ использовать этот навык

  • Если пользователь работает в живой сессии 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

перевод и редактура:

обновлено

⌕ ESC