Felo API PlatformFelo API Platform

Recherche

Étudiez une niche produit avant de commander du stock

Rassemblez le contexte de catégorie, capturez les pages concurrentes à une date déclarée, lisez ce dont se plaignent les acheteurs sur X et gardez les preuves et le mémo dans un LiveDoc à revoir avant commande.

Temps30 minutesNiveauIntermédiaireMis à jour2026-10-30
Pour quiOpérateurs e-commerceChercheurs produitFondateurs DTC

Copier le prompt

Remplacez les champs entre crochets, puis collez dans Claude Code, Codex ou toute IA avec accès au terminal. Elle installe le skill Felo, demande avant de dépenser des crédits et exécute le workflow.

Étudie cette niche produit avant de commander du stock ou de lancer : [produit ou catégorie].

Marché : [pays ou région]. Canal : [marketplace / DTC / retail]. Période des avis acheteurs : [30] derniers jours.
Produits comparables ou URL concurrentes : [URL]. Contraintes de budget et de marge : [contraintes]. Public : [équipe].

Produis un mémo Markdown avec :
1. Un verdict en un paragraphe : faut-il approfondir, et qu’est-ce qui changerait ton avis.
2. Les signaux de demande : ce que les sources disent de l’intérêt, de la saisonnalité et des substituts.
3. Les produits concurrents : ce que chacun affirme, le prix relevé sur sa page et les reproches des acheteurs.
4. Le positionnement prix : les prix réellement trouvés sur les pages, chacun avec sa date de relevé.
5. Les plaintes et besoins non couverts, avec citations, comptes et dates.
6. Les risques et questions à résoudre avant d’acheter du stock.
7. Les sources : chaque page et publication utilisée, avec URL et date.

Règles :
- N’utilise que ce que renvoient les API. N’invente jamais de taille de marché, d’estimation de ventes, de nombre d’avis ou de prix concurrent.
- Reporte les prix exactement comme relevés, avec l’URL de la page et la date de relevé. Ne les moyenne ni ne les normalise jamais.
- Traite les publications X comme des anecdotes, pas comme des données de marché, et signale quand l’échantillon est mince.
- Sépare ce que le fournisseur affirme de ce que l’acheteur rapporte.
- Avant de consommer des crédits, montre les extractions et recherches prévues et attends mon accord.
- Ne contacte aucun fournisseur, ne passe aucune commande et n’écris à personne sur X.
- Écris le résultat dans ./product-research.md et résume-le dans le chat.

La copie inclut aussi les étapes d'installation et les règles de sécurité.

Ce que vous obtenez

Exemple de sortie d'une exécution. Pas de génération en direct.

Exemple de mémo (extrait)

Recherche produit — catégorie d’exemple

Verdict

Cela mérite un examen plus approfondi, mais les preuves publiques ne suffisent pas pour une décision de stock. Les questions ouvertes ci-dessous sont la prochaine étape.

Contexte de catégorie

Les acheteurs comparent surtout l’encombrement et le nettoyage, pas la pression. Aucune source publique ne soutient une estimation de taille de marché.

Pages concurrentes

  • Example A — page produit (capturée le 2026-10-30)
  • Example B — page produit (capturée le 2026-10-30)

Ce que rapportent les acheteurs

  • @example_buyer : « Troisième remplacement en un an ; le joint lâche. » — 2026-10-19
  • @example_home : « Le nettoyage prend des minutes, personne ne le mentionne. » — 2026-10-24

Positionnement prix

Les prix ont été capturés le 2026-10-30 sur les pages liées. Ils se répartissent en deux paliers ; chaque page est citée directement, sans moyenne.

Risques et questions ouvertes

  • La durabilité du joint est la plainte la plus répétée.
  • Aucune source ne couvre les taux de retour.
  • Vérifier les délais fournisseur et le coût rendu avant commande.

Sources

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

Les appels exacts

Pour les développeurs : le même workflow en code, dans l'ordre d'exécution.

