15 पॉइंट द्वारा GN⁺ 2025-12-08 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • RSS फ़ीड-आधारित वेब ब्राउज़िंग एक्सटेंशन बनाया गया है, ताकि उपयोगकर्ता स्वतंत्र वेबसाइटों के कंटेंट को रैंडम तरीके से खोज और रेट कर सकें
  • बटन क्लिक करते ही नई साइट दिखाई जाती है, और लाइक·डिस्लाइक·रिपोर्ट फ़ीचर के ज़रिए कम्युनिटी-आधारित रिकमेंडेशन संरचना बनती है
  • FastAPI और SQLite का उपयोग करके बैकएंड बनाया गया है, और Kagi की small web RSS सूची का इस्तेमाल कर लगभग 6 लाख पेज इंडेक्स किए गए हैं
  • विज्ञापनों या यूज़र डेटा संग्रह के बिना, केवल कम समय के लिए दिलचस्प वेब कंटेंट खोजने का अनुभव दिया जाता है
  • मौजूदा RSS रीडरों की थकान कम करने और छोटे वेब इकोसिस्टम की फिर से खोज को लक्ष्य बनाने वाला एक व्यक्तिगत प्रयोगात्मक प्रोजेक्ट

प्रोजेक्ट अवलोकन

  • RSS रीडर इस्तेमाल करने का अनुभव बोझिल लगता है, इसी समस्या-बोध से इसकी शुरुआत हुई
    • बिना पढ़े लेखों के जमा होने का दबाव, और समय-क्रम आधारित कंटेंट संरचना की अक्षमता की ओर इशारा
    • उपयोगकर्ता रैंडम तरीके से दिलचस्प लेख खोजना चाहते हैं
  • TikTok की रिकमेंडेशन पद्धति से प्रेरित होकर, छोटी वेबसाइटों के कंटेंट को रैंडम रूप से दिखाने वाली संरचना डिज़ाइन की गई
    • जब उपयोगकर्ता कंटेंट को रेट करते हैं, तो लाइक की संख्या के अनुसार उसकी दिखने की आवृत्ति बढ़ती है
    • विज्ञापनों या व्यक्तिगत डेटा संग्रह के बिना एक सरल रिकमेंडेशन एल्गोरिदम लागू किया गया

फ़ीचर और यूज़र फ़्लो

  • Firefox एक्सटेंशन के रूप में उपलब्ध, timewasterpro.xyz से डाउनलोड किया जा सकता है
  • उपयोगकर्ता बटन क्लिक करके नई वेबसाइट पाते हैं, और Upvote/Downvote/Report से रेट करते हैं
  • अकाउंट बनाना ज़रूरी है, और अगर उनके द्वारा सबमिट किया गया लिंक दूसरे उपयोगकर्ताओं में लोकप्रिय हो जाए तो Leaderboard में रैंक ऊपर जाती है
  • बैकएंड में RSS फ़ीड को समय-समय पर क्रॉल करके डेटाबेस में संग्रहीत किया जाता है
    • हर 600 सेकंड में 5 फ़ीड जाँची जाती हैं, और एक दिन में एक बार से कम आवृत्ति पर अपडेट किया जाता है
    • रिपोर्ट किए गए URL को रिव्यू क्यू में भेजा जाता है, और लाइक·डिस्लाइक की संख्या दर्ज की जाती है

तकनीकी संरचना

  • FastAPI से API लिखी गई है, और SQLAlchemy से डेटाबेस प्रबंधन किया गया है
  • डेटा स्टोरेज के लिए SQLite का उपयोग किया गया है
    • तेज़ शुरुआत और आसान बैकअप के कारण यह हॉबी प्रोजेक्ट के लिए उपयुक्त है
  • ऑथेंटिकेशन ईमेल-आधारित अकाउंट निर्माण के बाद लिंक सत्यापन तरीके से किया जाता है
    • Passkey लॉगिन भी आज़माया गया, लेकिन OSS इम्प्लीमेंटेशन की अस्थिरता के कारण यह सीमित रहा
    • JWT ऑथेंटिकेशन इस्तेमाल किया गया, लेकिन यूज़र अनुभव के लिहाज़ से इसे अक्षम माना गया
  • Kagi small web GitHub रिपॉज़िटरी की RSS सूची को डेटा स्रोत के रूप में इस्तेमाल किया गया

