s

Fala pessoal, tudo certo? Hoje vamos falar sobre como podemos usar a IA para nos ajudar no dia a dia, esse projeto chamado de getContent é um projeto que visa capturar informações de alguns portais de notícia, resumir e mandar direto para seu e-mail

O Problema

Mantermo-nos informados sobre as principais notícias do Brasil e do Mundo sem gastar muito tempo é um desafio constante, entrar nos portais tradicionais, é ser soterrado por propagandas ou incentivos, pensando em melhorar a experiência de ler notícias esse projeto vem para resumir as principais notícias e envia-os por email.

O GetContent

GetContent é um projeto feito em Python que usa duas IA para fazer a parte trabalhosa, usa a IA Jina para capturar o conteúdo e o gemini para fazer os resumos.

image

Podemos executar esse projeto de algumas forma, via Docker ou diretamente no seu terminal, vamos ver como executar as duas formas, primeiro vamos executar diretamente no terminal.

  1. Fazer clone do projeto
git clone git@github.com:cassunde/getContent.git
  1. Instalar as dependências.
pip3 install requirements.txt
  1. Agora precisamos criar um arquivo .env com as nossas credencias
GOOGLE_API_KEY=...
JINA_API_KEY=...
SENDER_EMAIL=...
SENDER_PASSWORD=...
RECIPIENT_EMAIL=...
SMTP_SERVER=...
SMTP_PORT=587
TYPE_GETCONTENT=daily

Para obter as chaves necessárias, siga estes passos:

Além disso, você precisará de um endereço de e-mail para ser utilizado como remetente. Se você utiliza o Gmail como seu e-mail principal, considere criar uma conta no Outlook. Para configurar o Outlook como remetente, você pode encontrar as informações de SMTP necessárias neste guia: Link

Executando o GetContent via Terminal

Após clonar o repositório. instalar as dependências e criar o arquivo .env na raiz do projeto com suas credenciais. Execute o script principal do GetContent via terminal usando o comando:

python3 news.py

Isso iniciará o processo de coleta de notícias, resumo usando as APIs Jina e Gemini, e envio do resumo por e-mail para o destinatário especificado. Observe que o sucesso da execução depende da configuração correta do arquivo .env e da disponibilidade das APIs.

Executando a aplicação getcontent com Docker

Este sessão explica como executar a aplicação getcontent, disponível no Docker Hub em cassunde/getcontent, utilizando o comando docker run.

Pré-requisitos:

  • Docker instalado e configurado em seu sistema.

Execução:

O comando

docker run --rm --name getcontent -e TYPE_GETCONTENT=daily --env-file ./.env getcontent:0.0.2

com as seguintes opções:

  • --rm: Remove o contêiner após a sua execução. Isso limpa o ambiente após o término da aplicação, evitando a acumulação de contêineres desnecessários.

  • --name getcontent: Atribui o nome getcontent ao contêiner. Isso facilita a identificação e a gestão do contêiner em execução.

  • -e TYPE_GETCONTENT=daily: Define a variável de ambiente TYPE_GETCONTENT com o valor daily. Esta variável dis quais urls serão capturadas, resumidas e enviadas por e-mail

  • --env-file ./.env: Lê as variáveis de ambiente a partir do arquivo .env localizado no diretório atual. Este arquivo contém todas as credencias para executar a integrações com as IAs

  • getcontent:0.0.2: Especifica a imagem Docker a ser executada. A tag 0.0.2 indica a versão da imagem.

Verificando a execução:

Após executar o comando, verifique se a aplicação funcionou corretamente. Você precisa observar os logs que serão exibidos logo no final

Buscando conteúdo de: https://techcrunch.com/
Conteúdo obtido com sucesso.
Gerando resumo...
Resumo gerado com sucesso.
Email sent successfully!
Buscando conteúdo de: https://www.bbc.com/portuguese/topics/cz74k717pw5t
Conteúdo obtido com sucesso.
Gerando resumo...
Resumo gerado com sucesso.
Email sent successfully!
Buscando conteúdo de: https://cearaagora.com.br/ultimas/
Conteúdo obtido com sucesso.
Gerando resumo...
Resumo gerado com sucesso.
Email sent successfully!

Agendamento Automático com Crontab

Para automatizar a execução do getcontent via Docker usando o Crontab, siga estes passos:

  1. Abra o Crontab: Execute o comando crontab -e no seu terminal. Isso abrirá o editor de texto padrão do seu sistema para editar o arquivo Crontab.

  2. Adicione uma nova tarefa: Adicione uma linha com o comando para executar o Docker, seguindo a estrutura abaixo. Substitua * * * * * pela programação desejada (veja exemplos abaixo) e certifique-se de que o caminho para o arquivo .env esteja correto.

* * * * * docker run --rm --name getcontent -e TYPE_GETCONTENT=daily --env-file /caminho/para/.env getcontent:0.0.2

Exemplos de programação:

  • Diariamente às 8h: 0 8 * * *
  • A cada hora: 0 * * * *
  • Diariamente às 8h e 20h: 0 8,20 * * *
  • Somente aos dias úteis às 8h: 0 8 * * 1-5

Observações:

  • O caminho /caminho/para/.env deve ser substituído pelo caminho absoluto para o seu arquivo .env. Use o comando pwd no terminal para descobrir o caminho do diretório atual, se necessário.
  • Certifique-se de que o usuário que executa o Crontab tenha permissão para executar o comando docker. Pode ser necessário adicionar o usuário ao grupo docker.
  • Após salvar as alterações no Crontab, a tarefa agendada será executada de acordo com a programação definida.
  • Monitore os logs do Docker para identificar e solucionar quaisquer problemas que possam ocorrer durante a execução automatizada. Você pode usar o comando docker logs getcontent para visualizar os logs do contêiner.

Considerações Adicionais

Este projeto é uma excelente demonstração de como a IA pode simplificar tarefas cotidianas. No entanto, é importante considerar alguns pontos:

  • Limites das APIs: As APIs Jina e Gemini possuem limites de uso. Monitore o consumo para evitar exceder os limites gratuitos.
  • Tratamento de Erros: Implemente um mecanismo robusto de tratamento de erros para lidar com falhas nas APIs, problemas de conexão de rede e outras situações inesperadas. Isso garantirá a confiabilidade do sistema.
  • Escalabilidade: Para um maior volume de notícias ou usuários, considere a escalabilidade da solução, possivelmente utilizando um serviço de agendamento mais robusto e gerenciamento de filas de tarefas.
  • Segurança: Proteja suas credenciais de API e e-mail adequadamente. Evite armazená-las diretamente no código e utilize variáveis de ambiente como demonstrado.