Felo API PlatformFelo API Platform

پژوهش

یک پرسش را به خلاصه پژوهشی با منابع تبدیل کنید

از وب بپرسید، صفحات پشت پاسخ را به‌صورت Markdown ذخیره کنید، آنچه متخصصان در X می‌گویند اضافه کنید و شواهد را در LiveDoc نگه دارید تا بعداً دوباره جست‌وجو شود.

زمان۲۰ دقیقهسطحمتوسطبه‌روزرسانی2026-10-29
برای چه کسانیبنیان‌گذاران و اپراتورهاپژوهشگران بازارتیم‌های GTM

کپی پرامپت

فیلدهای داخل قلاب را جایگزین کنید و در Claude Code، Codex یا هوش مصنوعی با دسترسی ترمینال بچسبانید. مهارت Felo را نصب می‌کند، پیش از خرج اعتبار می‌پرسد و گردش‌کار را اجرا می‌کند.

یک خلاصه پژوهشی مستند برای [پرسش یا تصمیم] تهیه کنید.

دامنه: [بازار، منطقه، زبان]. بازه زمانی: [۳۰ روز گذشته / ۱۲ ماه گذشته]. مخاطب: [چه کسی می‌خواند]. عمق: [مرور یک‌صفحه‌ای / خلاصه کامل].

خروجی یک خلاصه Markdown با این بخش‌ها باشد:
1. پاسخ کوتاه در سه بولت.
2. جدول شواهد: ادعا، عنوان منبع، URL، تاریخ انتشار.
3. نقاطی که منابع با هم اختلاف دارند.
4. چیزهایی که هنوز ناشناخته است.
5. فهرست کامل منابع.

قواعد:
- هر ادعای واقعی به پیوند منبع نیاز دارد. واقعیت، نظر و استنباط خود را جدا کنید.
- هرگز نقل‌قول، عدد، تاریخ یا منبع نسازید. داده نبود بنویسید «داده‌ای موجود نیست»، نه صفر.
- منابع اولیه را در اولویت بگذارید. از X به‌عنوان سیگنال متخصصان استفاده کنید، نه مدرک.
- بازه زمانی را به تاریخ شروع و پایان صریح تبدیل کنید و منطقه زمانی را ذکر کنید.
- پیش از مصرف اعتبار، فراخوانی‌های API برنامه‌ریزی‌شده را نشان دهید و منتظر تأیید من بمانید.
- کار تکرارشونده نسازید، پیام نفرستید و چیزی منتشر نکنید.
- نتیجه را در ./research-brief.md بنویسید و در چت خلاصه کنید.

نسخه شامل مراحل نصب و قواعد ایمنی نیز هست.

چه دریافت می‌کنید

خروجی نمونه یک اجرا. نه تولید زنده.

نمونه خلاصه (بخش)

آیا مدل‌های کوچک جای مدل‌های بزرگ را در بات‌های پشتیبانی می‌گیرند؟

پاسخ کوتاه

  • مدل‌های کوچک برای طبقه‌بندی و پاسخ‌های خط اول کافی‌اند.
  • گلوگاه کیفیت بازیابی است، نه اندازه مدل.
  • تیم‌هایی که تغییر کردند کاهش هزینه هر تیکت را گزارش می‌کنند، نه افزایش نرخ حل.
ادعامنبعتاریخ
کیفیت بازیابی کیفیت پاسخ را تعیین می‌کندhttps://example.com/rag-eval2026-10-12
هزینه هر تیکت حل‌شده ۳۸٪ کاهش یافتhttps://example.com/support-case2026-09-28

جایی که منابع اختلاف دارند

بنچمارک فروشندگان تقریباً برابر است؛ تست‌های مستقل هنوز در بازپرداخت چندمرحله‌ای شکاف می‌بینند.

آنچه هنوز ناشناخته است

آیا شکاف با ابزار بهتر بسته می‌شود یا مدل بزرگ‌تر لازم است.

فراخوانی‌های دقیق