डिज़ाइन और यूज़र अनुभव

  • System.css लाइब्रेरी का उपयोग करके 80~90 के दशक के Apple System OS स्टाइल को लागू किया गया
    • दृश्य रूप से यह बताया गया कि यह “किसी पेशेवर सेवा” की बजाय एक व्यक्तिगत प्रयोग है
  • OS के हिसाब से कीबोर्ड शॉर्टकट अलग नहीं किए जा सके, इसलिए Alt key पर तय किया गया
  • एक्सटेंशन के manifest.json कॉन्फ़िगरेशन में ब्राउज़र-विशिष्ट ID सेट करने की समस्या आई
  • कोई analytics tool शामिल नहीं किया गया, इसलिए यूज़र फ़ीडबैक सीधे रिपोर्ट की गई समस्याओं के आधार पर जुटाया गया

आगे की योजना

  • कंटेंट को श्रेणीवार वर्गीकृत किया जाएगा, ताकि उपयोगकर्ता अपनी पसंदीदा शैली अधिक बार देख सकें
  • एक निश्चित स्तर से अधिक Downvote वाले कंटेंट को अलग क्यू में भेजने वाले फ़ीचर पर विचार किया जा रहा है
  • नए उपयोगकर्ताओं के लिए शुरुआत में ‘अच्छा कंटेंट’ पहले दिखाने वाली संरचना की ज़रूरत है
  • फ़ोटो, विज्ञान और शिल्प क्षेत्र की स्वतंत्र वेबसाइटों का विस्तार करने की इच्छा है
  • अभी लगभग 6 लाख पेज इंडेक्स हो चुके हैं, और सोर्स कोड स्थिर होने के बाद सार्वजनिक किया जाएगा

