Badania
Zbadaj niszę produktową, zanim zamówisz zapas
Zbierz kontekst kategorii, uchwyć strony konkurentów w podanej dacie, przeczytaj skargi kupujących na X i trzymaj dowody oraz memo w jednym LiveDoc do przeglądu przed zamówieniem.
Skopiuj prompt
Podmień pola w nawiasach kwadratowych i wklej do Claude Code, Codex albo AI z dostępem do terminala. Instaluje skill Felo, pyta przed wydaniem kredytów i uruchamia workflow.
Zbadaj tę niszę produktową przed zamówieniem zapasów lub premierą: [produkt lub kategoria]. Rynek: [kraj lub region]. Kanał: [marketplace / DTC / retail]. Okres postów kupujących: ostatnie [30] dni. Produkty porównywalne lub URL-e konkurencji: [URL-e]. Ograniczenia budżetu i marży: [ograniczenia]. Odbiorcy: [zespół]. Przygotuj notatkę w Markdown zawierającą: 1. Werdykt w jednym akapicie: czy warto badać dalej i co zmieniłoby Twoją opinię. 2. Sygnały popytu: co źródła mówią o zainteresowaniu, sezonowości i substytutach. 3. Produkty konkurencji: co każdy twierdzi, cenę uchwyconą na stronie i gdzie kupujący widzą braki. 4. Pozycjonowanie cenowe: ceny faktycznie znalezione na stronach, każda z datą uchwycenia. 5. Skargi i niezaspokojone potrzeby, z cytatami, kontami i datami. 6. Ryzyka i otwarte pytania do rozwiązania przed zakupem zapasów. 7. Źródła: każda użyta strona i post, z URL i datą. Zasady: - Używaj tylko tego, co zwracają API. Nigdy nie wymyślaj rozmiaru rynku, szacunków sprzedaży, liczby opinii ani cen konkurencji. - Raportuj ceny dokładnie tak, jak je uchwycono, z URL strony i datą. Nigdy ich nie uśredniaj ani nie normalizuj. - Traktuj posty X jako anegdotę, nie dane rynkowe, i mów, gdy próba jest zbyt mała. - Oddziel twierdzenia dostawcy od relacji kupujących. - Zanim zużyjesz kredyty, pokaż planowane ekstrakcje i wyszukiwania i poczekaj na moją zgodę. - Nie kontaktuj się z dostawcami, nie składaj zamówień i nie pisz do nikogo na X. - Zapisz wynik w ./product-research.md i podsumuj go w czacie.
Kopia zawiera też kroki instalacji i zasady bezpieczeństwa.
Co otrzymujesz
Przykładowy wynik jednego uruchomienia. Nie generowanie na żywo.
Badanie produktu — przykładowa kategoria
Werdykt
Warto przyjrzeć się bliżej, ale publiczne dowody nie wystarczą do decyzji o zapasach. Otwarte pytania poniżej to następny krok.
Kontekst kategorii
Kupujący porównują miejsce na blacie i łatwość czyszczenia bardziej niż ciśnienie. Żadne publiczne źródło nie wspiera szacunku rozmiaru rynku.
Strony konkurencji
- Example A — strona produktu (zapisano 2026-10-30)
- Example B — strona produktu (zapisano 2026-10-30)
Co raportują kupujący
- @example_buyer: „Trzecia wymiana w roku; uszczelka zawodzi.” — 2026-10-19
- @example_home: „Czyszczenie zajmuje minuty, nikt o tym nie mówi.” — 2026-10-24
Pozycjonowanie cenowe
Ceny zapisano 2026-10-30 z linkowanych stron. Są w dwóch przedziałach; każda strona jest cytowana bezpośrednio, bez uśredniania.
Ryzyka i otwarte pytania
- Trwałość uszczelki to najczęstsza skarga.
- Żadne źródło nie obejmuje zwrotów.
- Przed zamówieniem sprawdź terminy dostawcy i koszt dostawy.
Źródła
- https://example.com/product-a — 2026-10-30
- https://x.com/example_buyer/status/... — 2026-10-19
Dokładne wywołania
Dla deweloperów: ten sam workflow jako kod, w kolejności wykonania.
Pokaż rzeczywiste wywołania API
Poproś Chat o obraz kategorii
Zacznij od odpowiedzi ze źródłami, nie od pustej strony: Chat przeszukuje publiczny web, szereguje strony i zwraca użyte zasoby. Zapytaj w jednym query o kontekst popytu, substytuty i typowe skargi, potem zachowaj najlepsze zasoby jako listę dowodów.
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);Przykładowy wynik
{ "answer": "Buyers compare on counter space and cleanup …", "sources": [ { "link": "https://example.com/category-guide", "title": "…", "snippet": "…" } ] }Uchwyć strony konkurentów
Wyekstrahuj dwie lub trzy strony produktów konkurentów jako Markdown z trybem czytania. Celem jest twierdzenie i cena na stronie dziś, nie przepisana karta specyfikacji. Trzymaj URL z treścią i zapisz datę uchwycenia: cena bez daty to plotka.
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 })), ), );Przykładowy wynik
[ { "url": "https://example.com/product-a", "title": "Example A — product page", "content": "# Example A\n\nSpecs and price as displayed…" } ]Przeczytaj, co zgłaszają kupujący na X
Strony dostawców wymieniają funkcje; kupujący opisują awarie. Szukaj niszy z słowami tarcia — dostawa, jakość, zwrot — w 30 dniach i zachowaj konto, datę i link. To anegdoty, nie dane popytu, i memo musi to mówić.
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;Przykładowy wynik
{ "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/..." } ] } }Napisz memo
Ten krok to prosty kod: połącz odpowiedź kategorii, daty uchwycenia, cytaty kupujących i listę źródeł w jeden Markdown. Bądź uczciwy co do otwartych pytań — memo jest użyteczne, bo oddziela to, co dowodzą strony, od tego, co trzeba potwierdzić z dostawcą.
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);Zarchiwizuj dowody w LiveDoc
Uruchom raz na niszę: utwórz LiveDoc i zapisz
short_idw konfiguracji. Dodaj strony konkurentów i źródła Chat jako zasoby URL, żeby archiwum deduplikowało, potem memo jako dokument. Przed zakupem przeszukaj uchwycenia i zobacz, które ceny się ruszyły.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, });Przykładowy wynik
{ "short_id": "PvyKouzJirXjFdst4uKRK3" }
Co zawiera
- Obraz kategorii ze źródłami z Chat i strony za nim
- Strony konkurentów jako Markdown z datą uchwycenia
- Skargi kupujących na X z kontami, datami i linkami
- Memo Markdown z tych wejść
- Jeden LiveDoc z dowodami i memo
Czego nie robi
- Tylko źródła publiczne; płatne raporty, wyceny dostawców i wewnętrzna sprzedaż poza zakresem
- Nie szacuje rozmiaru rynku, wolumenu ani marży
- Ceny zapisane jak uchwycone, nigdy normalizowane ani uśredniane
- Posty X to anegdoty, nie dane popytu
- Nie kontaktuje dostawców, nie zamawia i nie zmienia listingów
Pytania
Skąd kontekst rynku?
Chat API zwraca odpowiedź ze źródłami i użyte publiczne strony. Strony konkurentów pochodzą z twoich URL-i i ekstrahuje je Web Fetch; posty kupujących z X Search. Bez prywatnych danych sprzedaży.
Czy mówi, czy produkt się sprzeda?
Nie. Układa publiczne dowody — kontekst, uchwycone ceny i skargi — i zapisuje, co nieznane. Walidacja popytu wymaga twoich danych: reklam, pre-orderów lub rozmów z dostawcami.
Jeśli marketplace blokuje ekstrakcję?
Web Fetch pobiera publiczne strony po jednym URL-u, a część serwisów blokuje. Użyj dostępnej strony produktu lub dostawcy i pozwól memo oznaczyć brakujące uchwycenie zamiast zgadywać cenę.
Jak uniknąć nieaktualnych cen konkurencji?
Każda cena w memo jest powiązana z URL-em i datą uchwycenia. Uruchom ekstrakcję ponownie blisko decyzji o zakupie; archiwum trzyma wcześniejsze uchwycenia, by zobaczyć ruchy.
Czy kontaktuje dostawców lub sprzedawców?
Nie. Workflow tylko czyta: ekstrahuje strony, szuka publicznych postów i pisze lokalne memo. Nie wysyła wiadomości, nie zamawia i nie zmienia listingów.
Ile kosztuje jedno badanie?
Każde wywołanie Chat, ekstrakcji i wyszukiwania X zużywa kredyty według użycia; aktualne stawki na stronie cen. Prompt pyta o zgodę przed wydaniem.
Powiązane workflowy
Zamień jedno pytanie w brief badawczy ze źródłami
Zapytaj web, zapisz strony stojące za odpowiedzią jako Markdown, dodaj to, co mówią praktycy na X, i zachowaj dowody w LiveDoc, który można później przeszukać.
Otwórz workflowTreściZamień rozmowy społecznościowe w tygodniowy brief nasłuchu
Znajdź posty X z tego tygodnia o marce i konkurentach, dodaj kontekst web ze źródłami, przeczytaj strony za nim i archiwizuj każde wydanie, żeby kolejny tydzień startował od znanego.
Otwórz workflowBiuroZamień stronę badawczą w prezentację
Wyekstrahuj stronę, zapisz jako kontekst LiveDoc, pozwól PPT Task API zbudować deck i pytaj, aż link będzie gotowy.
Otwórz workflowDostosuj
Ta sama receptura, dopasowana do tego, jak naprawdę dostarczasz.
Dodaj transkrypty recenzji wideo
Gdy kategoria ma recenzje wideo, pobierz transkrypt z YouTube Subtitling i dodaj dwa lub trzy cytaty ze znacznikami czasu do sekcji kupujących. Recenzja wideo to doświadczenie jednej osoby: zachowaj etykietę anegdoty.
Porównaj dwóch kandydatów
Uruchom te same kroki dla każdego kandydata i postaw memo obok siebie: deklarowane funkcje, uchwycona cena, powtarzająca się skarga i otwarte pytanie. Porównanie zostaje jakościowe, dopóki nie masz danych sprzedaży lub zwrotów.
Odśwież przed zakupem
Uruchom ekstrakcję ponownie dzień przed zamówieniem. Zachowaj ten sam LiveDoc i dodaj nowe memo, żeby archiwum pokazało, co zmieniło się między badaniem a zakupem.
Idź dalej
Strony referencyjne za tą recepturą i kolejne kroki.