Felo API PlatformFelo API Platform

پژوهش

پیش از سفارش موجودی، یک دسته محصول را بررسی کنید

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

زمان۳۰ دقیقهسطحمتوسطبه‌روزرسانی2026-10-30
برای چه کسانیاپراتورهای تجارت الکترونیکپژوهشگران محصولبنیان‌گذاران DTC

کپی پرامپت

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

پیش از خرید موجودی یا عرضه، این دسته محصول را بررسی کنید: [محصول یا دسته].

بازار: [کشور یا منطقه]. کانال: [بازارگاه / DTC / خرده‌فروشی]. بازه پست‌های خریداران: [۳۰] روز گذشته.
محصولات مشابه یا URL رقبا: [URL]. محدودیت بودجه و حاشیه سود: [محدودیت‌ها]. مخاطب: [تیم].

خروجی یک یادداشت Markdown با این بخش‌ها باشد:
1. یک پاراگراف نتیجه: آیا ارزش بررسی بیشتر دارد و چه چیزی نظر شما را تغییر می‌دهد.
2. سیگنال‌های تقاضا: منابع درباره علاقه، فصلی بودن و جایگزین‌ها چه می‌گویند.
3. محصولات رقیب: هر یک چه ادعا می‌کند، قیمت ثبت‌شده در صفحه و جایی که خریداران کمبود می‌بینند.
4. جایگاه‌یابی قیمت: قیمت‌هایی که واقعاً در صفحه‌ها یافت شده، هر یک با تاریخ ثبت.
5. شکایت‌ها و نیازهای برآورده‌نشده، با نقل‌قول، حساب و تاریخ.
6. ریسک‌ها و پرسش‌های باز پیش از خرید موجودی.
7. منابع: هر صفحه و پست استفاده‌شده، با URL و تاریخ.

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

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

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

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

نمونه یادداشت (بخش)

پژوهش محصول — دسته نمونه

حکم

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

زمینه دسته

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

صفحه‌های رقیب

  • Example A — صفحه محصول (ثبت 2026-10-30)
  • Example B — صفحه محصول (ثبت 2026-10-30)

خریداران چه می‌گویند

  • @example_buyer: «سومین تعویض در یک سال؛ واشر خراب می‌شود». — 2026-10-19
  • @example_home: «تمیز کردن چند دقیقه طول می‌کشد و کسی نمی‌گوید». — 2026-10-24

جایگاه‌یابی قیمت

قیمت‌ها در 2026-10-30 از صفحه‌های پیوندشده ثبت شد. در دو سطح‌اند؛ هر صفحه مستقیم نقل شده، میانگین گرفته نشده.

ریسک‌ها و پرسش‌های باز

  • دوام واشر تکرارشده‌ترین شکایت است.
  • هیچ منبعی نرخ مرجوعی را پوشش نمی‌دهد.
  • پیش از سفارش، زمان تأمین‌کننده و هزینه نهایی را بررسی کنید.

منابع

  • https://example.com/product-a — 2026-10-30
  • https://x.com/example_buyer/status/... — 2026-10-19

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

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

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

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

    product-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; snippet: string }[];
      };
    };
    
    const niche = "portable espresso maker"; // replace with the category you are judging
    
    const context = await felo<ChatData>("/v2/chat", {
      query: `Demand, price bands, and buyer complaints for ${niche} in the US`,
    });
    
    const sources = context.data.resources.slice(0, 5);

    خروجی نمونه

    {
      "answer": "Buyers compare on counter space and cleanup …",
      "sources": [
        { "link": "https://example.com/category-guide", "title": "…", "snippet": "…" }
      ]
    }
  2. صفحات رقیب را ثبت کنید

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

    product-research.ts
    const PRODUCT_PAGES = [
      { url: "https://example.com/product-a", title: "Example A — product page" },
      { url: "https://example.com/product-b", title: "Example B — product page" },
    ];
    
    type ExtractData = { data: { content: string } };
    
    const listings = await Promise.all(
      PRODUCT_PAGES.map((page) =>
        felo<ExtractData>("/v2/web/extract", {
          url: page.url,
          output_format: "markdown",
          with_readability: true,
        }).then((extracted) => ({ ...page, content: extracted.data.content })),
      ),
    );

    خروجی نمونه

    [
      {
        "url": "https://example.com/product-a",
        "title": "Example A — product page",
        "content": "# Example A\n\nSpecs and price as displayed…"
      }
    ]
  3. آنچه خریداران در X گزارش می‌دهند را بخوانید

    صفحات تأمین‌کننده ویژگی می‌شمارند؛ خریداران خرابی را توصیف می‌کنند. دسته را با کلمات اصطکاک — ارسال، کیفیت، بازگشت — در ۳۰ روز جست‌وجو کنید و حساب، تاریخ و پیوند را نگه دارید. این‌ها حکایت‌اند نه داده تقاضا و یادداشت باید بگوید.

    product-research.ts
    type XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
          metrics: { retweet_count: number; favorite_count: number; reply_count: number };
          url: string;
        }[];
      };
    };
    
    const since = Math.floor((Date.now() - 30 * 24 * 60 * 60 * 1000) / 1000);
    
    const search = await felo<XData>("/v2/x/tweet/search", {
      query: `"${niche}" (shipping OR quality OR refund)`,
      limit: 50,
      since_time: since,
    });
    
    const complaints = search.data.tweets;

    خروجی نمونه

    { "data": { "tweets": [
      {
        "content": "Third replacement in a year; the seal fails.",
        "author": { "username": "example_buyer" },
        "created_at": "2026-10-19T15:02:00Z",
        "metrics": { "retweet_count": 1, "favorite_count": 12, "reply_count": 3 },
        "url": "https://x.com/example_buyer/status/..."
      }
    ] } }
  4. یادداشت را بنویسید

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

    product-research.ts
    const capturedOn = new Date().toISOString().slice(0, 10);
    
    const memo = [
      `# Product research — ${niche}`,
      "",
      "## Category context",
      context.data.answer,
      "",
      "## Competitor pages",
      ...listings.map(
        (page) => `- [${page.title}](${page.url}) — captured ${capturedOn}`,
      ),
      "",
      "## What buyers report",
      ...complaints.slice(0, 10).map(
        (post) =>
          `- @${post.author.username} (${post.created_at.slice(0, 10)}): ${post.content}`,
      ),
      "",
      "## Sources",
      ...sources.map((source) => `- [${source.title}](${source.link})`),
    ].join("\n");
    
    console.log(memo);
  5. شواهد را در LiveDoc بایگانی کنید

    برای هر دسته یک بار اجرا کنید: LiveDoc بسازید و short_id را در تنظیمات نگه دارید. صفحات رقیب و منابع Chat را به‌عنوان منابع URL اضافه کنید تا بایگانی حذف تکراری کند، سپس یادداشت را به‌عنوان سند. پیش از خرید ثبت‌ها را جست‌وجو کنید و ببینید کدام قیمت‌ها جابه‌جا شدند.

    product-research.ts
    type LiveDocData = { data: { short_id: string } };
    
    const research = await felo<LiveDocData>("/v2/livedocs", {
      name: `Product research: ${niche}`,
      description: "Competitor pages, buyer posts, and the memo",
    });
    
    await felo(`/v2/livedocs/${research.data.short_id}/resources/urls`, {
      urls: [
        ...listings.map((page) => ({ url: page.url, title: page.title })),
        ...sources.map((source) => ({ url: source.link, title: source.title })),
      ].slice(0, 10),
    });
    
    await felo(`/v2/livedocs/${research.data.short_id}/resources/doc`, {
      title: `Product memo — ${capturedOn}`,
      content: memo,
    });

    خروجی نمونه

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

