Офис
Превратите исследовательскую страницу в презентацию
Извлеките страницу, сохраните её как контекст LiveDoc, затем дайте PPT Task API собрать deck и опрашивайте задачу до готовой ссылки.
Скопировать промпт
Замените поля в квадратных скобках и вставьте в Claude Code, Codex или любой AI с доступом к терминалу. Он установит навык Felo, спросит перед списанием кредитов и выполнит процесс.
Преврати этот источник в презентацию: [публичный URL или путь к PDF]. Аудитория: [кто смотрит]. Слайдов: [6–10]. Язык: [язык]. Тема: [название темы или «default»]. Используй Web Fetch на публичной странице (или загруженном файле), сохрани источник как контекст LiveDoc, создай задачу PPT и опрашивай до готовности презентации. Подготовь: 1. План по одной строке на слайд. 2. Ссылку на созданную презентацию. 3. Ссылку на LiveDoc, использованный как контекст. Правила: - Не выдумывай факты, которых нет в источнике. Пробелы помечай как «В источнике не указано». - Задачи PPT расходуют кредиты; спрашивай перед отправкой. - Храни вместе URL источника, план и ссылку на презентацию. - Не публикуй и не делись презентацией за пределами рабочего пространства. - Запиши план в ./deck-outline.md и кратко изложи его в чате.
В копию также входят шаги установки и правила безопасности.
Что получится
Пример вывода одного запуска. Не живая генерация.
Источник -> структура колоды
- Почему этот отчёт важен
- Что изменилось за квартал
- Три сегмента клиентов
- Где доказательств мало
- Что тестировать дальше
Колода: https://felo.ai/slides/... Контекст: https://felo.ai/livedoc/...
Реальные вызовы
Для разработчиков: тот же процесс в виде кода в порядке выполнения.
Показать реальные вызовы API
Извлеките исходную страницу
Через Web Fetch превратите публичную страницу в Markdown, сохранив заголовок и текст.
deck.ts const BASE = "https://openapi.felo.ai"; const headers = { Authorization: `Bearer ${process.env.FELO_API_KEY}`, "Content-Type": "application/json", }; async function felo<T>(path: string, body?: unknown): Promise<T> { const res = await fetch(`${BASE}${path}`, { method: body ? "POST" : "GET", headers, body: body ? JSON.stringify(body) : undefined, }); if (!res.ok) throw new Error(`${res.status}: ${await res.text()}`); return res.json() as Promise<T>; } type ExtractData = { data: { content: string } }; const page = await felo<ExtractData>("/v2/web/extract", { url: "https://example.com/research", output_format: "markdown", with_readability: true, });Сохраните контекст в LiveDoc
Создайте LiveDoc и добавьте источник документом, получив short_id.
deck.ts type LiveDocData = { data: { short_id: string } }; type ResourceData = { data: { id: string } }; const doc = await felo<LiveDocData>("/v2/livedocs", { name: "Quarterly research deck", description: "Source material for the next deck", }); const resource = await felo<ResourceData>( `/v2/livedocs/${doc.data.short_id}/resources/doc`, { title: "Source page", content: page.data.content, }, );Отправьте задачу слайдов
Вызовите PPT Task API с содержимым страницы и LiveDoc short_id, получите task_id.
deck.ts type PptTaskData = { data: { task_id: string; livedoc_short_id: string }; }; const task = await felo<PptTaskData>("/v2/ppts", { query: "Six slides for a product review: findings, evidence, next steps", livedoc_short_id: doc.data.short_id, }); console.log(task.data.task_id);Пример вывода
{ "data": { "livedoc_short_id": "PvyKouzJirXjFdst4uKRK3", "ppt_business_id": "BfLPuQKmChk9SPmyQawxgr", "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9" } }Опрашивайте до завершения
Проверяйте статус задачи, пока не завершится, и прочитайте ссылку на слайды.
deck.ts type TaskState = { data: { task_status: string; ppt_url?: string; live_doc_url?: string }; }; async function waitForDeck(taskId: string) { for (let attempt = 0; attempt < 40; attempt++) { const state = await felo<TaskState>(`/v2/tasks/${taskId}/historical`); if (state.data.task_status === "COMPLETED") return state.data; if (["FAILED", "EXPIRED", "CANCELED"].includes(state.data.task_status)) { throw new Error(`Deck task ${state.data.task_status}`); } await new Promise((resolve) => setTimeout(resolve, 3000)); } throw new Error("Deck task timed out"); } const result = await waitForDeck(task.data.task_id); console.log(result.ppt_url);Пример вывода
{ "task_status": "COMPLETED", "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx", "live_doc_url": "https://felo.ai/livedoc/oM8A9iJHg8dT4ZKgHThQTx" }
Что входит
- Чистое извлечение исходной страницы в Markdown
- LiveDoc с многоразовым контекстом
- Асинхронная PPT-задача и готовая ссылка
- План слайдов для проверки перед отправкой
Чего не делает
- Источник только публичная страница или загруженный файл; страницы только для входа могут не работать
- Слайды следуют источнику и не покрывают всю бренд-систему
- Один deck за запуск; для нескольких нужен цикл
- Не редактирует существующий deck и не гарантирует визуальное совпадение
- Не публикует и не отправляет deck
Вопросы
Можно использовать PDF вместо URL?
Да. Отправьте PPT-задачу как multipart form data с файлом; платформа сохранит его как ресурс LiveDoc и создаст deck.
Можно выбрать тему?
Да. Сначала получите список тем, затем передайте id темы при создании задачи.
Сколько занимает deck?
Это асинхронная задача. Опрашивайте историю до завершения; длинные deck дольше коротких.
Он редактирует существующий deck?
Нет. Он создаёт новый deck из источника; редактирование существующего — отдельный процесс.
Сколько стоит deck?
Генерация слайдов оплачивается по факту использования; актуальные тарифы на странице цен, промпт просит одобрение до трат.
Можно переиспользовать источник?
Да. LiveDoc хранит источник; следующие deck или mindmap могут использовать его short_id.
Связанные процессы
Превратите один вопрос в исследовательский бриф с источниками
Спросите веб, сохраните страницы, на которых основан ответ, как Markdown, добавьте мнения практиков из X и оставьте доказательства в LiveDoc, который можно будет искать позже.
Открыть рабочий процессКонтентВыпускайте ежедневный AI-дайджест, который команда действительно читает
Получите подборку новостей с источниками, добавьте обсуждения практиков в X, загрузите один транскрипт видео, соберите выпуск в Markdown и сохраните его в LiveDoc.
Открыть рабочий процессПоддержкаОтвечайте на вопросы поддержки по своей документации
Создайте LiveDoc, загрузите справочный центр и внутренний runbook, найдите фрагменты, отвечающие на тикет, и позвольте модели отвечать только по этим доказательствам.
Открыть рабочий процессАдаптируйте под себя
Тот же рецепт, подстроенный под ваш реальный процесс.
Источник PDF
Загрузите PDF через multipart; платформа сначала сохранит его как ресурс LiveDoc.
Укажите тему
Получите список тем и передайте id темы при создании задачи.
Переиспользуйте в следующем deck
Создайте новую PPT-задачу с тем же LiveDoc short_id.
Продолжить
Справочные страницы этого рецепта и куда двигаться дальше.