Oficina
Convierte una página de investigación en una presentación
Extrae la página, guárdala como contexto LiveDoc, deja que la API PPT Task construya el deck y consulta hasta obtener el enlace final.
Copiar el prompt
Sustituye los campos entre corchetes y pégalo en Claude Code, Codex o cualquier IA con acceso a terminal. Instala el skill de Felo, pregunta antes de gastar créditos y ejecuta el flujo.
Convierte esta fuente en una presentación: [URL pública o ruta PDF]. Audiencia: [quién la ve]. Diapositivas: [6–10]. Idioma: [idioma]. Tema: [nombre del tema o «default»]. Usa Web Fetch en la página pública (o el archivo subido), guarda la fuente como contexto LiveDoc, crea una tarea PPT y consulta hasta que la presentación esté lista. Genera: 1. Un esquema de una línea por diapositiva. 2. El enlace de la presentación generada. 3. El enlace del LiveDoc usado como contexto. Reglas: - No inventes hechos que no estén en la fuente. Los huecos se escriben «No mencionado en la fuente». - Las tareas PPT consumen créditos; pregunta antes de enviarlas. - Conserva juntos la URL de origen, el esquema y el enlace de la presentación. - No publiques ni compartas la presentación fuera del espacio de trabajo. - Escribe el esquema en ./deck-outline.md y resúmelo en el chat.
La copia también incluye los pasos de instalación y las reglas de seguridad.
Lo que obtienes
Salida de ejemplo de una ejecución. No es generación en vivo.
Fuente -> esquema del deck
- Por qué importa este informe
- Qué cambió este trimestre
- Los tres segmentos de cliente
- Dónde la evidencia es débil
- Qué probar después
Deck: https://felo.ai/slides/... Contexto: https://felo.ai/livedoc/...
Las llamadas exactas
Para desarrolladores: el mismo flujo como código, en orden de ejecución.
Mostrar las llamadas reales a la API
Extrae la página fuente
Con Web Fetch, convierte la página pública en Markdown manteniendo título y cuerpo.
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, });Guarda como contexto LiveDoc
Crea el LiveDoc, añade la fuente como documento y obtén el 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, }, );Envía la tarea de slides
Llama a PPT Task API con el contenido y el LiveDoc short_id para obtener el 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);Salida de ejemplo
{ "data": { "livedoc_short_id": "PvyKouzJirXjFdst4uKRK3", "ppt_business_id": "BfLPuQKmChk9SPmyQawxgr", "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9" } }Consulta hasta terminar
Revisa el estado hasta completar y lee el enlace de slides.
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);Salida de ejemplo
{ "task_status": "COMPLETED", "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx", "live_doc_url": "https://felo.ai/livedoc/oM8A9iJHg8dT4ZKgHThQTx" }
Qué incluye
- Extracción limpia de la página en Markdown
- LiveDoc como contexto reutilizable
- Tarea PPT asíncrona y enlace final
- Esquema de slides para revisar antes de compartir
Qué no hace
- Solo página pública o archivo subido; páginas con login pueden fallar
- Las slides siguen la fuente y no cubren todo el sistema de marca
- Un deck por ejecución; varios requieren bucle
- No edita un deck existente ni garantiza coincidencia visual
- No publica ni comparte el deck
Preguntas
¿Puedo usar PDF en vez de URL?
Sí. Envía la tarea PPT como multipart form data con el archivo; la plataforma lo guarda como recurso LiveDoc y crea el deck.
¿Puedo elegir un tema?
Sí. Lista los temas y pasa el id al crear la tarea.
¿Cuánto tarda un deck?
Es una tarea asíncrona. Consulta el historial hasta terminar; los decks largos tardan más.
¿Edita mi deck existente?
No. Crea un deck nuevo desde la fuente; editar uno existente es otro flujo.
¿Cuánto cuesta un deck?
La generación de slides se factura por uso; las tarifas están en la página de precios y el prompt pide aprobación antes de gastar.
¿Puedo reutilizar la fuente?
Sí. El LiveDoc guarda la fuente; decks o mindmaps posteriores pueden usar su short_id.
Flujos relacionados
Convierte una pregunta en un brief de investigación con fuentes
Pregunta a la web, guarda las páginas detrás de la respuesta como Markdown, añade lo que dicen los profesionales en X y conserva las evidencias en un LiveDoc que puedes consultar después.
Abrir el flujo de trabajoContenidoPublica un resumen diario de IA que tu equipo realmente lea
Obtén un resumen con fuentes, añade lo que publican los profesionales en X, consigue una transcripción de vídeo, compón la edición en Markdown y archívala en un LiveDoc.
Abrir el flujo de trabajoSoporteResponde preguntas de soporte desde tu propia documentación
Crea un LiveDoc, carga el centro de ayuda y el runbook interno, recupera los pasajes que responden al ticket y deja que el modelo responda solo con esas evidencias.
Abrir el flujo de trabajoHazlo tuyo
La misma receta, adaptada a cómo entregas de verdad.
Fuente PDF
Sube un PDF en multipart; la plataforma lo guarda primero como recurso LiveDoc.
Define el tema
Lista los temas disponibles y pasa el id al crear la tarea.
Reutiliza en el próximo deck
Crea una nueva tarea PPT con el mismo LiveDoc short_id.
Seguir
Las páginas de referencia detrás de esta receta y los siguientes pasos.