Cara Membina "Google News" Anda Sendiri Menggunakan Suapan RSS
Google News menyajikan berbilion tajuk berita setiap hari, tetapi apakah kesannya? Manipulasi algoritma, kemerosotan privasi dan kehilangan kepercayaan telah mendorong jutaan orang mencari alternatif. Pada 2026, membina pengagregat berita sendiri bukan sahaja boleh dilakukan, malah praktikal, mampu milik dan memberikan lebih kawalan.
Panduan menyeluruh ini menerangkan cara mencipta "Google News" peribadi menggunakan suapan RSS. Daripada keputusan seni bina kepada penapisan berasaskan AI, anda akan mempelajari cara membina pengalaman berita yang berkhidmat untuk anda serta minat anda, bukannya pengiklan atau metrik penglibatan. Sama ada anda pembangun yang membina dari awal atau pengguna mahir yang memanfaatkan alat sedia ada, panduan ini memenuhi keperluan anda.
1. Mengapa Membina Pengagregat Berita Anda Sendiri?
Sebelum menyelam ke implementasi, memahami manfaat nyata memiliki saluran berita Anda:
- Kemandirian yang agoritKau yang memutuskan apa yang penting, bukan keterlibatan yang mengoptimasi AI
- Pengawetan kerahsiaanTidak ada sejarah pembacaan yang dijual kepada pengiklan atau digunakan untuk profiling
- Pelengkapan kustomisasiSumber, topik, dan presentasi Curate tepat ke preferensi Anda
- Ada iklan atau paywallsPengalaman membaca bersih berfokus pada konten, bukan monetisasi
- Langganan portableEkspor OPML berarti Anda memiliki daftar suapan Anda selamanya
- Efisiensi biaya pamfic:Persediaan RSS gratis + alat terjangkau vs multiple news langgan
Perbandingan Platform: Kawalan, Privasi dan Penyesuaian (0-100)
2. Gambaran Seni Bina: Komponen Aplikasi Berita Anda
Ini adalah arsitektur tingkat tinggi:
Seni Bina Pengagregat Berita Tersuai
Website Sumber Sumber
Situs berita, blog, press room dengan RSS feed
Dinas Serbuk Jalak Suapan Suapan
Jadwal pengambilan setiap 15-60 menit
Penyimpanan Kandungan Botak
Type-type
Lapisan Pemrosesan AI FUSTA
Angkaran, dedukasi, ranking
Mesin PenyaringName
Kata kunci, sumber, topik, prioritas
Antarmuka Pengguna
Aplikasi web, aplikasi mobile, volume email
Anda fokus pada kurasi dan konsumsi.
Penjelasan Komponen Utama
Dinas Serbuk Jalak Suapan Suapan
Pekerjaan berjadwal yang mengambil umpan RSS pada interval yang dapat dikonfigurasi (15-80 min). Menangani retries, timeout, dan logging error.
Pengurai Kandungan Ukur-Umum
Otraktasi title, author, pubDate, content, images from RSS XML. Normalisasi format feed yang berbeda (RSS 2.0, Atom, JSON Feed).
Mesin Dedulupsi
Viewed Identifikasi cerita duplikat melintasi sumber menggunakan kesamaan judul, kanonikisasi URL, dan hashing konten.
Lapisan Pemrosesan AI FUSTA
Dia menghasilkan jumlah, ekstrak entitas, nilai relevansi, deteksi sentimen. Dapat menggunakan model OpenAI, Claude, atau self-hosted.
Vigo Vigo Filtering & Ranking
Mengaplikasikan aturan yang ditentukan pengguna (kata kunci, sumber, topik) dan peringkat artikel dengan pentingnya, resensi, dan sinyal personalisasi.
Mekanisme Pengiriman
Papan dash Web, aplikasi mobile, digest email, peringatan Slack/Discord, widget yang dapat disematkan untuk situs web.
3. Panduan Pelaksanaan Langkah demi Langkah
Fasa 1: Perancangan dan Penemuan Suapan (Minggu 1)
Diet informasi Anda Ditakrifkan
Sebelum mengumpulkan umpan, jelaskan apa yang penting bagi Anda:
Templat Pengambilan Maklumat
# Categories & Priority Levels
CRITICAL (check hourly):
- Breaking news (Reuters, AP)
- Market data (Bloomberg, WSJ)
- Security alerts (Krebs, BleepingComputer)
HIGH (check 2-4x daily):
- Industry news (TechCrunch, Ars Technica)
- Competitor updates (company blogs)
- Regulatory changes (gov RSS feeds)
MEDIUM (daily digest):
- Long-form analysis (The Atlantic, Vox)
- Research papers (arXiv, Nature)
- Opinion pieces (selected columnists)
LOW (weekly roundup):
- Entertainment
- Sports
- LifestyleDiscover feed RSS berkualitas tinggi
(Inggris) Menggunakan metode penemuan ganda untuk cakupan yang komprehensif:
Alat Penemuan Suapan
# Method 1: Common URL patterns
https://reuters.com/rss
https://apnews.com/rss
https://bbc.com/news/rss
https://techcrunch.com/feed/
https://[site].com/feed.xml
# Method 2: View page source, search for:
- type="application/rss+xml"
- type="application/atom+xml"
- <link rel="alternate"
# Method 3: RSS directories
- FeedSpot (feedspot.com)
- RSS.com directory
- GitHub awesome-rss lists
# Method 4: RSS Feed Flow Auto-Detect
Paste any URL → RSS Builder → "Find Feeds"
→ Returns all discoverable feeds from that domainSumber Berita Dipercayai Terbaik dengan RSS
Reuters
Associated Press
BBC News
NPR
The Wall Street Journal
Bloomberg
TechCrunch
Ars Technica
Fasa 2: Pembangunan Bahagian Pelayan (Minggu 2-3)
Sediakan Perkhidmatan Semakan Suapan Berkala
Jadwalkan jadwal rutin pengambilan suapan dengan penanganan kesalahan yang tepat:
services/feedPoller.ts (Node.js + BullMQ)
import { Queue, Worker } from 'bullmq';
import Parser from 'rss-parser';
import Redis from 'ioredis';
const redis = new Redis(process.env.REDIS_URL);
const feedQueue = new Queue('feed-polling', { connection: redis });
const parser = new Parser();
// Add feeds to polling queue with different intervals
export async function scheduleFeedPolling(feeds: Feed[]) {
for (const feed of feeds) {
const interval = feed.priority === 'critical' ? 15 :
feed.priority === 'high' ? 60 : 240;
await feedQueue.add('fetch-feed',
{ feedUrl: feed.url, feedId: feed.id },
{ repeat: { every: interval * 60 * 1000 } }
);
}
}
// Worker processes feed fetching
const worker = new Worker('feed-polling', async (job) => {
const { feedUrl, feedId } = job.data;
try {
const feed = await parser.parseURL(feedUrl, {
headers: { 'User-Agent': 'CustomNews/1.0' },
timeout: 10000,
});
await storeFeedItems(feedId, feed.items);
return { success: true, itemsCount: feed.items.length };
} catch (error) {
console.error(`Feed fetch failed: ${feedUrl}`, error);
return { success: false, error: error.message };
}
}, { connection: redis });Implementasi penyimpanan konten
Skema yang mendukung pertanyaan dan deduktasi yang efisien:
Skema Pangkalan Data (PostgreSQL)
-- Articles table
CREATE TABLE articles (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
feed_id UUID REFERENCES feeds(id),
title TEXT NOT NULL,
url TEXT UNIQUE NOT NULL,
content_hash TEXT, -- For deduplication
published_at TIMESTAMP,
fetched_at TIMESTAMP DEFAULT NOW(),
summary TEXT, -- AI-generated
relevance_score FLOAT DEFAULT 0,
category TEXT[],
entities TEXT[], -- People, orgs, locations
sentiment TEXT, -- positive/neutral/negative
is_duplicate BOOLEAN DEFAULT FALSE,
duplicate_of UUID REFERENCES articles(id)
);
-- Indexes for performance
CREATE INDEX idx_articles_published ON articles(published_at DESC);
CREATE INDEX idx_articles_relevance ON articles(relevance_score DESC);
CREATE INDEX idx_articles_category ON articles USING GIN(category);
CREATE INDEX idx_content_hash ON articles(content_hash);
-- User preferences
CREATE TABLE user_preferences (
user_id UUID PRIMARY KEY,
preferred_categories TEXT[],
blocked_sources TEXT[],
keyword_filters JSONB,
digest_frequency TEXT DEFAULT 'daily'
);Fasa 3: Integrasi AI (Minggu 4)
Tambahkan pengangkaan bertenaga AI
Jelmakan artikel - artikel panjang ke dalam pemahaman yang dapat dipindai:
ai/summarizer.ts
import OpenAI from 'openai';
const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY });
export async function generateArticleSummary(content: string) {
const response = await openai.chat.completions.create({
model: 'gpt-4o-mini',
messages: [
{
role: 'system',
content: `You are a news summarization expert. Create a concise summary with:
1. One-sentence headline (max 15 words)
2. Three bullet points of key facts
3. Why this matters (one sentence)
Output JSON format only.`
},
{
role: 'user',
content: content.slice(0, 6000) // Stay within token limits
}
],
response_format: { type: 'json_object' },
temperature: 0.3,
});
return JSON.parse(response.choices[0].message.content);
}
// Batch processing for efficiency
export async function batchSummarize(articles: Article[]) {
const results = await Promise.allSettled(
articles.map(article => generateArticleSummary(article.content))
);
return results.map((result, i) => ({
articleId: articles[i].id,
summary: result.status === 'fulfilled' ? result.value : null,
error: result.status === 'rejected' ? result.reason : null
}));
}Logika deduplikasi yang diimplementasi oleh ling Logika deduplikasi
Hindari menunjukkan cerita yang sama dari 10 sumber yang berbeda:
lib/deduplication.ts
import { createHash } from 'crypto';
import { cosineSimilarity } from 'ml-distance';
import { embed } from 'ai';
export async function findDuplicates(newArticle: Article, existingArticles: Article[]) {
const newTitleHash = createHash('md5').update(newArticle.title).digest('hex');
// Fast path: exact title match
const exactMatch = existingArticles.find(a => a.titleHash === newTitleHash);
if (exactMatch) return { isDuplicate: true, duplicateOf: exactMatch.id };
// Slow path: semantic similarity
const newEmbedding = await embed(newArticle.title + newArticle.content.slice(0, 500));
for (const existing of existingArticles.slice(0, 100)) { // Limit search
const existingEmbedding = await embed(existing.title + existing.content.slice(0, 500));
const similarity = cosineSimilarity(newEmbedding, existingEmbedding);
if (similarity > 0.85) {
return { isDuplicate: true, duplicateOf: existing.id, similarity };
}
}
return { isDuplicate: false };
}Fasa 4: Antara Muka dan Penyampaian (Minggu 5)
Bina berita yang dashboard
Buat antarmuka intuitif untuk mengkonsumsi berita rahasiamu:
components/NewsFeed.tsx (React)
export function NewsFeed({ articles, filters }) {
const [viewMode, setViewMode] = useState('list'); // list | grid | digest
const [sortBy, setSortBy] = useState('relevance'); // relevance | time | source
const filteredArticles = useMemo(() => {
return articles
.filter(article => {
if (filters.categories.length &&
!filters.categories.some(c => article.category.includes(c))) {
return false;
}
if (filters.blockedSources.includes(article.source)) {
return false;
}
if (filters.keywords.exclude.some(k =>
article.title.toLowerCase().includes(k.toLowerCase()))) {
return false;
}
return true;
})
.sort((a, b) => {
if (sortBy === 'relevance') return b.relevanceScore - a.relevanceScore;
if (sortBy === 'time') return new Date(b.publishedAt).getTime() - new Date(a.publishedAt).getTime();
return 0;
});
}, [articles, filters, sortBy]);
return (
<div className="space-y-4">
<FilterBar
viewMode={viewMode}
setViewMode={setViewMode}
sortBy={sortBy}
setSortBy={setSortBy}
/>
{filteredArticles.map(article => (
<ArticleCard key={article.id} article={article} />
))}
</div>
);
}ULANGKAN routing waspada
¡Diberitahu tentang cerita kritis melalui saluran kesukaanmu:
services/alertRouter.ts
export async function routeAlert(article: Article, userPreferences: UserPrefs) {
const alerts: Alert[] = [];
// Critical breaking news → SMS + Push
if (article.priority === 'critical' && userPreferences.smsEnabled) {
alerts.push({
channel: 'sms',
to: userPreferences.phoneNumber,
message: `BREAKING: ${article.title}`
});
}
// High priority → Slack + Email
if (article.priority === 'high') {
if (userPreferences.slackWebhook) {
alerts.push({
channel: 'slack',
webhook: userPreferences.slackWebhook,
payload: buildSlackMessage(article)
});
}
if (userPreferences.emailEnabled) {
alerts.push({
channel: 'email',
to: userPreferences.email,
subject: article.title,
body: buildEmailBody(article)
});
}
}
// Send all alerts in parallel
await Promise.all(alerts.map(sendAlert));
}4. Lanjutan: Penapisan dan Pemeringkatan Berkuasa AI
feed RSS raw aw masih berisi kebisingan. AI mengubahnya menjadi aliran informasi presisi:
Saluran Penapisan Berbilang Lapisan
Lapisan 1: Penyaringan Sumber
Hanya penerbit yang dipercaya (kemampuan semula >85%)
Lapisan 2: Pencocokan Kata Kunci
Termasuk: AI, iklim, pasar, atau Eclude: selebriti, gosip
Lapisan 3: Dedukasi
Kumpulan cerita serupa, tunjukkan sumber terbaik
Lapisan 4: AI Ranking
Skor dengan relevansi, recensi, pentingnya
Lapisan 5: Gelung Balik Suapan Pengguna
Belajarlah dari klik, simpan, saham
Perbandingan Keberkesanan Penapisan
Algoritma Pemeringkatan AI
lib/rankingAlgorithm.ts
export function calculateRelevanceScore(article: Article, userPrefs: UserPrefs): number {
let score = 50; // Base score
// Recency bonus (max +20 points)
const hoursOld = (Date.now() - article.publishedAt.getTime()) / 3600000;
score += Math.max(0, 20 - hoursOld);
// Category match bonus (max +15 points)
const categoryMatch = article.category.filter(c =>
userPrefs.preferredCategories.includes(c)
).length;
score += Math.min(15, categoryMatch * 5);
// Source reliability bonus (max +10 points)
score += (article.sourceReliability - 70) / 3;
// Keyword match bonus (max +10 points)
const keywordMatches = article.title.toLowerCase().split(' ').filter(word =>
userPrefs.priorityKeywords.includes(word)
).length;
score += Math.min(10, keywordMatches * 2);
// Engagement signal bonus (max +5 points)
if (userPrefs.readHistory.includes(article.source)) {
score += 5;
}
return Math.min(100, Math.max(0, score));
}5. Mengoptimumkan Jumlah Kandungan dan Masa Penyampaian
Pemahaman tentang berita yang diterbitkan di Internet membantu mengoptimalkan jadwal pemungutan suara dan kebiasaan membaca Anda:
Jumlah Artikel Diterbitkan Mengikut Jam
6. Analisis Kos: Bina Sendiri atau Beli
Pemahaman tentang biaya sebenarnya dari pendekatan yang berbeda membantu Anda membuat keputusan yang terinformasi:
| Solusi | Australia | Tahunan | Biaya Tersembunyi | Best For |
|---|---|---|---|---|
| Berita Google (Free) | $0 | $0 | Keprivasian Data, iklan | Para pembaca yang suka minum |
| Pro Suapan Suapan | $8 | $96 | Fitur AI terbatas UL | Pengguna tenaga |
| Pro Inoreader | $6 | $72 | Batas kadar UDAYA pada tier bebas | Anggaran-kadar |
| RSS Feed Flow | $15 | $180 | Tak Ada yang - lutsinar | Teams & pros |
| Tersandar Sendiri (VPS) | $25 | $300 | Waktu penyelenggaraan | Pembangun |
| Platform CI Enterprise Couple | $299 | $3588 | Kontrak Kontrak lock-in | Org besar |
Anggaran Masa Pembangunan (Jam)
Pengiraan ROI
Jika Anda menghargai waktu Anda dengan $50/jam dan menyimpan 4.5 jam/minggu:
Kalkulator ROI
# Weekly time saved: 4.5 hours
# Hourly rate: $50
# Weekly value: 4.5 × $50 = $225
# Monthly value: $225 × 4.33 = $974
# Yearly value: $974 × 12 = $11,688
# RSS Feed Flow Pro cost: $15/month = $180/year
# Net yearly benefit: $11,688 - $180 = $11,508
# ROI: ($11,508 / $180) × 100 = 6,393%
# Self-hosted alternative:
# VPS cost: $25/month = $300/year
# Maintenance time: 4 hrs/month × $50 × 12 = $2,400/year
# Total cost: $2,700/year
# Net benefit: $11,688 - $2,700 = $8,988
# ROI: 333%
# Conclusion: RSS Feed Flow provides 19x better ROI than self-hosting
# when you factor in maintenance time.7. Kepuasan Pengguna: RSS Tersuai berbanding Google News
Data pengguna nyata vindia menunjukkan kesenjangan kepuasan signifikan melintasi dimensi kunci:
Metrik Kepuasan Pengguna (Skor 0-100)
8. Liputan Geografi dan Kepelbagaian Sumber
Diet berita yang seimbang termasuk sumber dari beberapa daerah untuk menghindari titik buta geografis:
| Region | Sumber TerjejakCity in Georgia, Canada | Keandalan Avg. | Suapan Saranan |
|---|---|---|---|
| Amerika Utara | 245 | 94% | Reuters, AP, NPR, WSJ |
| Eropa | 198 | 92% | BBC BBC, Guardian, Euronews, DW |
| Pasifik-Asia-Pasifik | 167 | 88% | SISKE |
| Amerika Latin | 89 | 85% | Çación |
| Afrika Timur Tengah Afrika & | 76 | 82% | Al Jazeera, Haaretz, Arab News |
Strategi Mengimbangi Bias
Untuk cakupan yang seimbang secara politik, berlangganan sumber di seluruh spektrum:
Pusat-Kiri
WARVE NPR, BBC, Guardian
Pusat
Reuters, AP, Bloomberg
Pusat-Kanan
WSJ, Financial Times, Economist
9. Aliran Kerja Automasi: Daripada Pengambilan kepada Penyampaian
Pemahaman tentang jalur pipa yang penuh membantu Anda mengoptimalkan setiap tahap:
| Langkah ke - | Frekuensi Frekuensi | Tempoh [T] | Aras Automasi Ausitas | Kegagalan |
|---|---|---|---|---|
| Jalak Suapan Suapan | Setiap 15-60 menit | 2-5s | 100% | Artikel yang hilang |
| Penguraian Kandungan Kandungan | Artikel web | [1] <1s] | 100% | Kerugian Data Andor |
| Dedukasi | Artikel web | [1] <1s] | 100% | Duplikasi kebisingan |
| AI Summarisasi | Pada-hukuman | 38-8 | 95% | Tidak ada summaries |
| Penapisan Kata Kunci Kata Kunci Kata Kunci | Real-time | [1] <1s] | 100% | Kandungan tidak relevan |
| Alert Routing | Pemicu berbasis Pemicu | [1] <1s] | 100% | Pemberitahuan tidak tertunda |
10. Penyelenggaraan dan Kelangsungan Jangka Panjang
Senarai Semak Penyelenggaraan Suku Tahunan
Kesehatan makanan Audit
Menghapus suapan dengan angka kegagalan >10% lebih dari 30 hari
Ulasan keanekaragaman sumber
Tambah sumber baru dalam kategori/region yang tidak disebutkan
Filter kata kunci kemaskini berikutan berikutan berikut
Tambahkan topik yang muncul, hapus istilah usang
Penggabungan metrik
Kenalpasti feed berforming tinggi/rendah menggunakan data click-through
Basis data OPML + Backup Cadangan OPML
Ekspor langganan, verifikasi integritas cadangan
Ulasani kinerja model AI
Periksa kualitas ringkasan, atur prompt jika diperlukan
Masalah Lazim dan Penyelesaiannya
Suapan fusapan berhenti memperbarui
Penyebab: Website org merubah URL atau struktur feed
Solusi Solusi: . . . . Gunakan RSS Feed Flow's auto-detect untuk mencari URL feed baru. Tetapkan fallback URL untuk sumber kritis.
Terlalu banyak duplikat
Penyebab: Ambang deduklikasi [D] terlalu ketat
Solusi Solusi: Ambang kesamaan yang lebih rendah dari 0.85 hingga 0.75. Tambahkan kanunisasi URL untuk menangkap variasi pengalihan.
Tidak akurat, kata - kata yang tidak akurat
Penyebab: Konfirmasi prompmen terlalu generik atau konten terlalu teknis
Solusi Solusi: Buat promps khusus kategori. Tambah beberapa contoh untuk topik kompleks. Gunakan model dengan jendela konteks yang lebih besar.
Biaya API tinggi
Penyebab: Memangkap setiap artikel
Solusi Solusi: Hanya untuk meringkas artikel prioritas tinggi.
Berita terkini yang hilang
Penyebab: Perlang waktu pengejaan penyakit terlalu lama
Solusi Solusi: Kurangi interval untuk feed kritis hingga 5-15 menit. Tambahkan jembatan RSS Twitter/X untuk sinyal real-time.
11. Cara RSS Feed Flow Mempercepat Pembangunan Anda
Bangunan dari awal mengajarkan dasar, tapi RSS Suapan Flow menyediakan infrastruktur yang sudah siap produksi:
- Penemuan umpan instan buatan buatan: Kesan semua suapan RSS secara automatik daripada mana-mana URL, tanpa carian manual
- Pipa AI pra-builtSummarization, ekstraksi entitas, analisis sentimen keluar dari kotak
- Smart bundlingKombinasikan multiple feed ke dalam aliran terpadu dengan topik atau prioritas
- Waspada yang dapat dikonfigurasiEmail, Slack, Discord, pemberitahuan SMS dengan pemicu suai
- Widget Dapat DibenamkanTampilkan berita terakuratis Anda di situs web, blog, atau dashboard internal
- OPML import/exportPindah dari berkas Feedly, Inoreader, atau Google Reader seketika
- Pemantauan kesehatan dari Suapan Dana danaPeringatan otomatis ketika sumber turun atau mengubah struktur
- Tim kerja kerja samaKongsi feed yang digratiskan dengan rekan, klien, atau komunitas
12. Soalan Lazim
13. Kesimpulan: Miliki Saluran Maklumat Anda
Membina "Google News" sendiri pada 2026 kini lebih mudah daripada sebelumnya. Sama ada anda memilih untuk membina sendiri (60 jam pembangunan) atau menggunakan RSS Feed Flow (60 minit persediaan), hasilnya sama: pengalaman berita yang disesuaikan dengan minat, nilai dan masa tumpuan anda.
Data ini jelas: RSS suai aggregator pengiriman Relevansi konten 91%Untuk Google News, dengan Kepercayaan privasi 96% berbanding 28%. Dalam zaman manipulasi algoritma dan kapitalisme pengawasan, memiliki aliran maklumat sendiri bukan sekadar memudahkan, malah suatu keperluan.
Mulailah dari kecil: ambil 5 sumber terpercaya, atur penyaringan dasar, dan baca selama seminggu. kemudian iterate: tambahkan AI summarization, kembangkan daftar sumber anda, konfigurasikan peringatan. dalam sebulan, anda akan bertanya-tanya bagaimana anda pernah mentoleransi feed berita algoritmik.
Bersedia untuk Membina Pengalaman Berita Peribadi Anda?
Mulakan dengan percubaan percuma RSS Feed Flow tanpa memerlukan kad kredit. Import suapan pertama anda dalam beberapa minit, bukan beberapa minggu.
Metodeologi Infologa: Analisis aviasi berbasis pengujian 15+ platform agregasi berita, survei pengguna daya 500+, dan mengukur kinerja di seluruh 200+ sumber berita. Waktu pengembangan perkiraan dari 12 implementasi dunia nyata.Data dikumpulkan Q1 2026.