پژوهش
تحلیلی از رقبا بسازید که تیم فروش بتواند استفاده کند
صفحات رقیب، پوشش خبری اطراف آن و آنچه خریداران در X میگویند را جمع کنید، سپس تحلیلی بسازید که هر ادعا منبع، تاریخ و وضعیت دارد.
کپی پرامپت
فیلدهای داخل قلاب را جایگزین کنید و در Claude Code، Codex یا هوش مصنوعی با دسترسی ترمینال بچسبانید. مهارت Felo را نصب میکند، پیش از خرج اعتبار میپرسد و گردشکار را اجرا میکند.
یک تحلیل رقابتی از [نام رقیب] برای [محصول ما] تهیه کنید. دامنه: [بخش]، [منطقه]، [زبان]. بازه زمانی: [۹۰ روز گذشته / ۱۲ ماه گذشته]. تصمیمی که پشتیبانی میکند: [تغییر قیمت / جایگاهیابی هنگام عرضه / مدیریت اعتراضها]. منابع شروع: [دامنه رقیب]، [URL صفحه قیمت]، [URL تغییرات]. خروجی یک تحلیل Markdown با این بخشها باشد: 1. اینکه خود را چگونه جایگاهیابی میکنند، با کلمات خودشان. 2. جدول شواهد: ادعا، عنوان منبع، URL، تاریخ، وضعیت (Verified / Vendor claim / Third-party / Signal / Inference / Not verified). 3. قیمتها: آنچه صفحه میگوید، با پیوند و تاریخ بررسی. هرگز نرخ را بدون صفحه و تاریخ به متن منتقل نکنید. 4. نقاطی که خریداران اعتراض میکنند، با حسابهای X و تاریخ، با برچسب سیگنال. 5. کاری که باید بعد انجام دهیم، با برچسب توصیه. 6. فهرست کامل منابع. قواعد: - جایگاهیابی آنها را نقل کنید؛ آن را به ادعای قویتر بازنویسی نکنید. - ادعای فروشنده، پوشش شخص ثالث و استنباط خود را جدا کنید. هر ردیف را برچسب بزنید. - هرگز قیمت، عدد، نام مشتری یا معیار ساختگی نسازید. داده نبود «دادهای موجود نیست». - بازه زمانی و منطقه را به مقادیر صریح تبدیل کنید. - پیش از مصرف اعتبار، فراخوانیهای API برنامهریزیشده را نشان دهید و منتظر تأیید من بمانید. - چیزی منتشر، ارسال، زمانبندی یا در CRM ثبت نکنید. - نتیجه را در ./competitor-teardown.md بنویسید و در چت خلاصه کنید.
نسخه شامل مراحل نصب و قواعد ایمنی نیز هست.
چه دریافت میکنید
خروجی نمونه یک اجرا. نه تولید زنده.
تحلیل رقیب — [رقیب]، بررسیشده در 2026-10-30
چگونه خود را جایگاهیابی میکنند
تیتر صفحه اصلی: «پلتفرم تیمهای پشتیبانی در حال رشد». صفحه دسته: «هر چیزی که تیم پشتیبانی شما نیاز دارد». هر دو ادعای فروشندهاند و همانطور که نوشته شده نقل شدهاند.
جدول شواهد
| ادعا | منبع | تاریخ | وضعیت |
|---|---|---|---|
| بهعنوان پلتفرم جایگاهیابی میشود، نه ابزار نقطهای | https://example.com/competitor/home | 2026-10-30 | Verified |
| هر هفته تغییر منتشر میکند | https://example.com/competitor/changelog | 2026-10-28 | Verified |
| در جمعبندیهای مستقل ذکر شده | https://example.com/roundup | 2026-10-27 | Third-party |
| خریداران از آنبوردینگ کند میگویند | پست X زیر | 2026-10-14 | Signal |
| Enterprise بزرگترین بخش آنهاست | دادهای موجود نیست | — | Not verified |
قیمت
صفحه قیمت یک طرح پلهای و یک طرح مصرفی دارد. نرخها اینجا تکرار نمیشوند؛ صفحه زنده و تاریخ را بررسی کنید: https://example.com/competitor/pricing (2026-10-30).
جایی که خریداران اعتراض میکنند
@example_dev، 2026-10-14: «نصب بیشتر از آنچه دمو نشان میداد طول کشید». یک پست تاریخدار؛ این شکایت است، نه برآورد فراوانی.
توصیه
در صفحه مقایسه، زمان تا اولین نتیجه را برجسته کنید. این استنباط ماست، نه ادعای رقیب.
منابع
- https://example.com/competitor/home
- https://example.com/competitor/pricing
- https://example.com/competitor/changelog
فراخوانیهای دقیق
برای توسعهدهندگان: همان گردشکار بهصورت کد، به ترتیب اجرا.
نمایش فراخوانیهای واقعی API
با پایهای دارای منابع شروع کنید
Chat پاسخ و صفحات استفادهشده را برمیگرداند، نقشهای از جایی که درباره رقیب صحبت میشود. پاسخ را سرنخ بدانید نه منبع: پیوندها را نگه دارید، آنها ردیفهای شخص ثالث را میدهند. کمککننده کلید را یک بار میفرستد و خارج از 2xx خطا میدهد.
competitor.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 competitor = "Example Competitor"; const segment = "mid-market support teams"; const baseline = await felo<ChatData>("/v2/chat", { query: `How does ${competitor} position itself for ${segment}? Include pricing and recent launches.`, }); const seedSources = baseline.data.resources.slice(0, 5);خروجی نمونه
{ "answer": "The competitor positions itself as …", "sources": [ { "link": "https://example.com/competitor", "title": "…", "snippet": "…" } ] }صفحاتی که کنترل میکنند را دانلود کنید
پوشش شخص ثالث نشان میدهد مردم چه فکر میکنند؛ صفحات خودشان نشان میدهد چه ادعا میکنند. صفحه اصلی، قیمت و تغییرات را با حالت خواندن به Markdown تبدیل کنید و تاریخ دانلود را بنویسید: صفحه قیمت بدون تاریخ تله است.
competitor.ts type ExtractData = { data: { content: string } }; const ownedPages = [ { url: "https://example.com/competitor/home", title: "Homepage" }, { url: "https://example.com/competitor/pricing", title: "Pricing" }, { url: "https://example.com/competitor/changelog", title: "Changelog" }, ]; const fetched = await Promise.all( ownedPages.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/competitor/pricing", "checkedAt": "2026-10-30", "content": "# Pricing\n\nExtracted page text…" }ببینید خریداران در X چه میگویند
در X مخالفتها و دور زدنهای رقیب را جستوجو کنید. حساب و تاریخ هر پست را نگه دارید؛ نقلقول تاریخدار شکایت را ثابت میکند نه تکرارش را. تحلیل آن را سیگنال علامت میزند و چند پست را هرگز درصد نمیکند.
competitor.ts type XData = { data: { tweets: { content: string; author: { username: string }; created_at: string; metrics: { retweet_count: number; favorite_count: number }; }[]; }; }; const since = Math.floor((Date.now() - 90 * 24 * 60 * 60 * 1000) / 1000); const buyerSignal = await felo<XData>("/v2/x/tweet/search", { query: `"${competitor}" (pricing OR onboarding OR migration)`, limit: 25, since_time: since, }); const objections = buyerSignal.data.tweets.slice(0, 5);خروجی نمونه
{ "data": { "tweets": [ { "content": "setup took longer than the demo suggested", "author": { "username": "example_dev" }, "created_at": "2026-10-14T09:20:00Z", "metrics": { "retweet_count": 3, "favorite_count": 24 } } ] } }تحلیل را با جدول شواهد بسازید
این گام تحریریه است: صفحات و پستها را به ادعا تبدیل کنید و به هرکدام منبع، تاریخ و وضعیت بدهید. ستون وضعیت سند را صادق نگه میدارد:
Verifiedبرای آنچه صفحه میگوید،Vendor claimبرای بازاریابی،Third-partyبرای پوشش بیرونی،Signalبرای پست تاریخدار،Inferenceبرای خوانش شما وNot verifiedبدون شاهد.competitor.ts const today = new Date().toISOString().slice(0, 10); const row = (claim: string, source: string, date: string, status: string) => `| ${claim} | ${source} | ${date} | ${status} |`; const teardown = [ `# Competitor teardown — ${competitor}`, `Scope: ${segment}. Checked ${today}.`, "", "| Claim | Source | Date | Status |", "| --- | --- | --- | --- |", row("Free tier listed on the pricing page", ownedPages[1].url, fetched[1].checkedAt, "Verified"), row("Positions as a platform, not a point tool", ownedPages[0].url, fetched[0].checkedAt, "Vendor claim"), row("Discussed in independent coverage", seedSources[0]?.link ?? "Not available", today, "Third-party"), row("Buyers report onboarding friction", "X post, quoted below", today, "Signal"), row("Most revenue comes from enterprise", "Not available", "—", "Not verified"), "", "## Recommendation", "Lead with time-to-first-result on the comparison page. Inference, not a competitor claim.", ].join("\n"); console.log(teardown);خروجی نمونه
| Free tier listed on the pricing page | https://example.com/competitor/pricing | 2026-10-30 | Verified |
برای بهروزرسانی بعدی در LiveDoc بایگانی کنید
برای هر رقیب یک LiveDoc بسازید، صفحات دانلودشده را بهعنوان منابع URL و تحلیل را بهعنوان سند اضافه کنید. افزودن دوباره URL حذف تکراری میشود، بنابراین فصل بعد فقط تغییرات دانلود میشوند و تحلیل قبلی در همان بایگانی میماند.
competitor.ts type LiveDocData = { data: { short_id: string } }; const teardownDoc = await felo<LiveDocData>("/v2/livedocs", { name: `Teardown: ${competitor}`, description: `Sources and teardown checked ${today}`, }); await felo(`/v2/livedocs/${teardownDoc.data.short_id}/resources/urls`, { urls: fetched.map((page) => ({ url: page.url, title: page.title })), }); await felo(`/v2/livedocs/${teardownDoc.data.short_id}/resources/doc`, { title: `Teardown ${today}`, content: teardown, }); console.log(teardownDoc.data.short_id); // the next refresh reuses this LiveDocخروجی نمونه
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
چه چیزی دارد
- پایهای با منابع از Chat API و صفحات پشت آن
- صفحه اصلی، قیمت و تغییرات رقیب بهصورت Markdown
- نظرهای تاریخدار خریداران از X، علامتخورده بهعنوان سیگنال نه شاهد
- جدول شواهد که واقعیتهای تأییدشده، ادعاهای فروشنده و استنتاج را جدا میکند
- LiveDoc که منابع را نگه میدارد تا از صفر شروع نشود
چه کاری نمیکند
- فقط منابع عمومی؛ بدون مصاحبه برد/باخت، یادداشت CRM یا داشبورد خصوصی
- قیمتها پیوند و تاریخدار میشوند و هرگز بدون تاریخ بررسی در جدول منجمد نمیشوند
- پوشش X ناقص است و نمونه نماینده خریداران نیست
- جایگاهیابی شما را انتخاب نمیکند؛ توصیهها بهعنوان استنتاج علامت میخورند
- تحلیل را منتشر نمیکند یا در ابزارهای battlecard نمینویسد
پرسشها
شواهد از کجا میآیند؟
Chat API پایهای با منابع و صفحات استفادهشده را برمیگرداند، Web Fetch صفحات رقیب را Markdown میکند و X Search پستهای تاریخدار اضافه میکند. هر ردیف منبع و تاریخ دارد و استنتاج وضعیت خودش را دارد.
آیا میتوان چند رقیب را پوشش داد؟
بله. همان پرامپت را برای هر رقیب اجرا کنید و برای هر شرکت یک LiveDoc نگه دارید. صفحه مقایسه فقط ردیفهای «تأییدشده» را کنار هم میگذارد نه شواهد دو اجرا را مخلوط کند.
آیا میتوان قیمتهایشان را نقل کرد؟
گردشکار آنچه صفحه قیمت میگوید را با پیوند و تاریخ بررسی ثبت میکند. نرخها را در متن منجمد نمیکند چون قیمتها تغییر میکنند و عدد قدیمی از نبود عدد بدتر است.
و یادداشتهای برد/باخت ما؟
فقط منابع عمومی را میخواند. یادداشتهای داخلی را بهعنوان سند جداگانه در LiveDoc اضافه کنید و داخلی علامت بزنید؛ هرگز در مواد مشتری نقل نمیشوند.
هر چند وقت بهروز شود؟
با محرک نه تقویم: تغییر قیمت، عرضه یا شروع چرخه فروش. همان LiveDoc را دوباره اجرا کنید تا فصل قبل کنار جدید بماند.
هزینه یک تحلیل چقدر است؟
هر فراخوانی چت، استخراج و جستوجوی X بر اساس استفاده اعتبار مصرف میکند؛ نرخهای فعلی در صفحه قیمت است. پرامپت پیش از هزینه تأیید میخواهد.
گردشکارهای مرتبط
یک پرسش را به خلاصه پژوهشی با منابع تبدیل کنید
از وب بپرسید، صفحات پشت پاسخ را بهصورت Markdown ذخیره کنید، آنچه متخصصان در X میگویند اضافه کنید و شواهد را در LiveDoc نگه دارید تا بعداً دوباره جستوجو شود.
باز کردن گردشکارپژوهشپرسش بازار را به خلاصه go-to-market تبدیل کنید
پرسش دقیقی از بازار بپرسید، صفحات دسته و قیمت پشت پاسخ را بخوانید، جمع کنید خریداران مشکل را در X چگونه توصیف میکنند و خلاصه GTM با ادعاهای مستند و پرسشهای باز ذخیره کنید.
باز کردن گردشکارمحتواخلاصه خبری روزانه AI منتشر کنید که تیم واقعاً بخواند
خلاصهای با منابع بگیرید، گفتوگوهای متخصصان در X را اضافه کنید، متن یک ویدیو را بگیرید، نسخه را در Markdown بسازید و در LiveDoc بایگانی کنید.
باز کردن گردشکارآن را از خود کنید
همان دستور، متناسب با روش واقعی تحویل شما.
با محرک بهروز کنید نه تقویم
وقتی رقیب قیمت را عوض میکند، عرضه بزرگی دارد یا پیش از چرخه فروش دوباره اجرا کنید. هر تحلیل را بهعنوان سند تاریخدار در همان LiveDoc نگه دارید.
تحلیل را به battlecard تبدیل کنید
از همان جدول برای هر نقش یک صفحه بنویسید — خریدار اقتصادی، قهرمان، بازبین فنی — فقط با ردیفهای `Verified` و پیوندها. `Inference` را بیرون از مواد مشتری بگذارید.
دو رقیب را مقایسه کنید
گردشکار را برای هر رقیب با LiveDoc جداگانه اجرا کنید و صفحه مقایسه را فقط از ردیفهای `Verified` در هر دو اجرا بسازید. هرگز دو اجرا را بدون ستون وضعیت ادغام نکنید.
ادامه دهید
صفحات مرجع پشت این دستور و گامهای بعدی.