[matrix] homeserver = "https://matrix.example.org" user_id = "@pete:matrix.example.org" password = "${PETE_PASSWORD}" pickle_key = "${PETE_PICKLE_KEY}" display_name = "Pete" data_dir = "./data" admin_room = "!adminroomid:matrix.example.org" [matrix.channels] tech = "!techroomid:matrix.example.org" politics = "!politicsroomid:matrix.example.org" gaming = "!gamingroomid:matrix.example.org" [posting] min_interval_seconds = 300 burst_cap_count = 3 burst_cap_window_seconds = 1800 daily_cap_total = 5 # hard global cap across ALL channels (rolling 24h); 0 disables [posting.round_robin] enabled = false # when true, replaces immediate posting with paced rotation interval_hours = 4 # one story per N hours, cycling through channels in sorted order [storage] db_path = "./data/pete.db" recent_window_hours = 24 [web] enabled = true listen_addr = ":8080" site_title = "Pete" base_url = "https://news.parodia.dev" # Every enabled source MUST set direct_route to a key from [matrix.channels] above. # There is no automatic classification — Pete posts each story to its configured channel. # Optional: language = "en" drops feed items whose per-item tag is # set and doesn't match (prefix). Useful for multilingual feeds like Politico # Europe that publish the same story in en / fr / de side-by-side. Items with # no language tag pass through unchanged. [[sources]] name = "The Guardian — World" feed_url = "https://www.theguardian.com/world/rss" tier = 1 poll_interval_minutes = 20 direct_route = "politics" enabled = true [[sources]] name = "The Guardian — Politics" feed_url = "https://www.theguardian.com/politics/rss" tier = 1 poll_interval_minutes = 20 direct_route = "politics" enabled = true [[sources]] name = "The Guardian — US News" feed_url = "https://www.theguardian.com/us-news/rss" tier = 1 poll_interval_minutes = 20 direct_route = "politics" enabled = true [[sources]] name = "Ars Technica" feed_url = "https://feeds.arstechnica.com/arstechnica/index" tier = 1 poll_interval_minutes = 20 direct_route = "tech" enabled = true [[sources]] name = "Time Extension" feed_url = "https://www.timeextension.com/feeds/news" tier = 1 poll_interval_minutes = 20 direct_route = "gaming" enabled = true [[sources]] name = "Pitchfork" feed_url = "https://pitchfork.com/feed/feed-news/rss" tier = 1 poll_interval_minutes = 60 direct_route = "music" enabled = true [[sources]] name = "The Quietus" feed_url = "https://thequietus.com/feed" tier = 1 poll_interval_minutes = 60 direct_route = "music" enabled = true [[sources]] name = "Consequence" feed_url = "https://consequence.net/feed/" tier = 1 poll_interval_minutes = 60 direct_route = "music" enabled = true [[sources]] name = "Brooklyn Vegan" feed_url = "https://www.brooklynvegan.com/feed/" tier = 1 poll_interval_minutes = 60 direct_route = "music" enabled = true [[sources]] name = "NME — Music" feed_url = "https://www.nme.com/news/music/feed" tier = 1 poll_interval_minutes = 60 direct_route = "music" enabled = true [[sources]] name = "BBC Newsround" feed_url = "http://feeds.bbci.co.uk/newsround/rss.xml" tier = 1 poll_interval_minutes = 30 direct_route = "kids" enabled = true [[sources]] name = "DOGO News" feed_url = "https://www.dogonews.com/articles.rss" tier = 1 poll_interval_minutes = 60 direct_route = "kids" enabled = true [[sources]] name = "Science News Explores" feed_url = "https://www.snexplores.org/feed" tier = 1 poll_interval_minutes = 60 direct_route = "kids" enabled = true [[sources]] name = "NASA for Students" feed_url = "https://www.nasa.gov/rss/dyn/educationnews.rss" tier = 1 poll_interval_minutes = 60 direct_route = "kids" enabled = true [[sources]] name = "Post-Punk.com" feed_url = "https://post-punk.com/feed/" tier = 1 poll_interval_minutes = 60 direct_route = "music" enabled = true [[sources]] name = "Naked Capitalism" feed_url = "https://www.nakedcapitalism.com/feed" tier = 1 poll_interval_minutes = 60 direct_route = "finance" enabled = true [[sources]] name = "Wolf Street" feed_url = "https://wolfstreet.com/feed/" tier = 1 poll_interval_minutes = 60 direct_route = "finance" enabled = true