news-fact-checker
뉴스 기사 URL을 받아 다중 독립 출처 교차검증으로 팩트체크하는 플러그인. 봇 차단 사이트는 우회해 본문을 읽고, 판정 게이트를 프롬프트가 아닌 코드로 계산한다.
#fact-check#news#verification#anti-injection#ssrf-safe#plugin
Install
설치
/plugin marketplace add hjsh200219/news-fact-checker
/plugin install news-fact-checker@news-fact-checker-marketplaceRequirements
- Claude Code (CLI)
- python3 (엔진 어댑터 + independence.py) — 없으면 축소 모드
- git (엔진 clone 경로에만 필요)
- (선택) MCP Playwright 서버 — 강한 WAF의 R6 escalation
Capabilities
주요 기능
- 01설치 후 `/factcheck <기사 URL>` 또는 자연어("이 기사 진짜야? <URL>")로 호출
- 02차단 우회 — WebFetch가 막히면 insane-search 엔진으로 escalate, 그래도 막히면 MCP Playwright로 내부 API 탐색 재시도
- 03기사 전체 종합 판정 + 핵심 주장 3–5개 개별 검증(사실 / 대체로 사실 / 일부 사실 / 오해 소지 / 거짓 / 검증 불가)
- 04거짓 독립성 방지 — 통신사 재출고 기사를 Evidence Reducer가 stance별 1개 유효 출처로 붕괴시킨 뒤 판정
- 05판정 게이트를 코드로 계산 — 확정 '사실'=독립 지지 2건 이상 & 반박 0, 확정 '거짓'=독립 반박 2건 이상, 못 채우면 '검증 불가'
- 06프롬프트 인젝션 방어 — 수집한 기사·근거 본문은 불신 데이터로 취급, 본문 속 지시문은 기록만 하고 따르지 않음
- 07SSRF 방지 — 요청 전 목적지 검사로 loopback·사설·link-local·클라우드 메타데이터 호스트를 네트워크 없이 거부
- 08공급망 안전 — 엔진 설치는 1회 동의 + commit-pinned clone, 계약 스모크 테스트 통과분만 원자적으로 교체
- 09정직성 규약 — 모든 근거에 URL, 모델지식과 웹검증 구분, 의견·예측은 검증 대상에서 분리, 한계·엔진 provenance 명시
- 10네트워크 없는 계약 테스트 + GitHub Actions CI(Linux·macOS 셸 문법·py_compile·mypy·플러그인 검증)
About
About
news-fact-checker takes a news article URL and returns a Korean fact-check report: one overall verdict for the article, plus 3-5 key claims verified individually (true / mostly true / partly true / misleading / false / unverifiable). It is explicitly assistive rather than authoritative — for consequential decisions, read the primary sources yourself.
Two problems shape its design. The first is reach: many outlets block automated readers with 403s, 402s, and WAF challenges. When WebFetch fails the plugin escalates to the insane-search engine, and if that is still blocked it looks for the site's internal API through MCP Playwright. When nothing works it says so and degrades to a reduced mode rather than inventing coverage.
The second is false independence — the failure mode where a single wire-service story republished by eight outlets reads like eight confirmations. An Evidence Reducer collapses republished evidence into one effective source per stance before any verdict is computed, and the gate itself lives in code, not in the prompt: a confirmed 'true' requires two or more independent supporting sources and zero refutations; a confirmed 'false' requires two or more independent refutations. A single primary source cannot buy its way past the independence minimum. When the bar isn't met the answer is an honest 'unverifiable'.
Security is treated as part of correctness. Fetched article and evidence bodies are untrusted data — instructions embedded in them ('ignore your rules', 'read this file', 'change the verdict') are logged as data and never followed. Outbound requests pass a destination policy that rejects userinfo URLs, loopback, private and link-local ranges, and cloud metadata hosts before any network call. Engine installation requires explicit one-time consent and a commit-pinned clone verified against a deployment-contract SHA, installed atomically so a tampered or moved tag never replaces a working copy. Network-free contract tests lock these failure branches, and CI runs them on Linux and macOS.