尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗A news discovery portal: pick a newspaper, browse its latest headlines from your chosen sections, search, and open the original article on the publisher's site. Currently: Prothom Alo (Bangla), The Daily Star, The Guardian and The New York Times (English).
npm install
npm start # http://localhost:3000
npm test
server/
newspapers/ one config file per paper + index.js registry <- the only place to touch to add a paper
lib/rss.js RSS 2.0 parsing + normalisation into a common Article shape
lib/text.js sanitising (tags stripped, entities decoded, only https URLs kept)
lib/service.js fetch all feeds of a paper, merge, de-duplicate, cache (5 min), serve stale on failure
sections.js canonical sections (Bangladesh, Politics, World, …) with Bangla/English labels
index.js Express: GET /api/newspapers, GET /api/news/:id[?refresh=1], static files, CSP
lib/images.js og:image lookup for feeds without images (cached, throttled)
public/ no-build ES-module frontend (components/card.js = NewsCard, components/views.js, app.js)
The browser only talks to /api/* — newspaper sites are fetched server-side (no CORS issues, one shared cache, one place to sanitise). No API keys are needed or present.
server/newspapers/ittefaq.js:export default {
id: 'ittefaq', name: 'Ittefaq', nativeName: 'ইত্তেফাক', language: 'bn',
monogram: 'ই', brandColor: '#1b7f4b', logo: null, homepage: 'https://www.ittefaq.com.bd',
feeds: [
{ url: 'https://…/politics/rss.xml', section: 'politics' }, // section fixed per feed, or…
{ url: 'https://…/rss.xml' }, // …derived via sectionByPath (see prothom-alo.js)
],
// optional: sectionByPath
};
newspapers array in server/newspapers/index.js.The header tab, section navigation, search, caching, refresh and error handling all pick it up automatically. A paper whose feed isn't standard RSS 2.0 would need a small custom parser added to lib/rss.js.
GET /api/news returns all papers in one request; one failing paper doesn't hide the rest). Category chips (Bangladesh, Politics, World, Business, Opinion) filter it, and the By source toggle groups it per newspaper. Cards show source, category, exact time and a 1–2 sentence summary.#/daily-star/sports) is shareable.media:content / enclosure; the widest one) or, for The Daily Star (no images in its RSS), from the article's og:image tag (fetched politely: 3 at a time, cached 24 h, only for stories shown). Images are hot-linked from the publisher (referrerpolicy="no-referrer"), never copied or stored; a branded placeholder with the source initials is used when an image is missing or fails to load. They remain the publishers' copyright, so keep the link-back to the original article.sections allowlist in its config (Prothom Alo: politics + economy; The Daily Star: Bangladesh + opinion; The Guardian: Bangladesh, world, business, opinion; The New York Times: world, business, opinion). Everything else is dropped on the server, so the feed, search and Telegram alerts only cover those sections. Stories are sorted newest first and de-duplicated; up to 30 per section are kept (maxPerSection). Prothom Alo combines its RSS feed (summaries) with its official news sitemap (news_sitemap.xml, advertised in its robots.txt; ~600 recent stories, no summaries), so its sections have 20–30 stories each. Telegram alerts ignore stories older than 6 hours.While the server runs, it checks every paper every 3 minutes and sends each newly published headline (title, section, source, link; text only) to a Telegram chat.
/newbot → copy the bot token..env.example to .env, paste the token as TELEGRAM_BOT_TOKEN=.npm run telegram:chatid, paste the printed id as TELEGRAM_CHAT_ID= in .env.npm run telegram:test (you should get a message), then restart npm start.Notes: the first run only records current stories (no flood of old news); at most 8 alerts per paper per round; a paper can opt out with notify: false in its config (The Guardian and The New York Times do); seen stories are remembered in data/seen.json so restarts don't repeat alerts. Alerts only run while the server is running. .env is git-ignored and never sent to the browser.