چه چیزی دارد

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

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

  • فقط منابع عمومی؛ گزارش پرداختی، پیشنهاد تأمین‌کننده و فروش داخلی خارج از دامنه
  • اندازه بازار، حجم یا حاشیه را تخمین نمی‌زند
  • قیمت‌ها همان‌طور که ثبت شده‌اند ثبت می‌شوند، نه نرمال‌سازی یا میانگین
  • پست‌های X حکایت‌اند نه داده تقاضا
  • با تأمین‌کنندگان تماس نمی‌گیرد، سفارش نمی‌دهد و فهرست‌ها را تغییر نمی‌دهد

پرسش‌ها

زمینه بازار از کجا؟

Chat API پاسخ با منابع و صفحات عمومی استفاده‌شده را برمی‌گرداند. صفحات رقیب از URLهای شما و Web Fetch استخراج می‌کند؛ پست‌های خریداران از X Search. هیچ داده فروش خصوصی استفاده نمی‌شود.

آیا می‌گوید محصول فروش می‌رود؟

نه. شواهد عمومی — زمینه، قیمت‌های ثبت‌شده و شکایت‌ها — را می‌چیند و آنچه ناشناخته است می‌نویسد. اعتبارسنجی تقاضا داده شما را می‌خواهد: تبلیغات، پیش‌سفارش یا گفت‌وگو با تأمین‌کننده.

اگر مارکت‌پلیس استخراج را مسدود کند؟

Web Fetch صفحات عمومی را یکی‌یکی می‌آورد و برخی سایت‌ها مسدود می‌کنند. از صفحه محصول یا تأمین‌کننده قابل دسترسی استفاده کنید و بگذارید یادداشت ثبت ناقص را علامت بزند نه اینکه قیمت را حدس بزند.

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

هر قیمت در یادداشت به URL و تاریخ ثبت بسته است. استخراج را نزدیک تصمیم خرید دوباره اجرا کنید؛ بایگانی ثبت‌های قبلی را نگه می‌دارد تا حرکات دیده شود.

آیا با تأمین‌کنندگان یا فروشندگان تماس می‌گیرد؟

نه. گردش‌کار فقط می‌خواند: صفحه استخراج می‌کند، پست عمومی جست‌وجو می‌کند و یادداشت محلی می‌نویسد. پیام نمی‌فرستد، سفارش نمی‌دهد و فهرست را تغییر نمی‌دهد.

هزینه یک پژوهش چقدر است؟

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

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

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

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

نقل‌قول ویدیوی بررسی اضافه کنید

وقتی دسته ویدیوی بررسی دارد، متن را با YouTube Subtitling بگیرید و دو یا سه نقل‌قول زمان‌دار به بخش خریداران اضافه کنید. بررسی ویدیویی تجربه یک نفر است: برچسب حکایت را نگه دارید.

دو گزینه را مقایسه کنید

همان مراحل را برای هر گزینه اجرا کنید و یادداشت‌ها را کنار هم بگذارید: ویژگی ادعاشده، قیمت ثبت‌شده، شکایت تکرارشونده و پرسش باز. مقایسه تا داده فروش یا مرجوعی شما کیفی می‌ماند.

پیش از خرید به‌روز کنید

استخراج را یک روز پیش از سفارش دوباره اجرا کنید. همان LiveDoc را نگه دارید و یادداشت جدید اضافه کنید تا بایگانی تغییر میان پژوهش و خرید را نشان دهد.

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