Araştırma
Satış ekibinin kullanabileceği bir rakip analizi oluşturun
Rakibin sayfalarını, çevresindeki haberciliği ve alıcıların X’te söylediklerini toplayın, ardından her iddianın kaynak, tarih ve durum taşıdığı bir analiz kurun.
İstemi kopyalayın
Köşeli parantezli alanları değiştirip Claude Code, Codex veya terminal erişimi olan bir AI’ya yapıştırın. Felo becerisini kurar, kredi harcamadan önce sorar ve iş akışını çalıştırır.
[Rakip adı] için [ürünümüz] adına rekabet analizi hazırla. Kapsam: [segment], [bölge], [dil]. Dönem: [son 90 gün / son 12 ay]. Desteklediği karar: [fiyat değişikliği / lansman konumlandırması / itiraz yönetimi]. Başlangıç kaynakları: [rakip alan adı], [fiyat sayfası URL], [changelog URL]. Markdown analizi şunları içersin: 1. Kendilerini nasıl konumlandırdıkları, kendi sözleriyle. 2. Kanıt tablosu: iddia, kaynak başlığı, URL, tarih, durum (Verified / Vendor claim / Third-party / Signal / Inference / Not verified). 3. Fiyatlar: sayfada yazan, bağlantı ve kontrol tarihiyle. Sayfa ve tarih olmadan asla bir ücreti metne taşıma. 4. Alıcıların itiraz ettiği noktalar, X hesapları ve tarihlerle, sinyal olarak işaretli. 5. Sonra ne yapmamız gerektiği, öneri olarak işaretli. 6. Tam kaynak listesi. Kurallar: - Konumlandırmalarını alıntıla; daha güçlü bir iddiaya dönüştürme. - Satıcı iddialarını, üçüncü taraf haberlerini ve kendi çıkarımlarını ayır. Her satırı etiketle. - Asla fiyat, metrik, müşteri adı veya kıyas ölçütü uydurma. Veri yoksa “Veri yok” yaz. - Dönemi ve bölgeyi açık değerlere çevir. - Kredi harcamadan önce planlanan API çağrılarını göster ve onayımı bekle. - Hiçbir şey yayımlama, gönderme, planlama ve CRM’e yazma. - Sonucu ./competitor-teardown.md dosyasına yaz ve sohbette özetle.
Kopya kurulum adımlarını ve güvenlik kurallarını da içerir.
Ne elde edersiniz
Bir çalıştırmanın örnek çıktısı. Canlı üretim değil.
Rakip analizi — [rakip], 2026-10-30 kontrol edildi
Kendilerini nasıl konumlandırıyorlar
Ana sayfa başlığı: “Büyüyen destek ekipleri için platform.” Kategori sayfası: “Destek ekibinizin ihtiyacı olan her şey.” İkisi de satıcı iddiası, yazıldığı gibi alıntılandı.
Kanıt tablosu
| İddia | Kaynak | Tarih | Durum |
|---|---|---|---|
| Nokta araç değil platform olarak konumlanıyor | https://example.com/competitor/home | 2026-10-30 | Verified |
| Her hafta değişiklik yayınlıyor | https://example.com/competitor/changelog | 2026-10-28 | Verified |
| Bağımsız derlemelerde yer alıyor | https://example.com/roundup | 2026-10-27 | Third-party |
| Alıcılar yavaş onboarding diyor | aşağıda alıntılanan X gönderisi | 2026-10-14 | Signal |
| Enterprise en büyük segmentleri | Veri yok | — | Not verified |
Fiyatlar
Fiyat sayfası katmanlı ve kullanım tabanlı plan listeliyor. Ücretler burada tekrarlanmıyor; canlı sayfayı ve tarihi kontrol edin: https://example.com/competitor/pricing (2026-10-30).
Alıcıların itiraz ettiği yer
@example_dev, 2026-10-14: “kurulum demo’nun ima ettiğinden uzun sürdü.” Tarihli tek gönderi; bu bir şikâyet, sıklık tahmini değil.
Öneri
Karşılaştırma sayfasında ilk sonuca kadar geçen süreyi öne çıkarın. Bu bizim çıkarımımız, rakibin iddiası değil.
Kaynaklar
- https://example.com/competitor/home
- https://example.com/competitor/pricing
- https://example.com/competitor/changelog
Tam çağrılar
Geliştiriciler için: aynı iş akışı kod olarak, yürütme sırasıyla.
Gerçek API çağrılarını göster
Kaynaklı temelle başlayın
Chat yanıtı ve kullanılan sayfaları döndürür, rakip hakkında nerede konuşulduğunun haritası. Yanıtı ipucu olarak görün, kaynak değil: bağlantıları saklayın, üçüncü taraf satırlarını onlar verir. Yardımcı anahtarı bir kez gönderir ve 2xx dışında hata fırlatır.
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);Örnek çıktı
{ "answer": "The competitor positions itself as …", "sources": [ { "link": "https://example.com/competitor", "title": "…", "snippet": "…" } ] }Kontrol ettikleri sayfaları indirin
Üçüncü taraf habercilik insanların ne düşündüğünü gösterir; kendi sayfaları ne iddia ettiklerini gösterir. Ana sayfayı, fiyatları ve changelog’u okuma moduyla Markdown olarak çıkarın ve indirme tarihini yazın: tarihsiz fiyat sayfası tuzaktır.
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 }; }), );Örnek çıktı
{ "url": "https://example.com/competitor/pricing", "checkedAt": "2026-10-30", "content": "# Pricing\n\nExtracted page text…" }Alıcıların X’te ne dediğine bakın
X’te rakip hakkındaki itirazları ve etrafından dolanmaları arayın. Her gönderinin hesabını ve tarihini saklayın; tarihli bir alıntı şikâyeti kanıtlar, sıklığını değil. Analiz bunu sinyal olarak işaretler ve birkaç gönderiyi asla yüzdeye çevirmez.
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);Örnek çıktı
{ "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 } } ] } }Kanıt tablosuyla analizi kurun
Bu editoryal adımdır: sayfaları ve gönderileri iddialara dönüştürün ve her birine kaynak, tarih ve durum verin. Durum sütunu belgeyi dürüst tutar: sayfanın söylediği için
Verified, pazarlama içinVendor claim, dış habercilik içinThird-party, tarihli gönderi içinSignal, sizin okumanız içinInferenceve kanıtsızNot 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);Örnek çıktı
| Free tier listed on the pricing page | https://example.com/competitor/pricing | 2026-10-30 | Verified |
Sonraki güncelleme için LiveDoc’a arşivleyin
Rakip başına bir LiveDoc oluşturun, indirilen sayfaları URL kaynağı ve analizi belge olarak ekleyin. URL’yi yeniden eklemek tekilleştirilir, böylece sonraki çeyrekte yalnızca değişiklikler indirilir ve önceki analiz aynı arşivde kalır.
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Örnek çıktı
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Neler dahil
- Chat API’den kaynaklı temel ve arkasındaki sayfalar
- Rakibin ana sayfası, fiyatları ve changelog’u Markdown olarak
- X’ten tarihli alıcı yorumları, kanıt değil sinyal olarak
- Doğrulanmış gerçekleri, satıcı iddialarını ve çıkarımı ayıran kanıt tablosu
- Sıfırdan başlamamak için kaynakları tutan LiveDoc
Neleri yapmaz
- Yalnızca kamuya açık kaynaklar; kazanma/kaybetme görüşmeleri, CRM notları veya özel panolar yok
- Fiyatlar bağlantılanır ve tarihlenir, doğrulama tarihi olmadan tabloda asla dondurulmaz
- X kapsamı eksiktir ve temsili alıcı örneği değildir
- Konumlandırmanızı seçmez; öneriler çıkarım olarak işaretlenir
- Analizi yayımlamaz veya battlecard araçlarına yazmaz
Sorular
Kanıtlar nereden geliyor?
Chat API kaynaklı temeli ve kullanılan sayfaları döndürür, Web Fetch rakip sayfalarını Markdown’a çevirir ve X Search tarihli gönderiler ekler. Her satır kaynak ve tarih tutar, çıkarımın kendi durumu vardır.
Birden çok rakip kapsanabilir mi?
Evet. Aynı istemi her rakip için çalıştırın ve şirket başına bir LiveDoc tutun. Karşılaştırma sayfası yalnızca “doğrulanmış” satırları birleştirir, iki çalıştırmanın kanıtlarını karıştırmaz.
Fiyatları alıntılanabilir mi?
İş akışı fiyat sayfasının söylediğini bağlantı ve doğrulama tarihiyle kaydeder. Tarifeleri metinde dondurmaz çünkü fiyatlar değişir ve eski sayı hiç sayı olmamasından kötüdür.
Kazanma/kaybetme notlarımız?
Yalnızca kamuya açık kaynakları okur. Dahili notları LiveDoc’ta ayrı belge olarak ekleyin ve dahili işaretleyin; müşteri materyallerinde asla alıntılanmazlar.
Ne sıklıkla güncellenmeli?
Takvimle değil tetikleyiciyle: fiyat değişikliği, lansman veya satış döngüsü başlangıcı. Aynı LiveDoc’ta yeniden çalıştırın ki önceki çeyrek yeniyle yan yana dursun.
Bir analizin maliyeti nedir?
Her sohbet, çıkarım ve X araması kullanıma göre kredi harcar; güncel tarifeler fiyat sayfasında. İstem harcamadan önce onay ister.
İlgili iş akışları
Tek bir soruyu kaynaklı araştırma brifine dönüştürün
Web’e sorun, yanıtın arkasındaki sayfaları Markdown olarak kaydedin, X’te uygulayıcıların söylediklerini ekleyin ve kanıtları daha sonra tekrar aranabilen bir LiveDoc’ta tutun.
İş akışını açAraştırmaPazar sorusunu go-to-market brifine dönüştürün
Pazara kesin bir soru sorun, yanıtın arkasındaki kategori ve fiyat sayfalarını okuyun, alıcıların sorunu X’te nasıl tanımladığını toplayın ve kaynaklı iddialar ile açık sorular içeren GTM brifi kaydedin.
İş akışını açİçerikEkibin gerçekten okuduğu günlük bir AI haber özeti yayımlayın
Kaynaklı bir özet alın, X’te uygulayıcı tartışmalarını ekleyin, bir video transkripti alın, edisyonu Markdown’da kurun ve LiveDoc’ta arşivleyin.
İş akışını açKendinize uyarlayın
Aynı tarif, gerçekte nasıl teslim ettiğinize uyarlanmış.
Takvimle değil tetikleyiciyle güncelleyin
Rakip fiyat değiştirdiğinde, büyük lansman yaptığında veya satış döngüsünden önce yeniden çalıştırın. Her analizi aynı LiveDoc’ta tarihli belge olarak tutun.
Analizi battlecard’a çevirin
Aynı tablodan rol başına bir sayfa yazın — ekonomik alıcı, champion, teknik inceleyici — yalnızca `Verified` satırları ve bağlantılarla. `Inference`i müşteri materyallerinin dışında tutun.
İki rakibi karşılaştırın
Her rakip için ayrı LiveDocs ile iş akışını çalıştırın ve yalnızca iki çalıştırmadaki `Verified` satırlarından karşılaştırma sayfası kurun. Durum sütunu olmadan iki çalıştırmayı asla birleştirmeyin.
Devam edin
Bu tarifin arkasındaki referans sayfaları ve sonraki adımlar.