Afficher les appels API
  1. Demandez la vue de catégorie à Chat

    Partez de la réponse sourcée, pas d’une page blanche : Chat recherche le web public, classe les pages et renvoie les ressources utilisées. Demandez en une requête le contexte de demande, les substituts et les plaintes courantes, puis gardez les meilleures ressources comme liste de preuves.

    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);

    Exemple de sortie

    {
      "answer": "Buyers compare on counter space and cleanup …",
      "sources": [
        { "link": "https://example.com/category-guide", "title": "…", "snippet": "…" }
      ]
    }
  2. Capturez les pages concurrentes

    Extrayez deux ou trois pages produits concurrentes en Markdown avec lisibilité. Le but est l’affirmation et le prix de la page aujourd’hui, pas une fiche technique réécrite. Gardez l’URL avec le contenu et notez la date de capture : un prix sans date est une rumeur.

    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 })),
      ),
    );

    Exemple de sortie

    [
      {
        "url": "https://example.com/product-a",
        "title": "Example A — product page",
        "content": "# Example A\n\nSpecs and price as displayed…"
      }
    ]
  3. Lisez ce que rapportent les acheteurs sur X

    Les pages fournisseurs listent des fonctions ; les acheteurs décrivent des échecs. Cherchez la niche avec des mots de friction — livraison, qualité, remboursement — sur 30 jours et gardez compte, date et lien. Ce sont des anecdotes, pas des données de demande, et le mémo doit le dire.

    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;

    Exemple de sortie

    { "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. Composez le mémo

    Cette étape est du code simple : rassemblez la réponse catégorie, les dates de capture, les citations acheteurs et la liste de sources en un Markdown. Restez honnête sur les questions ouvertes — le mémo est utile parce qu’il sépare ce que les pages prouvent de ce qu’il faut confirmer avec un fournisseur.

    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. Archivez les preuves dans un LiveDoc

    Exécutez une fois par niche : créez le LiveDoc et gardez le short_id en configuration. Ajoutez les pages concurrentes et les sources Chat comme ressources URL pour que l’archive déduplique, puis le mémo comme document. Avant l’achat, interrogez les captures et voyez quels prix ont bougé.

    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,
    });

    Exemple de sortie

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Ce qui est inclus

  • Vue de catégorie sourcée par Chat et les pages derrière
  • Pages concurrentes en Markdown avec date de capture
  • Plaintes acheteurs sur X avec comptes, dates et liens
  • Mémo Markdown construit à partir de ces entrées
  • Un LiveDoc avec les preuves et le mémo

Ce qu'elle ne fait pas

  • Sources publiques uniquement ; rapports payants, devis fournisseurs et ventes internes exclus
  • N’estime pas la taille de marché, les volumes ou la marge
  • Les prix sont notés tels que capturés, jamais normalisés ni moyennés
  • Les posts X sont des anecdotes, pas des données de demande
  • Ne contacte pas les fournisseurs, ne commande pas et ne modifie pas les listings

Questions

D’où vient le contexte de marché ?

Le Chat API renvoie une réponse sourcée et les pages publiques utilisées. Les pages concurrentes viennent de vos URL et sont extraites par Web Fetch ; les posts viennent de X Search. Aucune donnée de vente privée n’est utilisée.

Me dit-il si un produit va se vendre ?

Non. Il organise les preuves publiques — contexte, prix capturés, plaintes — et note ce qui est inconnu. Valider la demande exige vos données : publicité, précommandes ou échanges fournisseurs.

Et si la marketplace bloque l’extraction ?

Web Fetch récupère les pages publiques une URL à la fois et certains sites bloquent. Utilisez une page accessible et laissez le mémo signaler la capture manquante au lieu de deviner un prix.

Comment éviter des prix concurrents périmés ?

Chaque prix du mémo est lié à l’URL et à la date de capture. Relancez l’extraction près de la décision d’achat ; l’archive garde les captures précédentes pour voir les mouvements.

Contacte-t-il les fournisseurs ou vendeurs ?

Non. Le workflow est en lecture seule : extraire des pages, chercher des posts publics, écrire un mémo local. Il n’envoie aucun message, ne commande pas et ne modifie pas les listings.

Combien coûte une recherche ?

Chaque appel Chat, extraction et recherche X consomme des crédits à l’usage ; les tarifs actuels sont sur la page des prix. Le prompt demande votre accord avant dépense.

Workflows liés

Adaptez-la

La même recette, adaptée à votre façon de livrer.

Ajoutez des transcriptions de tests vidéo

Quand la catégorie a des vidéos de test, récupérez la transcription avec YouTube Subtitling et ajoutez deux ou trois citations horodatées à la section acheteurs. Un test vidéo reste l’expérience d’une personne : gardez le même label d’anecdote que les posts X.

Comparez deux candidats

Exécutez les mêmes étapes pour chaque candidat et mettez les mémos côte à côte : fonctions affirmées, prix capturé, plainte récurrente et question ouverte. La comparaison reste qualitative jusqu’à vos données de ventes ou retours.

Actualisez avant la commande

Relancez l’extraction la veille de la commande. Gardez le même LiveDoc et ajoutez un nouveau mémo, pour que l’archive montre ce qui a changé entre recherche bureau et achat, y compris un prix sorti du budget.

Les pages de référence derrière cette recette et la suite.