Detect retracted articles and fake/hallucinated citations in scientific papers
Citicious is a Chrome extension that helps researchers and readers identify:
- Retracted articles - Papers that have been formally retracted by journals
- Retracted citations - References in a paper that cite retracted articles
- Fake citations - Potentially hallucinated citations (e.g., from LLM-generated content)
- Top Banner Alert - Prominent warning when viewing a retracted article
- Inline Badges - Visual indicators next to each reference
- Sidebar Panel - Detailed information about all citations on the page
- Manual DOI Check - Check any DOI directly from the popup
- Works Everywhere - Supports PubMed, Google Scholar, ScienceDirect, Nature, arXiv, and many more
- Retraction Detection: Uses the Retraction Watch Database via CrossRef API (68,000+ retracted articles)
- Citation Validation: Verifies citations against CrossRef and OpenAlex APIs
- Fake Detection: Identifies potentially hallucinated citations by checking if DOIs exist and comparing metadata (authors, year, title, journal)
┌──────────────────────────────────────────────────────────────┐
│ ⚠️ This article has been RETRACTED │
│ Retraction · Retracted: Jan 15, 2024 · Reason: Plagiarism │
│ View retraction notice → │
└──────────────────────────────────────────────────────────────┘
-
Clone the repository:
git clone https://github.com/choxos/citicious.git cd citicious -
Install dependencies and build the extension:
cd extension npm install npm run build -
Load in Chrome:
- Go to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked"
- Select the
extension/distfolder
- Go to
The extension can use a local backend for enhanced performance:
-
Set up PostgreSQL database
-
Install backend dependencies:
cd backend npm install cp .env.example .env # Edit .env with your database credentials
-
Initialize database and import Retraction Watch data:
npm run db:push npm run import:retractions ../retraction_watch.csv
-
Start the server:
npm run dev
| Status | Badge | Description |
|---|---|---|
| Retracted | Article has been formally retracted | |
| Fake | ❌ FAKE | Citation could not be verified in databases |
| Suspicious | ❓ SUSPICIOUS | Metadata discrepancies found |
| Verified | ✓ Verified | Citation confirmed valid |
| Endpoint | Method | Description |
|---|---|---|
/api/v1/check/retraction |
POST | Check if DOI/PMID is retracted |
/api/v1/check/citation |
POST | Validate citation exists & metadata |
/api/v1/check/full |
POST | Combined retraction + validation check |
/api/v1/check/batch |
POST | Batch check multiple citations |
/api/v1/health |
GET | Health check |
/api/v1/stats |
GET | Database statistics |
- Extension: Chrome Manifest V3, TypeScript, Webpack
- Backend: Node.js, Fastify, TypeScript
- Database: PostgreSQL with Prisma ORM
- External APIs: CrossRef, OpenAlex
- Retraction Watch Database - 68,000+ retracted articles, updated daily
- CrossRef API - DOI metadata and retraction notices
- OpenAlex API - Open catalog of scholarly works
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Ahmad Sofi-Mahmudi
- GitHub: @choxos
- LinkedIn: asofimahmudi
- X/Twitter: @ASofiMahmudi
- Crossref for the Retraction Watch Database API
- OpenAlex for the open scholarly metadata API
- Retraction Watch for their invaluable work in tracking retractions