Module:Bluesky RSS Feed
This module is a custom-designed RSS feed, designed to process a Bluesky RSS feed and output it as a template. Up to three search keywords can be input - OR rather than AND - to find posts that mention any of the keywords. A Bluesky RSS feed can be found by going to any user's page, and typing /rss at the end of the URL before hitting enter.
Usage
{{Template:Bluesky RSS Feed
|url= Bluesky RSS feed URL
|term1= Optional search term
|term2= Optional search term
|term3= Optional search term
}}
Example
{{Template:Bluesky RSS Feed
|url=https://bsky.app/profile/did:plc:ve2p3lz33ivtyikqztvsgtx3/rss
|term1=#NOISZ
}}
Will yield:
01 Mar 2026 05:12 +0000
In DEIFIED LINEAGE, experience 5 songs in two very different ways as they transcend the bounds of time. An upcoming DLC pack for NOISZ STΔRLIVHT and PROJEKT GODHAND! #NOISZ_SL #PK_GODHAND
11 Feb 2026 04:49 +0000
NOISZ SL 4.004 is now available! This version makes some additional fixes and adjustments. (Unless regressions occur, this is likely to be the last version until the next content update.) #NOISZ_SL
10 Feb 2026 14:29 +0000
NOISZ SL 4.003 is now available! This version fixes some additional issues with finale content and a bug with uncleared Recursive events. #NOISZ_SL
local capiunto = require 'capiunto'
local p = {}
function p.main(frame)
local args = frame:getParent().args
local posts = {}
local searchTerms = {}
if args.term1 or args.term2 or args.term3 then
searchTerms[1] = args.term1
searchTerms[2] = args.term2
searchTerms[3] = args.term3
else
searchTerms = {""}
end
local rss = mw.ext.externaldata.getWebData {
url = args.url
, data = {pubDate = 'pubDate', description = 'description', link= 'link'}
, format = 'xml'
}
for k, v in ipairs(rss) do
if v["description"] and v["pubDate"] and v["link"] and k > 1 then
for a, b in pairs(searchTerms) do
if string.find(v["description"],b) then
table.insert(posts, frame:expandTemplate{title = 'Bluesky RSS Feed Row', args = {description = v["description"], pubDate = v["pubDate"], link=v["link"]}})
end
end
end
end
return table.concat(posts,"")
end
return p