Felo API PlatformFelo API Platform

Исследования

Превратите один вопрос в исследовательский бриф с источниками

Спросите веб, сохраните страницы, на которых основан ответ, как Markdown, добавьте мнения практиков из X и оставьте доказательства в LiveDoc, который можно будет искать позже.

Время20 минутУровеньСреднийОбновлено2026-10-29
Для когоОснователи и операторыИсследователи рынкаGTM-команды

Скопировать промпт

Замените поля в квадратных скобках и вставьте в Claude Code, Codex или любой AI с доступом к терминалу. Он установит навык Felo, спросит перед списанием кредитов и выполнит процесс.

Составь исследовательский бриф с источниками по теме [вопрос или решение].

Охват: [рынок, регион, язык]. Период: [последние 30 дней / последние 12 месяцев]. Аудитория: [кто будет читать]. Глубина: [обзор на одну страницу / полный бриф].

Подготовь Markdown-бриф с:
1. Коротким ответом из трёх пунктов.
2. Таблицей доказательств: утверждение, название источника, URL, дата публикации.
3. Тем, в чём источники расходятся.
4. Тем, что пока неизвестно.
5. Полным списком источников.

Правила:
- Каждое фактическое утверждение должно иметь ссылку на источник. Разделяй факты, мнения и собственные выводы.
- Никогда не выдумывай цитаты, метрики, даты и источники. Отсутствующие данные — «Нет данных», но не ноль.
- Отдавай приоритет первоисточникам. X используй как сигнал практиков, а не как доказательство.
- Преврати период в явные даты начала и конца и укажи часовой пояс.
- Перед расходом кредитов покажи планируемые вызовы API и дождись моего одобрения.
- Не создавай повторяющуюся задачу, не отправляй сообщения и ничего не публикуй.
- Запиши результат в ./research-brief.md и кратко изложи его в чате.

В копию также входят шаги установки и правила безопасности.

Что получится

Пример вывода одного запуска. Не живая генерация.

Пример брифа (фрагмент)

Заменят ли малые модели большие в поддержке?

Короткий ответ

  • Малые модели уже достаточны для классификации и ответов первой линии.
  • Узкое место — качество поиска, а не размер модели.
  • Перешедшие команды сообщают о снижении стоимости тикета, а не роста доли решений.
УтверждениеИсточникДата
Качество поиска определяет качество ответаhttps://example.com/rag-eval2026-10-12
Стоимость решённого тикета упала на 38%https://example.com/support-case2026-09-28

Где источники расходятся

Бенчмарки вендоров показывают почти паритет; независимые тесты видят разрыв на многошаговых возвратах.

Что пока неизвестно

Закроется ли разрыв за счёт инструментов или потребуется большая модель.

Реальные вызовы

Для разработчиков: тот же процесс в виде кода в порядке выполнения.

