Felo API PlatformFelo API Platform

Kantoor

Maak van een onderzoekspagina een presentatie

Extraheer de pagina, bewaar hem als LiveDoc-context, laat de PPT Task API het deck bouwen en vraag door tot de voltooide link.

Tijd15 minutenNiveauBeginnerBijgewerkt2026-10-29
Voor wieConsultantsSales & marketingInterne tools

Prompt kopiëren

Vervang de velden tussen blokhaken en plak in Claude Code, Codex of een AI met terminaltoegang. Die installeert de Felo-skill, vraagt voor credits en voert de workflow uit.

Zet deze bron om in een slide-deck: [publieke URL of PDF-pad].

Publiek: [wie kijkt]. Slides: [6–10]. Taal: [taal]. Thema: [themanaam of ‘default’].

Gebruik Web Fetch op de publieke pagina (of het geüploade bestand), sla de bron op als LiveDoc-context, maak een PPT-taak en poll tot het deck klaar is.

Lever:
1. Een outline met één regel per slide.
2. De link naar het gegenereerde deck.
3. De link naar het gebruikte LiveDoc.

Regels:
- Verzin geen feiten die niet in de bron staan. Gaten heten ‘Niet vermeld in de bron’.
- PPT-taken kosten credits; vraag het voordat je ze indient.
- Houd bron-URL, outline en decklink bij elkaar.
- Publiceer of deel het deck niet buiten de workspace.
- Schrijf de outline naar ./deck-outline.md en vat het samen in de chat.

De kopie bevat ook de installatiestappen en veiligheidsregels.

Wat je krijgt

Voorbeelduitvoer van een run. Geen live generatie.

Voorbeeld-deck-outline (fragment)

Bron -> deck-outline

  1. Waarom dit rapport ertoe doet
  2. Wat dit kwartaal veranderde
  3. De drie klantsegmenten
  4. Waar het bewijs dun is
  5. Wat hierna te testen

Deck: https://felo.ai/slides/... Context: https://felo.ai/livedoc/...

De exacte aanroepen

Voor ontwikkelaars: dezelfde workflow als kopieerbare code in uitvoeringsvolgorde.

Exacte API-aanroepen tonen
  1. Extraheer de bronpagina

    Zet de openbare pagina met Web Fetch om naar Markdown en behoud titel en tekst.

    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,
    });
  2. Bewaar als LiveDoc-context

    Maak de LiveDoc, voeg de bron als document toe en ontvang de 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,
      },
    );
  3. Stuur de slidetaak

    Roep de PPT Task API aan met inhoud en LiveDoc short_id en ontvang de 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);

    Voorbeelduitvoer

    {
      "data": {
        "livedoc_short_id": "PvyKouzJirXjFdst4uKRK3",
        "ppt_business_id": "BfLPuQKmChk9SPmyQawxgr",
        "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9"
      }
    }
  4. Poll tot voltooiing

    Controleer de status tot voltooid en lees de slidlink.

    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);

    Voorbeelduitvoer

    {
      "task_status": "COMPLETED",
      "ppt_url": "https://felo.ai/slides/oM8A9iJHg8dT4ZKgHThQTx",
      "live_doc_url": "https://felo.ai/livedoc/oM8A9iJHg8dT4ZKgHThQTx"
    }

Wat inbegrepen is

  • Schone Markdown-extractie van de bronpagina
  • LiveDoc als herbruikbare context
  • Asynchrone PPT-taak en voltooide link
  • Slide-outline om voor delen te controleren

Wat het niet doet

  • Bron alleen openbare pagina of geüpload bestand; loginpagina’s kunnen falen
  • Slides volgen de bron en dekken niet het hele brandsysteem
  • Eén deck per run; meerdere vragen een lus
  • Bewerkt geen bestaand deck en garandeert geen visuele match
  • Publiceert of deelt het deck niet

Vragen

Kan ik PDF in plaats van URL gebruiken?

Ja. Stuur de PPT-taak als multipart form data met het bestand; het platform bewaart het als LiveDoc-resource en maakt het deck.

Kan ik een thema kiezen?

Ja. Noem eerst de thema’s en geef de thema-id mee bij het maken van de taak.

Hoe lang duurt een deck?

Het is een asynchrone taak. Poll de historie tot voltooiing; lange decks duren langer.

Bewerkt het mijn bestaande deck?

Nee. Het maakt een nieuw deck uit de bron; een bestaand deck bewerken is een andere workflow.

Wat kost een deck?

Slidegeneratie wordt op gebruik gefactureerd; actuele tarieven staan op de prijspagina en de prompt vraagt goedkeuring voor uitgaven.

Kan ik de bron hergebruiken?

Ja. De LiveDoc bewaart de bron; volgende decks of mindmaps kunnen de short_id gebruiken.

Gerelateerde workflows

Maak het van jou

Hetzelfde recept, aangepast aan hoe je echt oplevert.

PDF-bron

Upload een PDF via multipart; het platform bewaart die eerst als LiveDoc-resource.

Thema instellen

Noem beschikbare thema’s en geef de thema-id mee bij het maken van de taak.

Hergebruik in het volgende deck

Maak een nieuwe PPT-taak met dezelfde LiveDoc short_id.

De referentiepagina’s achter dit recept en de volgende stappen.