1 टिप्पणियां

 
GN⁺ 2025-12-08
Hacker News की राय
  • यह सोचना कि हर कंटेंट पढ़ना ही चाहिए, दरअसल reader UI design की खामी है

    • RSS feed को email की तरह ‘inbox’ में दिखाने का तरीका ही समस्या है

    • इसे TikTok की तरह बहने वाली ‘news की river’ के रूप में देखना चाहिए

    • सिर्फ दिलचस्प लेखों पर थोड़ी देर नज़र डालना और बाकी को बह जाने देना ही असली बात है

    • Twitter भी मूल रूप से RSS जैसी ही संरचना था — बस उसमें ‘unread’ चिह्न नहीं होता था, केवल scroll किया जाता था

    • इसलिए ‘unread item count’ counter बंद रखना बेहतर है। RSS की असली कीमत इस बात में है कि मैं क्या पढ़ना चुनता हूँ

    • अगर कोई लेख सच में बहुत अच्छा है, तो दूसरे subscriber आखिरकार उसका link share कर ही देंगे

    • मुझे ‘river’ से ज़्यादा inbox तरीका पसंद है

      • अगर feed को category के हिसाब से व्यवस्थित रखा जाए, तो ‘mark all as read’ करना मुश्किल नहीं होता
      • लेकिन जो feed बहुत ज़्यादा बार post करती हैं, उन्हें मैं तुरंत unsubscribe कर देता हूँ। रोज़ पोस्ट करने वाले blog पचते नहीं
    • मैंने भी कभी ऐसा system बनाने की कोशिश की थी जो पूरे web से अपने-आप मेरी पसंद का कंटेंट ढूँढ दे

      • आखिरकार मुझे high-quality data source की अहमियत समझ में आई, और इस निष्कर्ष पर पहुँचा कि बस कुछ अच्छे लोगों को subscribe करना ही काफी है
      • फिर जब शुरू से दोबारा सोचा, तो समझ आया कि वही तो RSS था — 2005 में ही पूरा हो चुका एक विचार
    • मुझे भी कुछ साल पहले ऐसा ही एहसास हुआ था

      • मैं पढ़े गए लेखों को track नहीं करना चाहता था, इसलिए हर RSS feed के लिए bot बनाकर Diaspora पर mirror किया
      • अब Mastodon पर आ गया हूँ, लेकिन सिद्धांत वही है — बस scroll करते हुए सिर्फ दिलचस्प चीज़ें देखना
    • Twitter पहले ऐसा था, अब नहीं है

  • लगता है कुछ लोग RSS reader का इस्तेमाल गलत तरीके से कर रहे हैं

    • RSS, YouTube channel की तरह हर कंटेंट खपा जाने का माध्यम नहीं है, बल्कि headline देखकर सिर्फ दिलचस्प लेख पढ़ने का tool है

    • TikTok तो और भी खराब है — उसकी संरचना ही ऐसी है कि अंतहीन कंटेंट stream से लोगों को बाँधे रखे

    • ऐसे लोगों के लिए नए RSS reader से बेहतर ‘read later’ list ज़्यादा उपयोगी होगी

    • TikTok का recommendation engine एक-एक कंटेंट यूनिट पर reaction नापता है, इसलिए बहुत efficient है

      • जबकि YouTube कई thumbnail में से एक चुनवाता है, इसलिए जिन 9 पर click नहीं हुआ उनकी जानकारी खो देता है
      • algorithm अपने-आप में बुरा नहीं होता, समस्या यह है कि उसे किस चीज़ के लिए optimize किया जा रहा है
      • मेरा reader भी TikTok की तरह एक बार में एक कंटेंट दिखाता है, लेकिन उसमें वे scientific paper या LLM से जुड़े लेख होते हैं जिन्हें मैंने खुद submit किया है
    • यह तय मान लेने की ज़रूरत नहीं कि कोई RSS का इस्तेमाल ‘गलत’ कर रहा है

      • बस कंटेंट consume करने का तरीका ‘अभी जो आया है उसे पढ़ना’ से बदलकर ‘जो जमा कर रखा है उसे catch up करना’ हो गया है
      • YouTube को भी इसी सिद्धांत पर इस्तेमाल किया जा सकता है
    • पहले जब मैं NetNewsWire इस्तेमाल करता था, तो unread article badge की वजह से बेचैनी होती थी

      • अगर अब फिर से इस्तेमाल करूँ, तो badge बंद कर दूँगा और 2 दिन से पुराने लेख अपने-आप read mark कर दूँगा
    • मैं 2005 version के tt-rss को customize करके इस्तेमाल कर रहा हूँ

      • कुछ feed शुरू से अंत तक पढ़ता हूँ, कुछ को बस कभी-कभी सरसरी तौर पर देखता हूँ
      • आगे चलकर recommendation system आधारित algorithmic feed जोड़ना चाहता हूँ
      • खासकर अपने पसंदीदा लेखकों की ‘star/tag की गई पोस्ट’ के आधार पर distributed recommendation feed का प्रयोग करना चाहता हूँ
    • Google Reader का ‘unread’ संकेत email जैसा दिखता था, इसलिए वह किसी ‘to-do’ की तरह महसूस होता था

      • वह सिर्फ headline scan करना नहीं, बल्कि किसी ‘काम’ जैसा लगने वाला UI था
  • बहुत से लोग RSS को web feed के सामान्य नाम की तरह इस्तेमाल करते हैं

    • असली implementation में सवाल यह होता है कि RSS, Atom, या JSON Feed में से किसे चुना जाए

    • podcast अभी भी मूल रूप से RSS पर ही चलते हैं

    • मैं सिर्फ JSON Feed इस्तेमाल करता हूँ

      • इसकी सरल संरचना की वजह से यह ज़्यादातर reader में अच्छे से काम करता है और programmatically संभालना आसान है
      • जब खुद generate करता हूँ, तो 100% JSON Feed ही इस्तेमाल करता हूँ। Atom इस्तेमाल करने की कोई खास वजह नहीं लगी
  • ज़्यादातर feed reader ऐसे लोगों ने बनाए लगते हैं जो खुद वास्तव में RSS इस्तेमाल नहीं करते

    • मैं 211 feed को लगभग 20 category में manage करता हूँ, और 13,000 cached item हैं

    • वास्तव में click करके पूरा लेख खोलने की दर सिर्फ 1~5% है

    • पूरी तरह सहमत। ऐसे कई reader हैं जिनमें filtering feature या बड़ी मात्रा में लेख संभालने की संरचना ही नहीं है

  • RSS की खूबी यह है कि यह recommendation algorithm के असर से मुक्त रहता है

    • किसी खास domain की बार-बार exposure नहीं होती, और अलग-अलग क्षेत्रों के लेख संतुलित ढंग से देखे जा सकते हैं
    • यह पारंपरिक linear information flow model की ओर वापसी जैसा लगता है
  • ऐसा project देखकर बहुत खुशी होती है

    • मुझे पहले StumbleUpon बहुत पसंद था, इसलिए ऐसी मिलती-जुलती सेवा देखकर अच्छा लगा

    • काश कोई DIGG का successor बना दे

    • पूरी तरह सहमत। यह StumbleUpon की याद दिलाता है, और साथ ही content focus खुद चुनने की सुविधा भी अच्छी लगती है

    • जानकारी के लिए, Digg हाल ही में beta version के रूप में फिर से launch हुआ है

  • मुझे RSS की non-algorithmic curation पसंद है, लेकिन ‘मज़ा’ केंद्रित curation नहीं चाहिए

    • TikTok जैसी ‘engagement’ बढ़ाने वाली संरचना से बचना चाहता हूँ
    • RSS पर लौटने की वजह यह है कि मैं अपने पसंदीदा author से सीधे जुड़ना चाहता हूँ
    • बाद में जब कंटेंट बहुत बढ़ जाए, तो algorithm द्वारा कंटेंट को संक्षिप्त करके देने वाला weekly newsletter-style curation आदर्श लग सकता है
  • कंटेंट का समयक्रम बनाए रखना या नहीं स्थिति पर निर्भर करता है

    • RSS reader या podcast में भी इस समस्या को हल करने वाले UX की कल्पना की है, लेकिन अभी तक अच्छा समाधान नहीं मिला
  • मैं Scour नाम की service सुझाता हूँ

    • यह user की रुचि और प्रासंगिकता के आधार पर लेखों को rank करता है

    • RSS feed import कर सकते हैं या 15,000 से अधिक source में search कर सकते हैं

    • इसे हज़ारों ‘unread’ item से बचाकर सिर्फ अच्छे लेख चुनकर देने वाले tool के रूप में बनाया गया है

    • दिलचस्प लगता है। जानना चाहूँगा कि क्या इसमें कुछ खास feed को blacklist करके बाहर रखने की सुविधा है

  • मैं RSS की category classification समस्या हल करने की कोशिश कर रहा हूँ

    • बहुत सी feed category field का इस्तेमाल नहीं करतीं, इसलिए description में मौजूद hashtag को parse करने वाला crawler बनाया

    • रोज़ RSS ‘inbox zero’ बनाए रखने के लिए जो blog बहुत बार post करते हैं, उन्हें unsubscribe कर देता हूँ

    • पोस्टिंग frequency और content quality अक्सर एक-दूसरे के उलट अनुपात में होती हैं

    • मैं Karakeep app से RSS subscribe करता हूँ

      • यह कंटेंट को अपने-आप save करता है और generative AI से tag बनाता है
      • इसमें condition-based RSS feed बनाई जा सकती हैं, इसलिए मौजूदा reader के साथ मिलाकर इस्तेमाल करना अच्छा है
    • मेरी website भी कई तरह का कंटेंट देती है, लेकिन ज़्यादातर reader category tag को support नहीं करते

      • इसलिए आखिरकार मैं शीर्षक में [Blog] जैसे prefix जोड़कर उन्हें अलग करता हूँ