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.
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.
- Fazer clone do projeto
git clone git@github.com:cassunde/getContent.git
- Instalar as dependências.
pip3 install requirements.txt
- 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:
- Chave Gemini: Acesse o seguinte link para gerar sua chave: https://aistudio.google.com/app/apikey
- Chave Jina: Cadastre-se na plataforma Jina através deste link: https://jina.ai/api-dashboard/ Após o cadastro, você receberá uma chave gratuita.
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 nomegetcontent
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 ambienteTYPE_GETCONTENT
com o valordaily
. 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 tag0.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:
-
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. -
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 comandopwd
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 grupodocker
. - 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.