AI 기반 뉴스 인텔리전스 플랫폼
뉴스 수집 · 팩트체킹 · 심층 분석 · AI 리포팅을 하나의 통합 워크벤치로 제공합니다
Features · Architecture · AWS Infrastructure · Getting Started · Documentation
NewsInsight는 AI 기반 뉴스 인텔리전스 플랫폼으로, 뉴스 수집부터 팩트체킹, 심층 분석, AI 리포팅까지 전 과정을 자동화합니다.
- 🔍 자율 크롤링: Brave/Perplexity/Tavily 등 다중 검색 엔진 통합
- ✅ 팩트체킹: 학술 DB(Semantic Scholar, PubMed, CORE) 기반 검증
- 🤖 AI 분석: 다중 LLM 통합 (OpenAI, Anthropic, Gemini, Bedrock 등)
- 📊 심층 리포팅: 감성 분석, 키워드 추출, 편향 탐지
- ☁️ 클라우드 네이티브: AWS 완전 관리형 서비스 활용
- SmartSearch: 키워드 + 시맨틱 하이브리드 검색
- DeepSearch: 다중 소스 병렬 검색 및 RRF 융합
- ParallelSearch: 실시간 SSE 스트리밍 검색
- 다중 학술 DB 검증: Semantic Scholar, PubMed, CORE, CrossRef, OpenAlex
- RRF 기반 증거 융합: 여러 검색 쿼리 병렬 실행 후 랭킹 융합
- 실시간 스트리밍: SSE 기반 실시간 검증 결과 제공
- 신뢰도 점수: 출처별 신뢰도 가중치 적용
- 자율 크롤링: Kafka 기반 비동기 크롤링 파이프라인
- 다중 검색 엔진: Brave, Perplexity, Tavily 통합
- 캡챠 우회: nopecha, camoufox 활용
- 중복 제거: 콘텐츠 해시 기반 중복 필터링
- 감성 분석: 긍정/부정/중립 감성 분포
- 키워드 추출: TF-IDF 기반 핵심 키워드
- 편향 탐지: ML 기반 편향 분석
- PDF 내보내기: 차트 포함 전문 리포트
- 소스 관리: RSS, Web, API 소스 통합 관리
- 스케줄링: 수집 주기 설정 및 자동 실행
- 상태 추적: 실시간 수집 작업 모니터링
- 시스템 모니터링: 서비스 헬스 체크
- LLM 프로바이더 관리: 다중 AI 모델 통합
- ML 애드온 제어: 플러그인 방식 ML 모델 관리
메인 프론트엔드와 Admin Dashboard가 API Gateway를 통해 백엔드 플랫폼과 상호작용합니다.
API Gateway → Kafka → 각 백엔드 서비스 간 데이터 플로우와 중앙 집중 인증 구조를 보여줍니다.
JwtAuthenticationFilter와 RbacFilter를 통한 인증/인가 단계 상세도입니다.
Controller/Service/Entity/Repository 계층과 Kafka 기반 이벤트 처리 방식을 도식화했습니다.
crawl/search 메시지 토픽별 흐름과 소비자 서비스(ConsumerService)의 역할을 설명합니다.
Brave/Perplexity/Tavily 등 외부 검색 API와 Captcha 솔버, Stealth 모듈을 포함한 크롤링 오케스트레이션 절차입니다.
자연어 명령을 LLM이 행위 계획으로 변환하고 DOM 분석·액터 모듈을 통해 브라우저를 제어하는 과정을 보여줍니다.
llm/base.py가 OpenAI, Anthropic, Bedrock, Groq, DeepSeek 등 다수의 LLM을 공통 인터페이스로 연결하는 구조입니다.
sentiment/bias/factcheck 애드온과 MCP 서버가 표준화된 API로 통합되는 방식을 도식화했습니다.
React/TS 기반 관리 UI와 FastAPI 라우터 간 API 호출 관계 및 운영 기능을 소개합니다.
NewsInsight는 AWS 완전 관리형 서비스를 활용하여 고가용성과 확장성을 보장합니다.
- Region: ap-northeast-2 (Seoul)
- VPC CIDR: 10.0.0.0/16
- 가용 영역: ap-northeast-2a, ap-northeast-2c
| 서브넷 | CIDR | 가용 영역 | 용도 |
|---|---|---|---|
| Public Subnet 1 | 10.0.0.0/24 | ap-northeast-2a | ALB, NAT Gateway |
| Public Subnet 2 | 10.0.1.0/24 | ap-northeast-2c | ALB (HA) |
| Private Subnet 1 | 10.0.10.0/24 | ap-northeast-2a | Application Servers |
| Private Subnet 2 | 10.0.11.0/24 | ap-northeast-2c | RDS, DocumentDB |
- Public Route Table: Internet Gateway 연결
- Private Route Table: NAT Gateway를 통한 아웃바운드 트래픽
Public Subnet의 인터넷 연결을 제공합니다.
Private Subnet의 아웃바운드 인터넷 연결을 제공합니다.
- Instance Type: t3.large
- OS: Ubuntu 22.04 LTS
- Availability Zone: ap-northeast-2a
- Private IP: 10.0.0.16
- Public IP: Elastic IP 할당
고정 공인 IP 주소를 통한 안정적인 외부 접근을 제공합니다.
- Type: gp3 (General Purpose SSD)
- Size: 30 GB
- IOPS: 3000
- Throughput: 125 MB/s
- DNS: newsinsight-alb-dev-1262924076.ap-northeast-2.elb.amazonaws.com
- Protocol: HTTP (Port 80)
- Target Groups: Frontend, API Gateway, Admin Dashboard
| 대상 그룹 | 포트 | 헬스 체크 경로 |
|---|---|---|
| frontend-tg | 8080 | / |
| api-gateway-tg | 8000 | /actuator/health |
| admin-dashboard-tg | 8888 | /health |
- Inbound: 0.0.0.0/0:80 (HTTP)
- Outbound: All traffic
- Inbound: ALB Security Group → 8000, 8080, 8888
- Inbound: SSH (22) from specific IP
- Outbound: All traffic
- Inbound: Application Security Group → 5432 (PostgreSQL), 27017 (MongoDB)
- Outbound: All traffic
- Endpoint: newsinsight-postgres-dev.cluster-cnuocikwqyi6.ap-northeast-2.rds.amazonaws.com:5432
- Engine: Aurora PostgreSQL 15.x
- Instance Class: db.t3.medium
- Storage: Auto-scaling (10GB ~ 100GB)
- Multi-AZ: Enabled
- Endpoint: newsinsight-docdb-dev.cluster-cnuocikwqyi6.ap-northeast-2.docdb.amazonaws.com:27017
- Engine: DocumentDB 5.0
- Instance Class: db.t3.medium
- Storage: 10GB
- Backup Retention: 7 days
- Endpoint: master.newsinsight-redis-dev.k31okg.apn2.cache.amazonaws.com:6379
- Engine: Redis 7.0.7
- Node Type: cache.t3.micro
- TLS: Enabled (In-Transit Encryption)
- Auth Token: Enabled
- Registry: 130954244737.dkr.ecr.ap-northeast-2.amazonaws.com
- Repositories:
- newsinsight/frontend:latest (55.6MB)
- newsinsight/api-gateway:latest (255MB)
- newsinsight/admin-dashboard:latest (442MB)
- Auto Scaling: Keda를 통한 Kafka 워커 자동 확장
- Spot Instances: 비프로덕션 환경에서 활용
- Reserved Instances: RDS, ElastiCache 예약 인스턴스
- S3 Lifecycle: 로그 및 백업 데이터 자동 아카이빙
| 서비스/컴포넌트 | 경로 | 주요 역할 | 기술 스택 |
|---|---|---|---|
| api-gateway-service | backend/api-gateway-service/ |
단일 진입점, 라우팅, JWT 인증, RBAC | Java, Spring Boot, Gradle |
| admin-dashboard | backend/admin-dashboard/ |
시스템 자원 관리, 헬스 모니터링, 감사 로그 | FastAPI, React, TypeScript |
| autonomous-crawler-service | backend/autonomous-crawler-service/ |
자율 크롤링, 검색 API 연동, 캡챠 우회 | Python, Kafka, Celery |
| browser-use | backend/browser-use/ |
AI 브라우저 에이전트, 인간 수준 자동화 | Python, Playwright, Go |
| data-collection-service | backend/data-collection-service/ |
하이브리드 검색, 팩트체크, 리포트 생성 | Java, Spring Boot, Kafka |
| ml-addons | backend/ml-addons/ |
편향·팩트체크·감성 분석 ML 플러그인 | Python, Flask/FastAPI |
| mcp | mcp/ |
모델 제어, AI 에이전트, 학습 파이프라인 | Python, MCP SDK |
| frontend | frontend/ |
SmartSearch UI, 대시보드, 챗봇 인터페이스 | React, TypeScript, Vite |
SmartSearch 결과를 기반으로 생성되는 AI 요약 모달입니다. 핵심 주장과 검증 상태를 한눈에 보여줍니다.
세부 데이터 포인트(사실·출처·검증 수준)를 테이블로 제공하여 추적 가능성을 높입니다.
다양한 관점, 주의사항, 결론 섹션으로 구성된 최종 분석 패널입니다.
역할: 모든 외부 요청을 내부 마이크로서비스로 전달하고 인증/인가를 중앙 집중화
- JWT 인증 필터
- RBAC 기반 권한 관리
- Redis 기반 Rate Limiting
- Consul 서비스 디스커버리
역할: 플랫폼의 두뇌 역할을 수행하는 핵심 서비스
- 하이브리드 검색:
VectorSearchService,HybridRankingService - 팩트체크: 다중 학술 DB 통합 (Semantic Scholar, PubMed, CORE, CrossRef, OpenAlex)
- RRF 융합: 다중 쿼리 병렬 검색 및 Reciprocal Rank Fusion
- PDF 리포트: 차트 캡처와 AI 요약 결합
- 워크스페이스: Project/Workspace 기반 협업
역할: 정책 기반 자율 크롤링 및 데이터 수집
- Brave/Perplexity/Tavily 검색 API 통합
- Kafka 기반 비동기 처리
- Camoufox/Nopecha 캡챠 우회
- 중복 제거 및 품질 필터링
역할: AI 기반 브라우저 자동화
- 다중 LLM 연동 (OpenAI, Anthropic, Gemini, Bedrock, Groq, Ollama)
- Playwright 기반 DOM 분석
- 세션 유지 및 영상 녹화
- 인터벤션 워크플로우
역할: 시스템 운영 및 관리
- FastAPI + React/TS 스택
- LLM 프로바이더 관리
- ML 애드온 제어
- 헬스 모니터링
- Kafka 작업 제어
역할: 플러그인 방식 ML 모델 및 AI 에이전트 관리
- 편향/감성/팩트체크 모델
- MCP 서버 기반 모델 제어
- 학습 파이프라인 자동화
- Framework: React 18 + TypeScript
- Build Tool: Vite
- Styling: Tailwind CSS + shadcn/ui
- State Management: React Query + Context API
- Charts: Recharts, D3.js
- Real-time: Server-Sent Events (SSE)
- Language: Java 21, Python 3.10+, Go 1.21+
- Framework: Spring Boot 3.2, FastAPI, Gin
- ORM: Spring Data JPA, Hibernate
- Messaging: Apache Kafka
- Cache: Redis
- Database: PostgreSQL, MongoDB
- LLM: OpenAI, Anthropic, Google Gemini, AWS Bedrock, Groq, DeepSeek, Ollama
- ML Framework: PyTorch, TensorFlow, scikit-learn
- NLP: Transformers, spaCy, KoNLPy
- Vector DB: Milvus, Qdrant
- Cloud: AWS (EC2, RDS, DocumentDB, ElastiCache, ALB, ECR)
- Container: Docker, Docker Compose
- Orchestration: Kubernetes, Keda
- Service Discovery: Consul
- CI/CD: GitHub Actions, AWS CodePipeline
- Monitoring: Prometheus, Grafana
- Logging: ELK Stack (Elasticsearch, Logstash, Kibana)
- Tracing: Jaeger
- Security: Vault, AWS Secrets Manager
- Node.js 18+ / Bun (프론트엔드)
- Java 17+ & Gradle Wrapper (Spring 서비스)
- Python 3.10+ (crawler, browser-use, ml-addons)
- Docker Desktop (로컬 통합 실행용)
- Kafka & Consul (docker-compose 활용 권장)
git clone https://github.com/choisimo/NewsInsight.git
cd NewsInsight# AWS 환경 변수 (선택사항)
cp aws/.env.aws.example aws/.env.aws
# 각 서비스별 환경 변수 설정
cp backend/data-collection-service/.env.example backend/data-collection-service/.env# Kafka, Consul, PostgreSQL, MongoDB, Redis 시작
docker-compose -f etc/docker/docker-compose.production.yml up -dcd frontend
bun install # 또는 npm install
bun dev # http://localhost:5173cd backend/data-collection-service
./gradlew bootRuncd backend/api-gateway-service
./gradlew bootRuncd backend/autonomous-crawler-service
poetry install
poetry run python src/main.py# 전체 서비스 시작
docker-compose up -d
# 로그 확인
docker-compose logs -f
# 서비스 중지
docker-compose down# AWS CDK 배포
cd aws/cdk
npm install
cdk deploy
# 또는 스크립트 사용
./scripts/deploy-aws.sh이 프로젝트는 활발히 발전 중이며, 다음과 같은 기여를 환영합니다:
- 문서화: 신규 모듈/워크플로우 추가 시 README 또는
/docs업데이트 - 이슈 등록: 버그/개선 제안은 GitHub Issues에 서비스별 라벨 추가
- Pull Request: lint & 테스트 통과 후 PR 제출, 관련 서비스 담당 리뷰어 지정
# Feature 브랜치 생성
git checkout -b feature/your-feature-name
# 변경사항 커밋
git commit -m "feat: add new feature"
# Push 및 PR 생성
git push origin feature/your-feature-nameThis project is licensed under the MIT License - see the LICENSE file for details.
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Email: support@newsinsight.io
NewsInsight Platform - AI 기반 뉴스 인텔리전스의 미래
Made with ❤️ by NewsInsight Team
- Node.js 18+ / Bun (프론트엔드)
- Java 17+ & Gradle Wrapper (Spring 서비스)
- Python 3.10+ (crawler, browser-use, ml-addons)
- Docker Desktop (optional, 로컬 통합 실행용)
- Kafka & Consul (로컬 테스트 시 docker-compose 활용 권장)
git clone https://github.com/choisimo/NewsInsight.git
cd NewsInsightcd frontend
bun install # 또는 npm install
bun dev # http://localhost:5173cd backend/data-collection-service
./gradlew bootRuncd backend/autonomous-crawler-service
poetry install
poetry run python src/main.py다른 서비스들도 각 디렉토리에서
README.md혹은docker-compose스크립트를 확인하세요.
전체 스택을 띄울 때는docker-compose혹은etc/k8s/배포 스크립트를 참고하면 됩니다.
- Kafka/Consul 의존성이 있는 모듈은
scripts/디렉토리의 헬퍼 스크립트로 쉽게 부트스트랩할 수 있습니다. - 프론트엔드와 백엔드를 동일한 포트 도메인에서 실행할 때는
frontend/vite.config.ts프록시 설정을 활용하세요. - FactCheck 챗, PDF Export 등 SSE/다운로드 API는 인증 설정(
backend/data-collection-service/.../SecurityConfig.java)을 확인해 주세요.
이 레포는 활발히 발전 중이며, 다음과 같은 기여를 환영합니다.
- 문서화: 신규 모듈/워크플로우를 추가했다면 README 혹은
/docs에 업데이트해주세요. - 이슈 등록: 버그/개선 제안은 GitHub Issues에 서비스별 라벨을 붙여 올려주세요.
- PR 가이드: lint & 테스트 통과 후 PR을 올리고, 관련 서비스 담당 리뷰어를 지정합니다.
문의나 제안은 Issues/Discussions를 통해 남겨 주세요. NewsInsight 팀에 오신 것을 환영합니다!




































