A multi-agent system that automatically crawls news sources, extracts factual claims, verifies them against reliable sources, and publishes verified results to a Jekyll website.
This project implements an automated fact-checking pipeline using multiple AI agents that work together to:
- Crawl news sources for articles
- Extract factual claims from articles
- Verify claims against reliable sources
- Publish verified results to a Jekyll website
The system uses the A2A (Agent-to-Agent) protocol for inter-agent communication and MCP (Model Context Protocol) for external tool integration, creating a robust and scalable fact-checking infrastructure.
- Orchestrator Agent: Coordinates the entire pipeline and manages agent communication
- Crawler Agent: Fetches news articles from various sources
- Extractor Agent: Extracts factual claims from articles using LLM analysis
- Fact Checker Agent: Verifies claims against reliable sources
- Publisher Agent: Publishes verified results to the Jekyll website
- A2A Protocol: Enables asynchronous communication between agents
- MCP Integration: Provides external tools for claim extraction, verification, and publishing
- Python 3.11+: Main programming language
- Jekyll: Static site generator for the fact-checking website
- A2A Protocol: Agent-to-agent communication framework
- MCP (Model Context Protocol): External tool integration
- Large Language Models: For claim extraction and verification
- Semantic Analysis: For understanding and processing news content
- Fact Verification: Against reliable databases and sources
- Jekyll: Static site generation
- Markdown: Content formatting
- CSS/HTML: Website styling and structure
- Python 3.11 or higher
- Ruby and Jekyll (for website generation)
- Git
-
Clone the repository
git clone <repository-url> cd Fact_Checking_News_Aggregator
-
Set up Python environment
# Using uv (recommended) uv sync # Or using pip pip install -r requirements.txt
-
Install Jekyll (for website generation)
gem install jekyll jekyll-feed
-
Run the complete pipeline
python run_all_agents.py
This will:
- Start the mcp server
- Initialize all agents
-
Start the Orchestrator
python orchestrator.py
This will:
- Start the Orchestrator Agent.
-
Start the Orchestrator Client
python orchestrator_client.py
This will:
- Start the client interface
- Type 'start' to run the pipeline and 'end' to stop the flow.
-
Serve the Jekyll website
cd jekyll_site jekyll serve --host 0.0.0.0 --port 4000Visit
http://localhost:4000to see the fact-checked results.
The MCP server provides three main tools that agents can call:
-
extract_claims: Extracts factual claims from news articles- Input: Article text
- Output: JSON array of claims
-
verify_claim: Verifies a claim against reliable sources- Input: Claim statement
- Output: Verification result (True/False) and source
-
generate_jekyll_post: Creates Jekyll blog posts for verified claims- Input: Statement, verification status, source
- Output: Generated Markdown file with proper Jekyll format
- Asynchronous Communication: Agents communicate asynchronously using
handle_message_async - Message Routing: Orchestrator routes messages between agents
- Error Handling: Robust error handling for failed agent communications
- State Management: Each agent maintains its own state and processing logic
- Orchestrator β Crawler: Request news articles
- Crawler β Orchestrator: Return article URLs and content
- Orchestrator β Extractor: Send articles for claim extraction
- Extractor β MCP: Call
extract_claimstool - Extractor β Orchestrator: Return extracted claims
- Orchestrator β Fact Checker: Send claims for verification
- Fact Checker β MCP: Call
verify_claimtool - Fact Checker β Orchestrator: Return verification results
- Orchestrator β Publisher: Send verified claims for publishing
- Publisher β MCP: Call
generate_jekyll_posttool
Fact_Checking_News_Aggregator/
βββ agents/ # Agent implementations
β βββ crawler_agent/ # News crawling agent
β βββ extractor_agent/ # Claim extraction agent
β βββ fact_checker_agent/ # Fact verification agent
β βββ publisher_agent/ # Publishing agent
βββ jekyll_site/ # Jekyll website
β βββ _posts/ # Generated fact-check posts
β βββ _layouts/ # Jekyll layouts
β βββ assets/ # CSS and styling
β βββ _config.yml # Jekyll configuration
βββ mcp_server.py # MCP server with external tools
βββ orchestrator.py # Main orchestrator agent
βββ run_all_agents.py # Pipeline execution script
βββ requirements.txt # Python dependencies
The crawler agent fetches news articles from configured sources and extracts relevant content.
The extractor agent uses LLM analysis to identify factual claims within articles, calling the MCP extract_claims tool.
The fact checker agent verifies each claim against reliable sources using the MCP verify_claim tool.
The publisher agent generates Jekyll blog posts for verified claims using the MCP generate_jekyll_post tool.
Jekyll automatically builds the website with the new fact-checked posts, making them available at the configured URL.
Modify the crawler agent configuration to add new news sources.
Update the fact checker agent to use different verification databases or APIs.
Customize the Jekyll theme and styling in the jekyll_site/assets/ directory.
Modify individual agent configurations to adjust their behavior and processing logic.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
Note: This system is designed for educational and research purposes. Always verify fact-checking results independently for critical applications.