برای توسعه‌دهندگان: همان گردش‌کار به‌صورت کد، به ترتیب اجرا.

نمایش فراخوانی‌های واقعی API
  1. از وب بپرسید

    Chat وب را جست‌وجو می‌کند، منابع را رتبه می‌دهد، پاسخ را می‌نویسد و منابع استفاده‌شده را برمی‌گرداند. سه مورد اول را نگه دارید: هر مرحله بعدی یکی از این پیوندها را دنبال می‌کند. کمک‌کننده کلید را یک بار می‌فرستد و خارج از 2xx خطا می‌دهد.

    research.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 ChatData = {
      data: { answer: string; resources: { link: string; title: string }[] };
    };
    
    export async function answer(question: string) {
      const chat = await felo<ChatData>("/v2/chat", { query: question });
      return { answer: chat.data.answer, sources: chat.data.resources.slice(0, 3) };
    }

    خروجی نمونه

    {
      "answer": "Recent developments include …",
      "sources": [
        { "link": "https://example.com/article", "title": "…" }
      ]
    }
  2. صفحات پشت پاسخ را دانلود کنید

    یک گزیده برای خلاصه کافی نیست. صفحات را با حالت خواندن به‌صورت Markdown دانلود کنید تا نقل‌قول‌ها و عنوان‌ها بدون شلوغی ناوبری بمانند. درخواست دوباره همان URL ممکن است از حافظه استخراج استفاده کند.

    research.ts
    type ExtractData = { data: { content: string } };
    
    const pages = await Promise.all(
      sources.map((source) =>
        felo<ExtractData>("/v2/web/extract", {
          url: source.link,
          output_format: "markdown",
          with_readability: true,
          with_cache: true,
        }).then((page) => ({ ...source, content: page.data.content })),
      ),
    );

    خروجی نمونه

    // pages[0].content
    "# Example Article\n\nExtracted article content…"
  3. آنچه X می‌گوید را اضافه کنید

    اخبار اعلامیه‌ها را پوشش می‌دهند؛ X نشان می‌دهد مردم در عمل با چه روبه‌رو می‌شوند. هفت روز آخر را جست‌وجو کنید و نویسنده و زمان را نگه دارید تا خلاصه هر ادعا را نسبت دهد. برای گسترش limit را بالا ببرید؛ هر صفحه نتیجه cursor دارد.

    research.ts
    type XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
        }[];
      };
    };
    
    const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000);
    
    const social = await felo<XData>("/v2/x/tweet/search", {
      query: question,
      limit: 10,
      since_time: since,
    });

    خروجی نمونه

    { "data": { "tweets": [
      { "content": "…", "author": { "username": "…" }, "created_at": "…" }
    ] } }
  4. شواهد را در LiveDoc بایگانی کنید

    یک LiveDoc بسازید و منابع را به‌عنوان منابع URL اضافه کنید. API URLهای دیده‌شده را حذف تکراری می‌کند و برای هر URL یک resource id برمی‌گرداند، بنابراین پرسش‌های بعدی همان شواهد را بدون دانلود دوباره جست‌وجو می‌کنند.

    research.ts
    type LiveDocData = { data: { short_id: string } };
    
    const doc = await felo<LiveDocData>("/v2/livedocs", {
      name: `Research: ${question.slice(0, 60)}`,
      description: "Sources collected while answering the question",
    });
    
    await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, {
      urls: sources.map((source) => ({ url: source.link, title: source.title })),
    });
    
    console.log(doc.data.short_id); // keep this for later queries
  5. بعداً از شواهد بپرسید

    مزیت همین است: پرسش بعدی جست‌وجوی معنایی روی LiveDoc انجام می‌دهد نه وب باز. resource_ids را فقط برای محدود کردن به زیرمجموعه شناخته‌شده بدهید.

    research.ts
    type Retrieved = {
      data: { title: string; content: string; score: number }[];
    };
    
    async function ask(livedoc: string, query: string) {
      const hits = await felo<Retrieved>(
        `/v2/livedocs/${livedoc}/resources/retrieve`,
        { query },
      );
      return hits.data.filter((hit) => hit.score >= 0.7);
    }

    خروجی نمونه

    [
      { "title": "…", "content": "…", "score": 0.92 }
    ]

