blog-factcheck

Featured

Verify statistics and claims in blog posts by fetching cited source URLs and checking if the claimed data actually appears on the page. Extracts all load-bearing claims (statistics, product or policy claims, ranking and comparative claims, named sources), validates cited URLs before fetching, and scores match confidence (exact match 1.0, paraphrase 0.7-0.9, not found 0.0). Flags uncited claims as UNVERIFIED. Use when user says "fact check", "verify statistics", "check sources", "validate claims", "factcheck", "source verification".

Data & Documents 1,491 stars 260 forks Updated 3 days ago MIT

Install

View on GitHub

Quality Score: 99/100

Stars 20%
100
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

# Blog Fact-Check Verify statistics, claims, and source attributions in blog posts. Pure Claude pipeline with no external NLP dependencies. ## Workflow ### Step 1: Read the Blog Post Read the target file and identify all sections containing data or other load-bearing claims. ### Step 2: Extract Load-Bearing Claims Scan the full text for every claim that would need evidence if challenged. Include numeric claims and non-numeric load-bearing claims such as policy, product, ranking, methodology, legal, comparative, "best", "first", "latest", or platform-behavior statements. Build a claims list with these fields: | Field | Description | |-------|-------------| | claim_text | The exact sentence or phrase containing the claim | | claim_type | Statistic, policy, product, ranking, comparative, legal, methodology, freshness | | value | The numeric value if present (e.g., "42%", "$1.2M", "3x") | | attribution | Named source if present (e.g., "HubSpot", "Gartner 2025") | | url | Cited URL if present (from markdown link or parenthetical) | | location | Heading or line number where the claim appears | ### Step 3: Verify Cited Claims For each claim that includes a URL: 1. Validate the URL before fetching: allow `http` and `https` only, reject `localhost`, loopback, private, link-local, and reserved IPs after DNS resolution, reject `javascript:`, `data:`, and `file:` URLs, limit redirects and validate the final URL, and cap response size and timeout. 2. Fetch the source pa...

Details

Author
AgriciDaniel
Repository
AgriciDaniel/claude-blog
Created
5 months ago
Last Updated
3 days ago
Language
Python
License
MIT

Bundled in these plugins

Similar Skills

Semantically similar based on skill content — not just same category