Felo API PlatformFelo API Platform

Investigación

Investiga un nicho de producto antes de comprar inventario

Reúne el contexto de categoría, captura páginas de competidores en una fecha declarada, lee de qué se quejan los compradores en X y guarda evidencias y memo en un LiveDoc para revisar antes de pedir.

Tiempo30 minutosNivelIntermedioActualizado2026-10-30
Para quiénOperadores de e-commerceInvestigadores de productoFundadores DTC

Copiar el prompt

Sustituye los campos entre corchetes y pégalo en Claude Code, Codex o cualquier IA con acceso a terminal. Instala el skill de Felo, pregunta antes de gastar créditos y ejecuta el flujo.

Investiga este nicho de producto antes de comprar stock o lanzar: [producto o categoría].

Mercado: [país o región]. Canal: [marketplace / DTC / retail]. Ventana de publicaciones de compradores: últimos [30] días.
Productos comparables o URL de competidores: [URL]. Restricciones de presupuesto y margen: [restricciones]. Audiencia: [equipo].

Genera un memo en Markdown con:
1. Un veredicto de un párrafo: merece la pena investigar más y qué cambiaría tu opinión.
2. Señales de demanda: qué dicen las fuentes sobre interés, estacionalidad y sustitutos.
3. Productos competidores: qué afirma cada uno, el precio capturado en su página y dónde dicen los compradores que falla.
4. Posicionamiento de precio: los precios encontrados realmente en las páginas, cada uno con su fecha de captura.
5. Quejas y necesidades no cubiertas, con citas, cuentas y fechas.
6. Riesgos y preguntas abiertas que resolver antes de comprar inventario.
7. Fuentes: cada página y publicación usada, con URL y fecha.

Reglas:
- Usa solo lo que devuelven las API. Nunca inventes tamaño de mercado, estimaciones de ventas, número de reseñas ni precios de competidores.
- Reporta los precios exactamente como se capturaron, con la URL de la página y la fecha. Nunca los promedies ni normalices.
- Trata las publicaciones de X como anécdotas, no como datos de mercado, y dilo cuando la muestra sea escasa.
- Separa lo que afirma el proveedor de lo que reporta el comprador.
- Antes de gastar créditos, muestra las extracciones y búsquedas previstas y espera mi aprobación.
- No contactes con proveedores, no hagas pedidos ni escribas a nadie en X.
- Escribe el resultado en ./product-research.md y resúmelo en el chat.

La copia también incluye los pasos de instalación y las reglas de seguridad.

Lo que obtienes

Salida de ejemplo de una ejecución. No es generación en vivo.

Ejemplo de memo (extracto)

Investigación de producto — categoría de ejemplo

Veredicto

Merece una mirada más cercana, pero la evidencia pública no basta para decidir inventario. Las preguntas abiertas son el siguiente paso.

Contexto de categoría

Los compradores comparan espacio en encimera y limpieza más que presión. Ninguna fuente pública sostiene una estimación de tamaño de mercado.

Páginas de competidores

  • Example A — página de producto (capturada el 2026-10-30)
  • Example B — página de producto (capturada el 2026-10-30)

Lo que reportan los compradores

  • @example_buyer: «Tercer recambio en un año; la junta falla.» — 2026-10-19
  • @example_home: «Limpiarlo lleva minutos y nadie lo menciona.» — 2026-10-24

Posicionamiento de precio

Los precios se capturaron el 2026-10-30 de las páginas enlazadas. Hay dos niveles; cada página se cita directamente, sin promediar.

Riesgos y preguntas abiertas

  • La durabilidad de la junta es la queja más repetida.
  • Ninguna fuente cubre tasas de devolución.
  • Comprobar plazos del proveedor y coste puesto antes de pedir.

Fuentes

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

Las llamadas exactas

Para desarrolladores: el mismo flujo como código, en orden de ejecución.

