Felo API PlatformFelo API Platform

Biuro

Zamień stronę badawczą w prezentację

Wyekstrahuj stronę, zapisz jako kontekst LiveDoc, pozwól PPT Task API zbudować deck i pytaj, aż link będzie gotowy.

Czas15 minutPoziomPodstawowyZaktualizowano2026-10-29
Dla kogoKonsultanciSprzedaż i marketingNarzędzia wewnętrzne

Skopiuj prompt

Podmień pola w nawiasach kwadratowych i wklej do Claude Code, Codex albo AI z dostępem do terminala. Instaluje skill Felo, pyta przed wydaniem kredytów i uruchamia workflow.

Zamień to źródło w deck slajdów: [publiczny URL lub ścieżka PDF].

Odbiorcy: [kto ogląda]. Slajdy: [6–10]. Język: [język]. Motyw: [nazwa motywu lub „default”].

Użyj Web Fetch na publicznej stronie (lub przesłanym pliku), zapisz źródło jako kontekst LiveDoc, utwórz zadanie PPT i odpytuj aż deck będzie gotowy.

Przygotuj:
1. Konspekt z jedną linią na slajd.
2. Link do wygenerowanego decku.
3. Link do LiveDoc użytego jako kontekst.

Zasady:
- Nie wymyślaj faktów, których nie ma w źródle. Luki zapisuj jako „Nie wspomniano w źródle”.
- Zadania PPT zużywają kredyty; pytaj przed wysłaniem.
- Trzymaj razem URL źródła, konspekt i link do decku.
- Nie publikuj ani nie udostępniaj decku poza workspace.
- Zapisz konspekt w ./deck-outline.md i podsumuj go w czacie.

Kopia zawiera też kroki instalacji i zasady bezpieczeństwa.

Co otrzymujesz

Przykładowy wynik jednego uruchomienia. Nie generowanie na żywo.

Przykładowy plan decku (fragment)

Źródło -> plan decku

  1. Dlaczego ten raport jest ważny
  2. Co zmieniło się w tym kwartale
  3. Trzy segmenty klientów
  4. Gdzie dowody są cienkie
  5. Co testować dalej

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

Dokładne wywołania

Dla deweloperów: ten sam workflow jako kod, w kolejności wykonania.

Pokaż rzeczywiste wywołania API
  1. Wyekstrahuj stronę źródłową

    Przez Web Fetch zamień publiczną stronę w Markdown, zachowując tytuł i treść.

    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. Zapisz jako kontekst LiveDoc

    Utwórz LiveDoc, dodaj źródło jako dokument i weź 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. Wyślij zadanie slajdów

    Wywołaj PPT Task API z treścią i LiveDoc short_id, by dostać 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);

    Przykładowy wynik

    {
      "data": {
        "livedoc_short_id": "PvyKouzJirXjFdst4uKRK3",
        "ppt_business_id": "BfLPuQKmChk9SPmyQawxgr",
        "task_id": "019cad6d-e874-55ef-d577-686344b5a7e9"
      }
    }
  4. Pytaj do końca

    Sprawdzaj status do ukończenia i czytaj link slajdów.

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

    Przykładowy wynik

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

Co zawiera

  • Czysta ekstrakcja strony źródłowej jako Markdown
  • LiveDoc jako kontekst wielokrotnego użytku
  • Asynchroniczne zadanie PPT i gotowy link
  • Outline slajdów do sprawdzenia przed udostępnieniem

Czego nie robi

  • Tylko publiczna strona lub przesłany plik; strony za logowaniem mogą zawieść
  • Slajdy podążają za źródłem i nie pokrywają całego systemu marki
  • Jeden deck na uruchomienie; kilka decków wymaga pętli
  • Nie edytuje istniejącego decku i nie gwarantuje zgodności wizualnej
  • Nie publikuje ani nie udostępnia decku

Pytania

Czy można użyć PDF zamiast URL?

Tak. Wyślij zadanie PPT jako multipart form data z plikiem; platforma zapisuje go jako zasób LiveDoc i tworzy deck.

Czy można wybrać motyw?

Tak. Wypisz motywy i podaj id motywu przy tworzeniu zadania.

Ile trwa deck?

To zadanie asynchroniczne. Odpytuj historię do końca; długie decki trwają dłużej.

Czy edytuje mój istniejący deck?

Nie. Tworzy nowy deck ze źródła; edycja istniejącego to inny workflow.

Ile kosztuje jeden deck?

Generowanie slajdów jest rozliczane według użycia; aktualne stawki na stronie cen, a prompt pyta o zgodę przed wydaniem.

Czy można użyć źródła ponownie?

Tak. LiveDoc zachowuje źródło; kolejne decki lub mindmapy mogą użyć jego short_id.

Powiązane workflowy

Dostosuj

Ta sama receptura, dopasowana do tego, jak naprawdę dostarczasz.

Źródło PDF

Prześlij PDF przez multipart; platforma zapisuje go najpierw jako zasób LiveDoc.

Ustaw motyw

Wypisz dostępne motywy i podaj id przy tworzeniu zadania.

Użyj ponownie w kolejnym decku

Utwórz nowe zadanie PPT z tym samym LiveDoc short_id.

Strony referencyjne za tą recepturą i kolejne kroki.