Показать реальные вызовы API
  1. Задайте вопрос вебу

    Chat ищет в вебе, ранжирует источники, пишет ответ и возвращает использованные ресурсы. Оставьте три лучших: каждый следующий шаг идёт по одной из этих ссылок. Helper ниже отправляет ключ один раз и бросает исключение при ответе не 2xx.

    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 }[] };
    };
    
    export async function answer(question: string) {
      const chat = await felo<ChatData>("/v2/chat", { query: question });
      return { answer: chat.data.answer, sources: chat.data.resources.slice(0, 3) };
    }

    Пример вывода

    {
      "answer": "Recent developments include …",
      "sources": [
        { "link": "https://example.com/article", "title": "…" }
      ]
    }
  2. Загрузите страницы, на которых основан ответ

    Краткого фрагмента недостаточно. Загрузите страницы в Markdown с включённой читаемостью, чтобы цитаты и заголовки сохранились без навигационного шума. Повторный запрос того же URL может попасть в кэш извлечения.

    research.ts
    type ExtractData = { data: { content: string } };
    
    const pages = await Promise.all(
      sources.map((source) =>
        felo<ExtractData>("/v2/web/extract", {
          url: source.link,
          output_format: "markdown",
          with_readability: true,
          with_cache: true,
        }).then((page) => ({ ...source, content: page.data.content })),
      ),
    );

    Пример вывода

    // pages[0].content
    "# Example Article\n\nExtracted article content…"
  3. Добавьте мнения из X

    Новости рассказывают об анонсах, X — о том, с чем люди сталкиваются на практике. Ищите последние семь дней и сохраняйте автора и время, чтобы бриф мог указать источник каждого утверждения. Увеличьте limit для более широкого охвата; каждая страница результатов содержит cursor.

    research.ts
    type XData = {
      data: {
        tweets: {
          content: string;
          author: { username: string };
          created_at: string;
        }[];
      };
    };
    
    const since = Math.floor((Date.now() - 7 * 24 * 60 * 60 * 1000) / 1000);
    
    const social = await felo<XData>("/v2/x/tweet/search", {
      query: question,
      limit: 10,
      since_time: since,
    });

    Пример вывода

    { "data": { "tweets": [
      { "content": "…", "author": { "username": "…" }, "created_at": "…" }
    ] } }
  4. Сохраните доказательства в LiveDoc

    Создайте LiveDoc и добавьте источники как URL-ресурсы. API удаляет дубликаты уже виденных URL и возвращает resource id для каждого URL, поэтому те же доказательства можно искать в следующих вопросах без повторной загрузки.

    research.ts
    type LiveDocData = { data: { short_id: string } };
    
    const doc = await felo<LiveDocData>("/v2/livedocs", {
      name: `Research: ${question.slice(0, 60)}`,
      description: "Sources collected while answering the question",
    });
    
    await felo(`/v2/livedocs/${doc.data.short_id}/resources/urls`, {
      urls: sources.map((source) => ({ url: source.link, title: source.title })),
    });
    
    console.log(doc.data.short_id); // keep this for later queries
  5. Вернитесь к доказательствам позже

    Вот и результат: следующий вопрос выполняет семантический поиск по LiveDoc, а не по открытому вебу. Передавайте resource_ids только если нужно ограничить поиск известным подмножеством.

    research.ts
    type Retrieved = {
      data: { title: string; content: string; score: number }[];
    };
    
    async function ask(livedoc: string, query: string) {
      const hits = await felo<Retrieved>(
        `/v2/livedocs/${livedoc}/resources/retrieve`,
        { query },
      );
      return hits.data.filter((hit) => hit.score >= 0.7);
    }

    Пример вывода

    [
      { "title": "…", "content": "…", "score": 0.92 }
    ]

Что входит

  • Ответ Chat API с источниками и страницами, на которых он основан
  • Извлечение полных страниц в Markdown для сильнейших источников
  • Посты X с автором и временем как сигнал от практиков
  • LiveDoc с возможностью поиска доказательств для будущих вопросов

Чего не делает

  • Только публичные источники; платные и закрытые страницы могут не открыться
  • Покрытие X — сигнал, а не репрезентативный опрос
  • Без интервью, приватных данных и платных баз
  • Если доказательств мало, это указывается, а не заполняется догадками
  • Один запуск на промпт; расписание — на стороне agent или cron

Вопросы

Откуда берутся источники?

Chat API возвращает использованные страницы, Web Fetch превращает сильнейшие из них в Markdown, X Search добавляет датированные посты практиков. У каждого элемента сохраняется URL.

Можно исследовать рынок вне технологий?

Да. Замените плейсхолдер области своим рынком. В нишах может быть меньше публичных источников; бриф отметит пробелы, а не будет угадывать.

Доказательства сохраняются после запуска?

Да, если выполнить шаг LiveDoc. Возвращённый short_id позволяет следующим вопросам искать те же страницы без повторной загрузки.

Сколько стоит бриф?

Оплата по факту использования кредитов; актуальные тарифы на странице цен. Промпт запрашивает одобрение до трат.

Можно запускать каждую неделю?

Да, но этот промпт выполняется один раз. Настройте расписание в agent или cron, который умеет запускать тот же процесс.

Что если источник за пейволлом?

Он пропускается и помечается как недоступный. Бриф не заполняет пробел выдуманным фактом или цитатой.

Связанные процессы

Адаптируйте под себя

Тот же рецепт, подстроенный под ваш реальный процесс.

Запишите бриф в файл

Соберите ответ, выдержки страниц и цитаты из X в Markdown и передайте в инструмент отчётов или закоммитьте в репозиторий документации. Держите ссылки на источники рядом с утверждениями — ценность брифа определяется цитатами.

Запускайте по расписанию

Оберните `answer()` в cron и сохраняйте каждый бриф в файл с датой. Один LiveDoc накапливает источники, и на четвёртой неделе можно отвечать по доказательствам первых трёх.

Пропустите LiveDoc

Если у вас уже есть база данных, сохраните ответ chat и загруженные страницы туда. Шаг LiveDoc нужен для поиска, а не для хранения по умолчанию.

Справочные страницы этого рецепта и куда двигаться дальше.