Перейти к основному содержимому

Pptx Author

Создание презентаций PowerPoint с помощью python-pptx. Работает в паре с excel-author для создания слайдов на основе моделей, где каждое число привязано к ячейке рабочей книги. Используется для питч-деков, служебных записок инвестиционного комитета, заметок по доходам.

Метаданные навыка​

ИсточникОпционально — установка через vibeos skills install official/finance/pptx-author
Путьoptional-skills/finance/pptx-author
Версия1.0.0
АвторAnthropic (адаптировано Nous Research)
ЛицензияApache-2.0
Платформыlinux, macos, windows
Тегиpowerpoint, pptx, python-pptx, presentation, finance
Связанные навыкиexcel-author, powerpoint

Справочник: полный SKILL.md​

к сведению

Ниже приведено полное определение навыка, которое VibeOS загружает при его активации. Это те инструкции, которые видит агент, когда навык активен.

pptx-author

Создание файла .pptx на диске с помощью python-pptx. Используйте, когда нужно предоставить презентацию в виде файлового артефакта, а не управлять сеансом PowerPoint в реальном времени.

Адаптировано из навыков pptx-author и pitch-deck от Anthropic в anthropics/financial-services. Ветки MCP / Office-JS оригиналов удалены — предполагается работа с headless Python.

Для более широкого, уже готового навыка создания презентаций PowerPoint (слайды, заметки докладчика, вставки, медиа) см. встроенный навык powerpoint. Этот навык представляет собой более легковесный шаблон, оптимизированный для презентаций на основе моделей (питч-деки, служебные записки ИК, заметки по доходам), где каждое число должно быть привязано к исходной рабочей книге.

Контракт на вывод​

  • Запись в ./out/<name>.pptx. Создать ./out/, если он не существует.
  • Вернуть относительный путь в итоговом сообщении.

Настройка​

pip install "python-pptx>=0.6"

Основные соглашения​

Одна идея на слайд​

Заголовок формулирует основной вывод; тело его поддерживает. Слайд с заголовком «Выручка Q3» слабый; «Рост выручки ускорился до 14% г/г в Q3» — сильный.

Каждое число привязано к модели​

Если цифра на слайде взята из ./out/model.xlsx, укажите лист и ячейку в сноске.

Выручка: $1,250M  (Источник: 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 = "Оценка подразумевает $38–$52 на акцию по разным методологиям"

# Добавление таблицы, привязанной к выводам модели
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 = ["Методология", "Низкая ($)", "Средняя ($)", "Высокая ($)"]
for c, h in enumerate(headers):
tbl.cell(0, c).text = h

# В реальной презентации читайте эти данные из рабочей книги модели с помощью openpyxl
data = [
("Торговые аналоги", "35", "41", "48"),
("Прецедентные сделки", "39", "45", "52"),
("DCF (базовый)", "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 = "Диапазон оценок — текущая цена $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):
"""Разрешить именованный диапазон до его текущего вычисленного значения."""
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_mid:.2f} (базовый сценарий)"

Не забудьте пересчитать рабочую книгу перед чтением — openpyxl видит только вычисленные значения, если кто-то уже произвел расчет листа. Сначала запустите вспомогательную функцию пересчета в навыке excel-author или откройте/сохраните через реальный сеанс Excel.

Контрольный список типов слайдов для питч-деков​

Типичный банковский питч-дек следует этой структуре. Это не предписание, но полезно в качестве отправного шаблона:

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

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

  • Пользователи работают в сеансе PowerPoint в реальном времени с доступным MCP Office — управляйте их живым документом.
  • Нефинансовые презентации (ежеквартальные общие собрания, маркетинговые презентации) — используйте более широкий навык 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