Felo API PlatformFelo API Platform

پژوهش

یک جست‌وجو را به خلاصه محتوای SEO تبدیل کنید

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

زمان۲۵ دقیقهسطحمتوسطبه‌روزرسانی2026-10-30
برای چه کسانیبازاریابی محتوامتخصصان SEOویراستاران

کپی پرامپت

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

یک خلاصه محتوای SEO برای پرس‌وجوی [پرس‌وجوی هدف] برای [محصول یا سایت] بنویسید.

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

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

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

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

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

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

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

خلاصه SEO — «چگونه تریاژ پشتیبانی را خودکار کنیم»

پرس‌وجوی هدف و نیت

پرس‌وجو: «چگونه تریاژ پشتیبانی را خودکار کنیم». صفحه‌های بازگشتی با مراحل پیاده‌سازی شروع می‌شوند نه صفحه محصول، پس نیت how-to خوانده می‌شود. این خوانش صفحه‌هاست، نه برچسب نیت اندازه‌گیری‌شده.

صفحه‌های فعلی چه چیزی را پوشش می‌دهند

صفحهURLبا چه شروع می‌شود
خودکارسازی تریاژ پشتیبانی: راهنمای عملیhttps://example.com/guideقواعد مسیریابی، سپس برچسب‌ها
چک‌لیست خودکارسازی تریاژhttps://example.com/checklistخود چک‌لیست

پرسش‌هایی که صفحه‌ها پاسخ می‌دهند

  • خودکارسازی تریاژ چه چیزی را تغییر می‌دهد
  • از کدام قواعد مسیریابی شروع کنیم

پرسش‌های جاافتاده

  • چگونه بسنجیم تریاژ واقعاً بهتر شده
  • وقتی دسته‌بند اشتباه می‌کند چه کنیم

ساختار پیشنهادی

  1. خودکارسازی چه تغییری می‌دهد — ثابت کنید موضوع صف است نه تعداد کارکنان.
  2. سه قاعده مسیریابی اول — هر یک را با مثال ثابت کنید.
  3. چگونه در ماه اول بسنجیم — با شاخصی که مسئول عملیات بتواند بگیرد ثابت کنید.
  4. وقتی خودکارسازی اشتباه می‌کند — مسیر بازگشت انسانی را ثابت کنید.

شواهد

  • نمونه قاعده مسیریابی، نقل از https://example.com/guide (بررسی 2026-10-30)

اینجا اندازه‌گیری نشد

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

