Felo API PlatformFelo API Platform

משרד

הפכו עמוד מחקר למצגת

חלצו את העמוד, שמרו כהקשר LiveDoc, תנו ל-PPT Task API לבנות את המצגת ושאלו עד שהקישור מוכן.

זמן15 דקותרמהבסיסיעודכן2026-10-29
למייועציםמכירות ושיווקכלים פנימיים

העתיקו את הפרומפט

החליפו את השדות בסוגריים מרובעים והדביקו ב-Claude Code, Codex או AI עם גישה לטרמינל. הוא מתקין את סקיל Felo, שואל לפני שריפת קרדיטים ומריץ את תהליך העבודה.

הפוך את המקור הזה למצגת: [URL ציבורי או נתיב PDF].

קהל: [מי צופה]. שקופיות: [6–10]. שפה: [שפה]. ערכת נושא: [שם ערכת נושא או „default”].

השתמש ב-Web Fetch בעמוד הציבורי (או בקובץ שהועלה), שמור את המקור כהקשר LiveDoc, צור משימת PPT וסקר עד שהמצגת מוכנה.

הפק:
1. מתווה עם שורה אחת לכל שקופית.
2. הקישור למצגת שנוצרה.
3. קישור ה-LiveDoc ששימש כהקשר.

כללים:
- אל תמציא עובדות שאינן במקור. פערים נכתבים „לא מוזכר במקור”.
- משימות PPT צורכות קרדיטים; שאל לפני שליחה.
- שמור יחד את URL המקור, המתווה וקישור המצגת.
- אל תפרסם או תשתף את המצגת מחוץ ל-workspace.
- כתוב את המתווה ל-./deck-outline.md וסכם אותו בצ׳אט.

ההעתקה כוללת גם שלבי התקנה וכללי בטיחות.

מה מקבלים

פלט לדוגמה של ריצה אחת. לא יצירה חיה.

דוגמת מתווה מצגת (קטע)

מקור -> מתווה מצגת

  1. למה הדוח הזה חשוב
  2. מה השתנה ברבעון
  3. שלושת סגמנטי הלקוחות
  4. היכן הראיות דקות
  5. מה לבדוק בהמשך

מצגת: https://felo.ai/slides/... הקשר: https://felo.ai/livedoc/...

הקריאות המדויקות

למפתחים: אותו תהליך עבודה כקוד, לפי סדר ההרצה.

הצג קריאות API אמיתיות
  1. חלצו את עמוד המקור

    עם 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,
    });
  2. שמרו כהקשר 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,
      },
    );
  3. שלחו משימת שקפים

    קראו ל-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"
      }
    }
  4. שאלו עד לסיום

    בדקו את הסטטוס עד השלמה וקראו את קישור השקפים.

    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 אסינכרונית והקישור המוכן
  • שלד שקפים לבדיקה לפני שיתוף

מה זה לא עושה

  • רק עמוד ציבורי או קובץ שהועלה; עמודי התחברות עלולים להיכשל
  • השקפים עוקבים אחרי המקור ולא מכסים את כל מערכת המותג
  • מצגת אחת לריצה; כמה מצגות דורשות לופ
  • לא עורך מצגת קיימת ולא מבטיח התאמה חזותית
  • לא מפרסם או משתף את המצגת

שאלות

אפשר להשתמש ב-PDF במקום URL?

כן. שלחו את משימת PPT כ-multipart form data עם הקובץ; הפלטפורמה שומרת אותו כמשאב LiveDoc ויוצרת את המצגת.

אפשר לבחור ערכת נושא?

כן. פרטו ערכות והעבירו את ה-id שלהן ביצירת המשימה.

כמה זמן מצגת?

זו משימה אסינכרונית. שאלו את ההיסטוריה עד הסוף; מצגות ארוכות לוקחות יותר.

האם הוא עורך את המצגת הקיימת שלי?

לא. הוא יוצר מצגת חדשה מהמקור; עריכת מצגת קיימת היא תהליך אחר.

כמה עולה מצגת אחת?

יצירת שקפים מחויבת לפי שימוש; התעריפים העדכניים בעמוד המחירים והפרומפט מבקש אישור לפני הוצאה.

אפשר להשתמש שוב במקור?

כן. LiveDoc שומר את המקור; מצגות או mindmap הבאות יכולות להשתמש ב-short_id.

תהליכי עבודה קשורים

התאימו

אותו מתכון, מותאם לאיך שאתם באמת מספקים.

מקור PDF

העלו PDF ב-multipart; הפלטפורמה שומרת אותו קודם כמשאב LiveDoc.

קבעו ערכת נושא

פרטו ערכות זמינות והעבירו id ביצירת המשימה.

השתמשו שוב במצגת הבאה

צרו משימת PPT חדשה עם אותו LiveDoc short_id.

עמודי העזר שמאחורי המתכון והשלבים הבאים.