چه چیزی دارد

  • پاسخ با منابع از Chat API و صفحات پشت آن
  • استخراج صفحات کامل به‌صورت Markdown برای قوی‌ترین منابع
  • پست‌های X با نویسنده و تاریخ به‌عنوان سیگنال متخصصان
  • LiveDoc که شواهد را برای پرسش‌های بعدی قابل جست‌وجو نگه می‌دارد

چه کاری نمی‌کند

  • فقط منابع عمومی؛ صفحات پرداختی یا نیازمند ورود ممکن است شکست بخورند
  • پوشش X سیگنال است، نه پژوهش نمونه‌ای
  • بدون مصاحبه، داده خصوصی یا پایگاه داده پرداختی
  • وقتی شواهد کم است خلاصه آن را می‌گوید نه اینکه شکاف را پر کند
  • یک اجرا برای هر پرامپت؛ زمان‌بندی در عامل یا cron شما

پرسش‌ها

منابع از کجا می‌آیند؟

Chat API صفحات استفاده‌شده را برمی‌گرداند، Web Fetch قوی‌ترین‌ها را به Markdown تبدیل می‌کند و X Search پست‌های تاریخ‌دار متخصصان را اضافه می‌کند. هر آیتم URL خود را نگه می‌دارد.

آیا می‌توان بازار خارج از فناوری را بررسی کرد؟

بله. فیلد دامنه را با بازار خود عوض کنید. بازارهای خاص ممکن است منابع عمومی کمتری داشته باشند؛ خلاصه آن شکاف‌ها را علامت می‌زند نه اینکه حدس بزند.

آیا شواهد پس از اجرا می‌مانند؟

بله اگر مرحله LiveDoc اجرا شود. short_id برگشتی به پرسش‌های بعدی اجازه می‌دهد همان صفحات را بدون دانلود دوباره جست‌وجو کنند.

هزینه یک خلاصه چقدر است؟

بر اساس استفاده با اعتبار محاسبه می‌شود؛ نرخ‌های فعلی در صفحه قیمت است. پرامپت پیش از هزینه تأیید می‌خواهد.

می‌توان هفتگی اجرا کرد؟

بله اما این پرامپت یک بار اجرا می‌شود. زمان‌بندی را در عامل یا cron که همان گردش‌کار را اجرا می‌کند بگذارید.

اگر منبع پشت دیوار پرداخت باشد؟

رد می‌شود و در دسترس نبودن علامت می‌خورد. خلاصه هرگز شکاف را با واقعیت یا نقل‌قول ساختگی پر نمی‌کند.

گردش‌کارهای مرتبط

آن را از خود کنید

همان دستور، متناسب با روش واقعی تحویل شما.

خلاصه را در فایل بنویسید

پاسخ، گزیده صفحات و نقل‌قول‌های X را در Markdown جمع کنید و به ابزار گزارش بدهید یا در مخزن اسناد commit کنید. پیوندهای منبع را کنار ادعاها نگه دارید — خلاصه به اندازه نقل‌قول‌هایش ارزش دارد.

طبق زمان‌بندی اجرا کنید

`answer()` را در cron بپیچید و هر خلاصه را در فایل تاریخ‌دار بنویسید. همان LiveDoc منابع را جمع می‌کند، هفته چهارم با شواهد سه هفته اول پاسخ می‌دهد.

LiveDoc را رد کنید

اگر از قبل پایگاه داده دارید، پاسخ چت و صفحات استخراج‌شده را آنجا ذخیره کنید. مرحله LiveDoc برای جست‌وجو است نه ذخیره‌سازی پیش‌فرض.

صفحات مرجع پشت این دستور و گام‌های بعدی.