منابع

  • https://example.com/guide
  • https://example.com/checklist

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

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

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

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

    seo-brief.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 query = "how to automate support triage";
    const ourSite = "example.com";
    
    const coverage = await felo<ChatData>("/v2/chat", {
      query: `What pages currently answer the search query "${query}"? List the pages and what each one covers.`,
    });
    
    const candidates = coverage.data.resources
      .filter((resource) => !resource.link.includes(ourSite))
      .slice(0, 5)
      .map((resource) => ({ url: resource.link, title: resource.title }));

    خروجی نمونه

    {
      "answer": "Readers searching this usually want a step-by-step …",
      "sources": [
        { "link": "https://example.com/guide", "title": "…", "snippet": "…" }
      ]
    }
  2. صفحات را به‌صورت Markdown بخوانید

    سه تا پنج صفحه قوی‌تر را با Web Fetch به‌صورت Markdown دانلود کنید و عنوان‌ها و پرسش‌ها را نگه دارید.

    seo-brief.ts
    type ExtractData = { data: { content: string } };
    
    const pages = await Promise.all(
      candidates.map(async (page) => {
        const res = await felo<ExtractData>("/v2/web/extract", {
          url: page.url,
          output_format: "markdown",
          with_readability: true,
          with_cache: true,
        });
        const checkedAt = new Date().toISOString().slice(0, 10);
        return { ...page, checkedAt, content: res.data.content };
      }),
    );

    خروجی نمونه

    {
      "url": "https://example.com/guide",
      "checkedAt": "2026-10-30",
      "content": "# Automating support triage\n\n## Routing rules\n…"
    }
  3. پوشش و شکاف‌ها را نقشه کنید

    H2/H3 و پرسش‌های FAQ هر صفحه را استخراج کنید و جدول بسازید: کدام پرسش پاسخ دارد و کدام نه.

    seo-brief.ts
    type Heading = { page: string; heading: string };
    
    const headings: Heading[] = pages.flatMap((page) =>
      page.content
        .split("\n")
        .filter((line) => line.startsWith("## "))
        .map((line) => ({
          page: page.title,
          heading: line.replace(/^##\s+/, ""),
        })),
    );
    
    const questions = headings.filter((item) => item.heading.includes("?"));
    
    const byTopic = new Map<string, string[]>();
    for (const item of headings) {
      byTopic.set(item.heading, [...(byTopic.get(item.heading) ?? []), item.page]);
    }

    خروجی نمونه

    // questions
    [
      { "page": "…", "heading": "What routes should you automate first?" }
    ]
  4. خلاصه را بنویسید

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

    seo-brief.ts
    const today = new Date().toISOString().slice(0, 10);
    
    const brief = [
      `# SEO brief — "${query}"`,
      `Checked ${today}. Site: ${ourSite}.`,
      "",
      "## Intent read",
      "The pages returned for this query lead with: " +
        headings.slice(0, 6).map((item) => item.heading).join("; ") +
        ". This is a reading of their structure, not a measured intent label.",
      "",
      "## What the pages cover",
      "| Page | URL | Checked |",
      "| --- | --- | --- |",
      ...pages.map((page) => `| ${page.title} | ${page.url} | ${page.checkedAt} |`),
      "",
      "## Questions the pages answer",
      ...questions.map((item) => `- ${item.heading} (${item.page})`),
      "",
      "## Topics more than one page covers",
      ...[byTopic.entries()]
        .filter(([, pageTitles]) => pageTitles.length > 1)
        .map(([heading, pageTitles]) => `- ${heading} (${pageTitles.length} pages)`),
      "",
      "## Proposed outline",
      ...questions.slice(0, 5).map((item, index) => `${index + 1}. ${item.heading}`),
      "",
      "## Questions they miss",
      "<!-- Only questions none of the fetched pages answer. Delete this comment when filled. -->",
      "",
      "## Not measured here",
      "Search volume, keyword difficulty, and ranking position. This workflow reads public pages; it does not query a search index or a rank tracker.",
      "",
      "## Sources",
      ...pages.map((page) => `- ${page.title}: ${page.url}`),
    ].join("\n");
    
    console.log(brief);

    خروجی نمونه

    # SEO brief — "how to automate support triage"
  5. در LiveDoc ذخیره کنید

    خلاصه و پیوندهای صفحات را در LiveDoc ذخیره کنید تا به‌روزرسانی بعدی فقط تغییرات را دانلود کند.

    seo-brief.ts
    type LiveDocData = { data: { short_id: string } };
    
    const briefDoc = await felo<LiveDocData>("/v2/livedocs", {
      name: `SEO briefs: ${ourSite}`,
      description: "One document resource per target query",
    });
    
    await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/urls`, {
      urls: pages.map((page) => ({ url: page.url, title: page.title })),
    });
    
    await felo(`/v2/livedocs/${briefDoc.data.short_id}/resources/doc`, {
      title: `SEO brief — ${query}`,
      content: brief,
    });
    
    console.log(briefDoc.data.short_id); // the next query adds to this archive

    خروجی نمونه

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

چه چیزی دارد

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

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

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

پرسش‌ها

آیا حجم یا رتبه را اندازه می‌گیرد؟

نه. صفحات عمومی را می‌خواند و ارزیابی می‌کند امروز کدام محتوا پاسخ می‌دهد؛ رتبه و حجم در ابزارهای SEO شماست.

داده از کجا؟

Chat صفحات دارای منبع را برمی‌گرداند و Web Fetch آن‌ها را Markdown می‌کند. هر ارزیابی به صفحه و تاریخ مشخصی اشاره دارد.

چند جست‌وجو را می‌تواند انجام دهد؟

بله اما یکی‌یکی. مراحل را برای هر جست‌وجو تکرار کنید و خلاصه‌های جداگانه ذخیره کنید.

برای کدام جست‌وجوها مناسب است؟

اطلاعاتی، مقایسه‌ای و «چگونه انجام دهیم»، چون صفحات عمومی سیگنال کافی می‌دهند. جست‌وجوهای تراکنشی داده محصول و تبدیل شما را می‌خواهند.

آیا مقاله را می‌نویسد؟

نه. خلاصه و ساختار می‌دهد؛ نوشتن کار ویراستار یا عامل نویسندگی شماست.

هزینه یک اجرا چقدر است؟

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

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

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

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

فقط جست‌وجوهای مقایسه‌ای

به «X در برابر Y» و «بهترین X» محدود کنید تا زاویه تمایز بهتر دیده شود.

صفحه محصول خود را اضافه کنید

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

هر فصل به‌روز کنید

در همان LiveDoc دوباره اجرا کنید و ببینید صفحات رقیب و ساختار چگونه تغییر می‌کنند.

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