Pesquisa
Transforme uma pergunta em um briefing de pesquisa com fontes
Pergunte à web, salve as páginas por trás da resposta como Markdown, adicione o que os praticantes dizem no X e mantenha as evidências em um LiveDoc que você pode consultar depois.
Copiar o prompt
Substitua os campos entre colchetes e cole no Claude Code, Codex ou qualquer IA com acesso ao terminal. Ela instala a skill da Felo, pergunta antes de gastar créditos e executa o fluxo.
Monte um briefing de pesquisa com fontes para [pergunta ou decisão]. Escopo: [mercado, região, idioma]. Janela de tempo: [últimos 30 dias / últimos 12 meses]. Público: [quem vai ler]. Profundidade: [visão de uma página / briefing completo]. Produza um briefing em Markdown com: 1. Uma resposta curta em três tópicos. 2. Uma tabela de evidências: afirmação, título da fonte, URL, data de publicação. 3. Onde as fontes divergem. 4. O que ainda é desconhecido. 5. Uma lista completa de fontes. Regras: - Toda afirmação factual precisa de um link de fonte. Separe fatos, opiniões e suas inferências. - Nunca invente citações, métricas, datas ou fontes. Dado ausente é “Não disponível”, nunca zero. - Prefira fontes primárias. Use o X como sinal de profissionais, não como prova. - Transforme a janela de tempo em datas explícitas de início e fim e informe o fuso horário. - Antes de gastar créditos, mostre as chamadas de API planejadas e aguarde minha aprovação. - Não crie tarefa recorrente, não envie mensagens e não publique nada. - Grave o resultado em ./research-brief.md e resuma no chat.
A cópia também inclui os passos de instalação e as regras de segurança.
O que você recebe
Saída de exemplo de uma execução. Não é geração ao vivo.
Modelos pequenos vão substituir os grandes em bots de suporte?
Resposta curta
- Modelos pequenos já bastam para classificação e respostas de primeira linha.
- O gargalo é a qualidade da recuperação, não o tamanho do modelo.
- Times que migraram relatam custo menor por ticket, não taxa de resolução maior.
| Afirmação | Fonte | Data |
|---|---|---|
| A qualidade da recuperação domina a qualidade da resposta | https://example.com/rag-eval | 2026-10-12 |
| Custo por ticket resolvido caiu 38% | https://example.com/support-case | 2026-09-28 |
Onde as fontes discordam
Benchmarks de fornecedores mostram quase paridade; testes independentes ainda veem diferença em reembolsos de várias etapas.
Ainda desconhecido
Se a diferença fecha com melhores ferramentas ou exige um modelo maior.
As chamadas exatas
Para desenvolvedores: o mesmo fluxo em código, na ordem de execução.
Mostrar as chamadas reais da API
Pergunte à web
O Chat pesquisa a web, ordena as fontes, escreve a resposta e devolve os recursos usados. Guarde as três principais: cada passo seguinte segue um desses links. O helper abaixo envia a chave uma vez e lança erro em respostas fora de 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) }; }Saída de exemplo
{ "answer": "Recent developments include …", "sources": [ { "link": "https://example.com/article", "title": "…" } ] }Baixe as páginas por trás da resposta
Um trecho não basta para um briefing. Baixe as páginas em Markdown com legibilidade ativada, para que citações e títulos sobrevivam sem o ruído de navegação. Pedir a mesma URL de novo pode usar o cache de extração.
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 })), ), );Saída de exemplo
// pages[0].content "# Example Article\n\nExtracted article content…"
Adicione o que o X está dizendo
Notícias cobrem anúncios; o X mostra o que as pessoas encontram na prática. Pesquise os últimos sete dias e guarde autor e data para que o briefing atribua cada afirmação. Aumente
limitpara ampliar a rede; cada página de resultados traz um 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, });Saída de exemplo
{ "data": { "tweets": [ { "content": "…", "author": { "username": "…" }, "created_at": "…" } ] } }Arquive as evidências em um LiveDoc
Crie um LiveDoc e adicione as fontes como recursos de URL. A API deduplica o que já viu e devolve um resource id por URL, então as mesmas evidências podem ser consultadas por perguntas futuras sem nova busca.
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 queriesConsulte as evidências de novo depois
É aqui que está o ganho: a próxima pergunta faz busca semântica no LiveDoc em vez da web aberta. Passe
resource_idsapenas quando quiser limitar a um subconjunto conhecido.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); }Saída de exemplo
[ { "title": "…", "content": "…", "score": 0.92 } ]
O que está incluído
- Resposta com fontes do Chat API e as páginas por trás dela
- Extração das páginas completas em Markdown para as fontes mais fortes
- Posts do X com autor e data como sinal de praticantes
- LiveDoc que mantém as evidências consultáveis para perguntas futuras
O que não faz
- Somente fontes públicas; páginas com paywall ou só para login podem falhar
- A cobertura do X é um sinal, não uma pesquisa representativa
- Sem entrevistas, dados privados ou bancos pagos
- Quando as evidências são poucas, o briefing diz isso em vez de preencher lacunas
- Uma execução por prompt; o agendamento fica com seu agent ou cron
Perguntas
De onde vêm as fontes?
O Chat API devolve as páginas que usou, o Web Fetch transforma as mais fortes em Markdown e o X Search adiciona posts datados de praticantes. Cada item mantém sua URL.
Posso pesquisar um mercado fora de tecnologia?
Sim. Troque o campo de escopo pelo seu mercado. Mercados de nicho podem ter menos fontes públicas; o briefing marca essas lacunas em vez de adivinhar.
As evidências ficam salvas depois da execução?
Sim, quando o passo do LiveDoc roda. O short_id retornado permite que perguntas futuras consultem as mesmas páginas sem buscá-las de novo.
Quanto custa um briefing?
A cobrança é por créditos de uso; as tarifas atuais estão na página de preços. O prompt pede aprovação antes de gastar.
Posso rodar toda semana?
Sim, mas este prompt roda uma vez. Coloque o agendamento em um agent ou cron que execute o mesmo fluxo.
E se uma fonte estiver atrás de paywall?
Ela é ignorada e marcada como indisponível. O briefing nunca preenche uma lacuna com um fato ou citação inventados.
Fluxos relacionados
Publique um resumo diário de IA que a equipe realmente lê
Obtenha um resumo com fontes, adicione o que os praticantes publicam no X, pegue uma transcrição de vídeo, monte a edição em Markdown e arquive no LiveDoc.
Abrir o fluxo de trabalhoEscritórioTransforme uma página de pesquisa em apresentação
Extraia a página, salve como contexto do LiveDoc, deixe o PPT Task API montar o deck e consulte até a tarefa retornar o link pronto.
Abrir o fluxo de trabalhoSuporteResponda perguntas de suporte com a sua própria documentação
Crie um LiveDoc, carregue a central de ajuda e o runbook interno, recupere os trechos que respondem ao ticket e deixe o modelo responder apenas com essas evidências.
Abrir o fluxo de trabalhoFaça do seu jeito
A mesma receita, adaptada ao seu processo real.
Salve o briefing em arquivo
Junte a resposta, os trechos das páginas e as citações do X em Markdown e entregue à sua ferramenta de relatórios ou faça commit no repositório de docs. Mantenha os links ao lado das afirmações — o briefing vale tanto quanto suas citações.
Rode em um agendamento
Envolva `answer()` em um cron e grave cada briefing em um arquivo datado. O mesmo LiveDoc acumula fontes, e na quarta semana você responde com as evidências das três primeiras.
Pule o LiveDoc
Se você já tem um banco de dados, salve lá a resposta do chat e as páginas extraídas. O passo do LiveDoc é para busca, não para armazenamento padrão.
Continue
As páginas de referência por trás desta receita e para onde ir depois.