{"id":44715134,"url":"https://github.com/palumbou/another_rss_telegram_bot","last_synced_at":"2026-02-15T13:39:29.099Z","repository":{"id":335839477,"uuid":"1126823086","full_name":"palumbou/another_rss_telegram_bot","owner":"palumbou","description":"Another RSS Telegram Bot - A Kiro experiment","archived":false,"fork":false,"pushed_at":"2026-02-01T11:57:56.000Z","size":514,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-02-01T21:18:35.543Z","etag":null,"topics":["aws","bedrock","bot","kiro","telegram"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/palumbou.png","metadata":{"files":{"readme":"README.it.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-02T16:34:21.000Z","updated_at":"2026-02-01T11:57:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/palumbou/another_rss_telegram_bot","commit_stats":null,"previous_names":["palumbou/another_rss_telegram_bot"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/palumbou/another_rss_telegram_bot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palumbou%2Fanother_rss_telegram_bot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palumbou%2Fanother_rss_telegram_bot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palumbou%2Fanother_rss_telegram_bot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palumbou%2Fanother_rss_telegram_bot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/palumbou","download_url":"https://codeload.github.com/palumbou/another_rss_telegram_bot/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/palumbou%2Fanother_rss_telegram_bot/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29480609,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-15T11:35:25.641Z","status":"ssl_error","status_checked_at":"2026-02-15T11:34:57.128Z","response_time":118,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["aws","bedrock","bot","kiro","telegram"],"created_at":"2026-02-15T13:39:28.442Z","updated_at":"2026-02-15T13:39:29.090Z","avatar_url":"https://github.com/palumbou.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Another RSS Telegram Bot\n\nUn bot serverless generico e riutilizzabile che monitora feed RSS e invia aggiornamenti automatici ai canali Telegram configurati.\n\n\u003e **Lingue disponibili**: [English](README.md) | [Italiano (corrente)](README.it.md)\n\n## Panoramica\n\nQuesto progetto è un **esperimento con Kiro AI** per esplorare lo sviluppo assistito dall'AI dalla specifica dei requisiti all'implementazione e testing. Il sistema è completamente generico e deployabile su AWS con automazione dell'infrastruttura.\n\n### Caratteristiche Principali\n\n- **Monitoraggio RSS**: Controllo periodico di feed RSS configurabili\n- **Filtro 24 Ore**: Elabora solo item pubblicati nelle ultime 24 ore\n- **Deduplicazione**: Evita contenuti duplicati usando DynamoDB\n- **Riassunti AI**: Genera riassunti in italiano usando Amazon Bedrock Nova Micro con fallback\n- **Integrazione Telegram**: Invio automatico di messaggi formattati\n- **Gestione Errori**: Gestione robusta degli errori con Dead Letter Queue\n- **Logging Strutturato**: Sistema di logging completo per debugging\n- **Monitoraggio**: Dashboard CloudWatch e metriche personalizzate\n- **Pipeline CI/CD**: Deployment automatizzato con AWS CodePipeline e S3\n\n### Modelli AI\n\nIl bot supporta tre modelli Amazon Bedrock per generare riassunti in italiano. Puoi scegliere quale modello utilizzare al momento del deployment:\n\n**Default: Amazon Nova Micro** (`amazon.nova-micro-v1:0`)\n- Economico per riassunti ad alto volume\n- Tempi di risposta rapidi (\u003c 1 secondo per riassunto)\n- Buona qualità nelle traduzioni italiane\n- Disponibile tramite profilo di inferenza cross-region\n- Deploy con: `./scripts/deploy.sh -m nova-micro`\n\n**Premium: Mistral Large** (selezione regionale intelligente)\n- Eccellente traduzione multilingua (EN→IT, FR, ES, DE)\n- Reasoning e comprensione del contesto superiori\n- Usa Mistral Large 3 (675B MoE) in 6 regioni, Large 24.02 nelle altre\n- Ideale per deployment focalizzati sulla qualità\n- Costo: ~$0.78/mese per 150 articoli\n- Deploy con: `./scripts/deploy.sh -m mistral-large`\n\n**Alternativa: Llama 3.2 3B Instruct** (`us.meta.llama3-2-3b-instruct-v1:0`)\n- Eccellente per riassunti e traduzioni\n- Migliore nel seguire le istruzioni\n- Qualità italiana superiore\n- Costo leggermente più alto ma risultati migliori\n- Deploy con: `./scripts/deploy.sh -m llama-3b`\n\nPer un confronto dettagliato dei modelli, opzioni di configurazione e come scegliere il modello giusto per il tuo caso d'uso, vedi la [Guida Modelli AI](docs/MODELS.it.md).\n\n### Esempio di Output\n\nEcco come appaiono i messaggi del bot su Telegram:\n\n![Esempio Messaggi Telegram](docs/images/telegram-messages-example.png)\n\nOgni messaggio include:\n- Un titolo conciso in italiano\n- Tre punti elenco con le informazioni chiave\n- Una sezione \"Perché conta:\" che spiega la rilevanza\n- Link alla fonte dell'articolo originale\n\n## Architettura\n\nSistema serverless su AWS con i seguenti componenti:\n\n### Componenti AWS\n- **Lambda Function**: Logica di elaborazione principale (Python 3.12)\n- **DynamoDB**: Storage per deduplicazione con TTL di 90 giorni\n- **EventBridge Scheduler**: Esecuzione programmata giornaliera\n- **Secrets Manager**: Storage sicuro per token Telegram\n- **Amazon Bedrock**: Generazione riassunti AI con modello Nova Micro\n- **SQS Dead Letter Queue**: Gestione errori e retry\n- **CloudWatch**: Logging, metriche e dashboard di monitoraggio\n- **CodePipeline**: Build e deployment automatizzati (CI/CD)\n- **S3**: Storage artifact e automazione pipeline\n\n### Gestione dei Costi\nTutte le risorse AWS sono taggate con un tag `CostCenter` (impostato al nome del bot) per il tracciamento e l'allocazione dei costi. Questo permette:\n- Analisi dei costi per istanza del bot\n- Alert di budget per deployment\n- Raggruppamento risorse in AWS Cost Explorer\n\n### Componenti Codice\n- `src/lambda_handler.py`: Entry point principale e orchestrazione\n- `src/rss.py`: Gestione dei feed RSS con feedparser\n- `src/telegram.py`: Integrazione con Telegram Bot API\n- `src/summarize.py`: Generazione riassunti con Bedrock e fallback\n- `src/dedup.py`: Sistema di deduplicazione con DynamoDB\n- `src/config.py`: Gestione configurazione e variabili ambiente\n- `src/models.py`: Modelli dati e strutture\n\n## Avvio Rapido\n\n### Prerequisiti\n\n- AWS CLI configurato con credenziali appropriate\n- Python 3.12 o compatibile\n- Bot creato tramite @BotFather di Telegram\n- Repository GitHub (per integrazione CodePipeline)\n\n### Deployment\n\nIl sistema utilizza uno stack CloudFormation unificato con AWS CodePipeline per il deployment automatizzato. Un singolo stack contiene tutte le risorse (Lambda, DynamoDB, EventBridge, CodePipeline, CodeBuild, ecc.). Vedi [docs/INFRASTRUCTURE.it.md](docs/INFRASTRUCTURE.it.md) per le istruzioni complete di setup.\n\n## Configurazione\n\n### Feed RSS\n\nIl bot legge i feed RSS da un file `feeds.json`. Puoi personalizzare quali feed monitorare modificando questo file o fornendo il tuo.\n\n**I feed predefiniti** includono contenuti relativi ad AWS. Vedi [FEEDS.IT.md](FEEDS.IT.md) per la documentazione completa su:\n- Formato del file feed\n- Come personalizzare i feed\n- Esempi per diversi casi d'uso\n\n### Feed RSS Predefiniti\n\nIl `feeds.json` predefinito include questi feed AWS:\n- AWS Blog: `https://aws.amazon.com/blogs/aws/feed/`\n- AWS What's New: `https://aws.amazon.com/about-aws/whats-new/recent/feed/`\n- AWS Security Blog: `https://aws.amazon.com/blogs/security/feed/`\n- AWS Compute Blog: `https://aws.amazon.com/blogs/compute/feed/`\n- AWS Database Blog: `https://aws.amazon.com/blogs/database/feed/`\n\n### Personalizzazione\n\nPuoi personalizzare i feed:\n1. Modificando il file `feeds.json` nella root del progetto\n2. Fornendo un file feeds personalizzato durante il deployment\n\nVedi [FEEDS.IT.md](FEEDS.it.md) per istruzioni dettagliate ed esempi.\n\n## Avvio Rapido\n\n### Prerequisiti\n\n- **Account AWS**: Account AWS attivo con permessi appropriati\n- **AWS CLI**: Installato e configurato con le tue credenziali\n  ```bash\n  # Configura AWS CLI con le tue credenziali\n  aws configure\n  # Oppure usa la variabile ambiente AWS_PROFILE\n  export AWS_PROFILE=nome-tuo-profilo\n  ```\n- **Python 3.12** o compatibile\n- **Bot creato** tramite @BotFather di Telegram\n- **Accesso Bedrock**: Assicurati di avere accesso ai modelli Amazon Bedrock nella tua regione\n\n### Deployment\n\n```bash\n# Deployment iniziale con modello predefinito (Nova Micro)\n./scripts/deploy.sh \\\n  --telegram-token \"TUO_BOT_TOKEN\" \\\n  --chat-id \"TUO_CHAT_ID\"\n\n# Deploy con Llama 3.2 3B per qualità superiore\n./scripts/deploy.sh \\\n  --telegram-token \"TUO_BOT_TOKEN\" \\\n  --chat-id \"TUO_CHAT_ID\" \\\n  --model llama-3b\n\n# Oppure con file feeds personalizzato\n./scripts/deploy.sh \\\n  --telegram-token \"TUO_BOT_TOKEN\" \\\n  --chat-id \"TUO_CHAT_ID\" \\\n  --feeds-file /percorso/al/mio-feeds.json\n\n# Salta prompt di conferma\n./scripts/deploy.sh \\\n  --telegram-token \"TUO_BOT_TOKEN\" \\\n  --chat-id \"TUO_CHAT_ID\" \\\n  --yes\n```\n\n**Selezione Modello:**\n- Ometti `--model` o usa `--model nova-micro` per deployment economico (default)\n- Usa `--model llama-3b` per riassunti in italiano di qualità superiore\n\nPer istruzioni complete di deployment e confronto dei modelli, vedi [docs/INFRASTRUCTURE.it.md](docs/INFRASTRUCTURE.it.md) e [docs/MODELS.it.md](docs/MODELS.it.md).\n\n## Documentazione\n\n- [Configurazione Feed RSS](FEEDS.it.md) - Come configurare e personalizzare i feed RSS\n- [Guida Infrastruttura](docs/INFRASTRUCTURE.it.md) - Setup completo dell'infrastruttura\n- [Guida Modelli AI](docs/MODELS.it.md) - Confronto modelli, selezione e configurazione\n- [Processo di Sviluppo Kiro](docs/KIRO-PROMPT.it.md) - Metodologia di sviluppo assistito da AI\n- [Prompts](prompts/README.it.md) - Template dei prompt AI\n- [Script di Deployment](scripts/README.it.md) - Documentazione automazione deployment\n\n## Metodologia di Sviluppo\n\nQuesto progetto è stato sviluppato usando lo **spec-driven development** con Kiro AI:\n\n- ✅ Specifica completa dei requisiti usando il formato EARS\n- ✅ Design architetturale con proprietà di correttezza\n- ✅ Implementazione guidata da property-based testing\n- ✅ Test automatizzati con Hypothesis per Python\n- ✅ Infrastructure-as-Code con CloudFormation\n- ✅ Deployment automatizzato con CodePipeline\n\n## Licenza\n\nQuesto progetto è rilasciato sotto [Licenza Creative Commons Attribution-NonCommercial 4.0 International (CC BY-NC 4.0)](LICENSE).\n\nSei libero di:\n- Usare, copiare e modificare questo software per scopi non commerciali\n- Condividere e distribuire il software\n\nAlle seguenti condizioni:\n- Attribuzione: Devi dare credito appropriato\n- Non Commerciale: Non puoi usare il materiale per scopi commerciali\n\nPer uso commerciale, contatta l'autore.\n\n---\n\n*Sviluppato come esperimento con Kiro AI Assistant*\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalumbou%2Fanother_rss_telegram_bot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpalumbou%2Fanother_rss_telegram_bot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpalumbou%2Fanother_rss_telegram_bot/lists"}