{"slug": "como-criei-um-varredura-diaria-de-papers-de-ia-com-ollama-telegram", "title": "Como criei um varredura diária de papers de IA com Ollama + Telegram", "summary": "A developer built a daily AI paper scanner using Ollama and Telegram, automating the retrieval and translation of HuggingFace Papers into Portuguese. The Python script fetches the day's top papers via the HuggingFace API, sends each abstract to a local LLM through Ollama for translation, and delivers the results as formatted Telegram messages. The entire system runs locally without cloud dependencies or API costs, and can be replicated in under 10 minutes.", "body_md": "Se você acompanha pesquisa em IA, sabe que o [HuggingFace Papers](https://huggingface.co/papers) solta novos papers todo dia. O problema? São dezenas de abstracts em inglês, e ler tudo manualmente é inviável no dia a dia.\n\nResolvi automatizar isso: um script Python que busca os papers do dia, joga cada abstract pro meu LLM local via **Ollama**, traduz pra português e manda tudo pro **Telegram**. Sem pagar por API, sem nada na nuvem.\n\nNeste artigo vou te mostrar como funciona e como você pode replicar em menos de 10 minutos.\n\nO resultado no Telegram fica assim:\n\n```\n🤖 HuggingFace Papers — 27/05/2026\nTop 8 papers do dia, traduzidos com llama3\n──────────────────────────────\n\n1. *Scaling Laws for Reward Model Overoptimization*\n👥 Leo Gao, John Schulman, Jacob Hilton\n💬 142 upvotes\n\n📝 Investigamos como o desempenho de modelos de linguagem muda quando otimizamos \nexcessivamente contra um modelo de recompensa (reward model). Descobrimos que o \ndesempenho no proxy aumenta mas o desempenho verdadeiro diminui — um fenômeno \nconhecido como overoptimization. Nossos experimentos mostram leis de escala \nprevisíveis para esse comportamento...\n\n🔗 HuggingFace | arXiv\n```\n\n`llama3`\n\n(ou qualquer modelo que você tiver)\n\n```\nhf-digest/\n├── hf_digest.py      # script principal\n├── config.py         # suas configurações\n└── get_chat_id.py    # helper para descobrir o chat_id\n```\n\n`config.py`\n\nComeça pela configuração. Tudo em um lugar só, fácil de ajustar:\n\n```\nTELEGRAM_BOT_TOKEN = \"SEU_TOKEN_AQUI\"\nTELEGRAM_CHAT_ID   = \"SEU_CHAT_ID_AQUI\"\nOLLAMA_URL         = \"http://localhost:11434\"\nOLLAMA_MODEL       = \"llama3\"\nMAX_PAPERS         = 8\n```\n\nA API do HuggingFace retorna os papers do dia em JSON. Simples assim:\n\n``` php\ndef fetch_papers() -> list[dict]:\n    today = datetime.now().strftime(\"%Y-%m-%d\")\n    url = f\"https://huggingface.co/api/daily_papers?date={today}\"\n\n    headers = {\"User-Agent\": \"Mozilla/5.0 (compatible; HFDigestBot/1.0)\"}\n    response = requests.get(url, headers=headers, timeout=20)\n    response.raise_for_status()\n\n    papers = response.json()\n    return papers[:MAX_PAPERS]\n```\n\nAqui mora a mágica. O Ollama expõe uma API REST local no `localhost:11434`\n\n. A gente manda um prompt e ele retorna a resposta do modelo:\n\n``` php\ndef translate_with_ollama(text: str) -> str:\n    prompt = f\"\"\"Você é um assistente especializado em IA e ML. \nTraduza e resuma o seguinte abstract para o português brasileiro.\nMantenha termos técnicos em inglês entre parênteses quando necessário.\nResponda APENAS com o resumo, sem frases introdutórias.\n\nAbstract:\n{text}\"\"\"\n\n    payload = {\n        \"model\": OLLAMA_MODEL,\n        \"prompt\": prompt,\n        \"stream\": False,\n    }\n\n    response = requests.post(\n        f\"{OLLAMA_URL}/api/generate\",\n        json=payload,\n        timeout=120,\n    )\n    return response.json()[\"response\"].strip()\n```\n\nO `stream: False`\n\nfaz o Ollama esperar processar tudo antes de responder — mais fácil de lidar do que streaming para esse caso de uso.\n\nO bot do Telegram aceita Markdown, então dá pra formatar bem as mensagens:\n\n``` php\ndef send_telegram(text: str) -> bool:\n    url = f\"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/sendMessage\"\n    payload = {\n        \"chat_id\": TELEGRAM_CHAT_ID,\n        \"text\": text,\n        \"parse_mode\": \"Markdown\",\n        \"disable_web_page_preview\": True,\n    }\n    response = requests.post(url, json=payload, timeout=15)\n    return response.ok\n```\n\n`main()`\n\n``` python\ndef main():\n    papers = fetch_papers()\n\n    # Cabeçalho\n    send_telegram(f\"🤖 *HuggingFace Papers — {datetime.now().strftime('%d/%m/%Y')}*\")\n\n    for i, paper in enumerate(papers, start=1):\n        abstract = paper[\"paper\"].get(\"summary\", \"\")\n\n        translated = translate_with_ollama(abstract)\n        message = format_paper(paper, i, translated)\n        send_telegram(message)\n\n    send_telegram(f\"✅ {len(papers)} papers enviados!\")\n```\n\n**1. Instale a dependência**\n\n```\npip install requests\n```\n\n**2. Crie o bot no Telegram**\n\n`/newbot`\n\n, siga as instruções`config.py`\n\n**3. Descubra seu Chat ID**\n\nEnvie qualquer mensagem pro seu novo bot e rode:\n\n``` python\n# get_chat_id.py\nimport requests\nfrom config import TELEGRAM_BOT_TOKEN\n\nr = requests.get(f\"https://api.telegram.org/bot{TELEGRAM_BOT_TOKEN}/getUpdates\")\nupdates = r.json()[\"result\"]\nchat_id = updates[-1][\"message\"][\"chat\"][\"id\"]\nprint(f\"Seu chat_id: {chat_id}\")\n```\n\n**4. Suba o Ollama e rode**\n\n```\nollama serve\npython3 hf_digest.py\n```\n\nPoderia ter usado a API da OpenAI ou do Gemini para traduzir. Mas há algumas vantagens em rodar local:\n\nO `llama3`\n\nfaz um trabalho muito bom em traduções técnicas. Se quiser mais velocidade, o `phi4`\n\nou `gemma3`\n\ntambém funcionam bem e são mais leves.\n\nPara receber o digest todo dia de manhã sem precisar rodar manualmente, adicione ao crontab:\n\n```\ncrontab -e\n0 9 * * * cd /caminho/para/hf-digest && python3 hf_digest.py >> digest.log 2>&1\n```\n\nAlgumas ideias para evoluir o projeto:\n\nO projeto completo está disponível no GitHub: **[ https://github.com/lromais/ai_newsletters]**\n\nSe você testar e fizer alguma melhoria, compartilha nos comentários! E se tiver dúvida em algum passo do setup, é só perguntar.\n\n*Tags: python, ai, ollama, telegram, machinelearning*", "url": "https://wpnews.pro/news/como-criei-um-varredura-diaria-de-papers-de-ia-com-ollama-telegram", "canonical_source": "https://dev.to/lincoln_romais/-como-criei-um-varredura-diaria-de-papers-de-ia-com-ollama-telegram-gnl", "published_at": "2026-05-27 20:02:57+00:00", "updated_at": "2026-05-27 20:11:16.469795+00:00", "lang": "en", "topics": ["artificial-intelligence", "machine-learning", "large-language-models", "ai-tools", "ai-research"], "entities": ["HuggingFace", "Ollama", "Telegram", "Llama3", "Leo Gao", "John Schulman", "Jacob Hilton"], "alternates": {"html": "https://wpnews.pro/news/como-criei-um-varredura-diaria-de-papers-de-ia-com-ollama-telegram", "markdown": "https://wpnews.pro/news/como-criei-um-varredura-diaria-de-papers-de-ia-com-ollama-telegram.md", "text": "https://wpnews.pro/news/como-criei-um-varredura-diaria-de-papers-de-ia-com-ollama-telegram.txt", "jsonld": "https://wpnews.pro/news/como-criei-um-varredura-diaria-de-papers-de-ia-com-ollama-telegram.jsonld"}}