Mostrar las llamadas reales a la API
  1. Pide a Chat la imagen de categoría

    Empieza por la respuesta con fuentes, no por una página en blanco: Chat busca en la web pública, ordena páginas y devuelve los recursos usados. Pregunta por contexto de demanda, sustitutos y quejas comunes en una consulta y guarda los mejores recursos como lista de evidencias.

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

    Salida de ejemplo

    {
      "answer": "Buyers compare on counter space and cleanup …",
      "sources": [
        { "link": "https://example.com/category-guide", "title": "…", "snippet": "…" }
      ]
    }
  2. Captura las páginas de competidores

    Extrae dos o tres páginas de producto de competidores en Markdown con legibilidad. El objetivo es la afirmación y el precio en la página hoy, no una ficha técnica reescrita. Mantén la URL junto al contenido y anota la fecha de captura: un precio sin fecha es un rumor.

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

    Salida de ejemplo

    [
      {
        "url": "https://example.com/product-a",
        "title": "Example A — product page",
        "content": "# Example A\n\nSpecs and price as displayed…"
      }
    ]
  3. Lee lo que reportan los compradores en X

    Las páginas de proveedores listan funciones; los compradores describen fallos. Busca el nicho junto a palabras de fricción —envío, calidad, reembolso— en los últimos 30 días y guarda cuenta, fecha y enlace. Son anécdotas, no datos de demanda, y el memo debe decirlo.

    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;

    Salida de ejemplo

    { "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. Redacta el memo

    Este paso es código simple: junta la respuesta de categoría, las fechas de captura, las citas de compradores y la lista de fuentes en un Markdown. Sé honesto con las preguntas abiertas: el memo es útil porque separa lo que las páginas prueban de lo que falta confirmar con un proveedor.

    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. Archiva las evidencias en un LiveDoc

    Ejecuta una vez por nicho: crea el LiveDoc y guarda el short_id en configuración. Añade las páginas de competidores y fuentes de Chat como recursos URL para que el archivo deduplique, y el memo como documento. Antes de comprar, consulta las capturas y mira qué precios se movieron.

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

    Salida de ejemplo

    { "short_id": "PvyKouzJirXjFdst4uKRK3" }

Qué incluye

  • Imagen de categoría con fuentes de Chat y las páginas detrás
  • Páginas de competidores en Markdown con fecha de captura
  • Quejas de compradores en X con cuentas, fechas y enlaces
  • Memo Markdown montado con esas entradas
  • Un LiveDoc con evidencias y memo

Qué no hace

  • Solo fuentes públicas; informes de pago, presupuestos de proveedores y ventas internas fuera
  • No estima tamaño de mercado, volumen de ventas ni margen
  • Los precios se registran tal como se capturan, nunca normalizados ni promediados
  • Los posts de X son anécdotas, no datos de demanda
  • No contacta proveedores, no hace pedidos ni modifica listings

Preguntas

¿De dónde viene el contexto de mercado?

El Chat API devuelve una respuesta con fuentes y las páginas públicas usadas. Las páginas de competidores vienen de tus URLs y las extrae Web Fetch; los posts vienen de X Search. No se usan datos privados de ventas.

¿Me dice si un producto se venderá?

No. Organiza evidencias públicas —contexto, precios capturados y quejas— y escribe lo desconocido. Validar demanda requiere tus datos: anuncios, preventas o conversaciones con proveedores.

¿Y si el marketplace bloquea la extracción?

Web Fetch descarga páginas públicas una URL a la vez y algunos sitios bloquean. Usa una página accesible y deja que el memo marque la captura ausente en vez de adivinar un precio.

¿Cómo evito precios desactualizados?

Cada precio del memo está ligado a la URL y a la fecha de captura. Vuelve a extraer cerca de la decisión de compra; el archivo guarda capturas anteriores para ver movimientos.

¿Contacta con proveedores o vendedores?

No. El flujo es de solo lectura: extrae páginas, busca posts públicos y escribe un memo local. Nunca envía mensajes, hace pedidos ni edita listings.

¿Cuánto cuesta una investigación?

Cada llamada de Chat, extracción y búsqueda en X consume créditos por uso; las tarifas actuales están en la página de precios. El prompt pide aprobación antes de gastar.

Flujos relacionados

Hazlo tuyo

La misma receta, adaptada a cómo entregas de verdad.

Añade transcripciones de reviews

Si la categoría tiene vídeos de review, obtén la transcripción con YouTube Subtitling y añade dos o tres citas con timestamp a la sección de compradores. Un review sigue siendo la experiencia de una persona: mantén la etiqueta de anécdota.

Compara dos candidatos

Ejecuta los mismos pasos por candidato y pon los memos lado a lado: funciones afirmadas, precio capturado, queja recurrente y pregunta abierta. La comparación sigue siendo cualitativa hasta tener datos propios.

Actualiza antes de comprar

Vuelve a extraer el día antes del pedido. Mantén el mismo LiveDoc y añade un memo nuevo para que el archivo muestre qué cambió entre la investigación de escritorio y la compra.

Las páginas de referencia detrás de esta receta y los siguientes pasos.