A continuously updated knowledge layer for LLMs — bridging the training cutoff gap.
Changelog fetches, synthesizes, and delivers curated knowledge updates from trusted sources, making it easy to keep LLMs informed about recent events without expensive retraining.
- 10 Source Adapters: Wikipedia, Hacker News, arXiv, Reuters, GitHub, TechCrunch, Product Hunt, WHO, PubMed, TLDR
- Gemini Synthesis: Deduplicate, classify, summarize, and compress with AI
- Quality Scoring: 0-100 score based on source reliability, freshness, and content depth
- Tiered Output: 4k tokens (Tier 1), 16k tokens (Tier 2), or full archive
- REST API: Query by domain, tier, quality, and date range
- API Key Auth: Optional authentication with rate limiting and personalization
- Usage Analytics: Track API usage and generate statistics
- TypeScript SDK: Easy integration with typed responses
# Install dependencies
pnpm install
# Set up environment
cp .env.example .env
# Edit .env and add your GEMINI_API_KEY
# Run the pipeline
pnpm pipeline| Endpoint | Method | Description |
|---|---|---|
/api/changelog |
GET | Main changelog endpoint |
/api/changelog/[domain] |
GET | Domain-specific (tech, business, science, health, politics) |
/api/auth/register |
POST | Register and get API key |
/api/auth/validate |
GET | Validate API key and check quota |
/api/user/preferences |
GET/PUT | Get/update user preferences |
/api/analytics |
GET | Usage analytics (admin only) |
| Parameter | Type | Description |
|---|---|---|
tier |
tier1 | tier2 | full |
Output tier (token budget) |
domain |
string | Filter: tech, business, science, health, politics |
since |
ISO date | Filter entries after this date |
limit |
1-100 | Maximum entries to return |
minQuality |
0-100 | Minimum quality score |
# Get all entries
curl "https://changelog-api.vercel.app/api/changelog"
# Get tech news only
curl "https://changelog-api.vercel.app/api/changelog/tech"
# Get high-quality entries
curl "https://changelog-api.vercel.app/api/changelog?minQuality=70&limit=20"
# Register for an API key
curl -X POST "https://changelog-api.vercel.app/api/auth/register"
# Use authenticated requests
curl "https://changelog-api.vercel.app/api/changelog" \
-H "Authorization: Bearer cl_xxx..."| Tier | Daily Limit | Monthly Limit |
|---|---|---|
| Free | 100 | 1,000 |
| Pro | 1,000 | 25,000 |
| Enterprise | Unlimited | Unlimited |
Install the SDK:
npm install @changelog/sdkUse in your code:
import { ChangelogClient } from '@changelog/sdk';
const client = new ChangelogClient('https://changelog-api.vercel.app');
// Get recent entries
const changelog = await client.getChangelog();
// Filter by domain
const techNews = await client.getByDomain('tech');
// Get high-quality entries
const quality = await client.getHighQuality(70);main/
├── src/
│ ├── adapters/ # 10 source adapters
│ ├── middleware/ # Auth, rate limiting, analytics
│ ├── pipeline/ # Gemini synthesis pipeline
│ ├── storage/ # JSON/Markdown output
│ ├── types/ # TypeScript definitions
│ └── config/ # Environment & source config
├── api/ # Vercel API routes
│ ├── auth/ # Register, validate
│ ├── changelog/ # Domain-specific endpoints
│ └── user/ # Preferences
├── sdk/ # TypeScript SDK package
└── scripts/ # Backfill and utilities
| Variable | Required | Description |
|---|---|---|
GEMINI_API_KEY |
Yes | Google Gemini API key |
ADMIN_API_KEY |
No | Admin key for analytics endpoint |
TIER |
No | Output tier: tier1, tier2, full (default: tier2) |
| Source | Domain | Description |
|---|---|---|
| Wikipedia | All | Current events portal |
| Hacker News | Tech | Top stories (>100 score) |
| arXiv | Science | AI/ML papers |
| Reuters | Business | Wire service news |
| GitHub | Tech | Trending repositories |
| TechCrunch | Tech | Startup & funding news |
| Product Hunt | Tech | New product launches |
| WHO | Health | Disease outbreak alerts |
| PubMed | Health | Trending research papers |
| TLDR | Tech | Newsletter summaries |
{
"version": "1.0.0",
"generatedAt": "2026-01-07T00:00:00.000Z",
"tokenCount": 3500,
"entries": [
{
"id": "abc123",
"domain": "tech",
"importance": "major",
"category": "Release",
"title": "React 20 released with native signals",
"summary": "...",
"qualityScore": 85,
"sourceUrl": "https://...",
"sourceName": "hackernews",
"publishedAt": "2026-01-06T00:00:00.000Z"
}
]
}MIT