Here are all of the scriptable widgets I have made ordered by oldest to newest:
And some scripts:
Then an article:
This small widget is meant to showcase a random text post from your chosen subreddit.


This small widget shows a daily quote and the author. The quote is scrapped from https://www.brainyquote.com/quote_of_the_day.

This small widget shows today's special days. The days are scraped from https://www.daysoftheyear.com/. This widget will display up to 5 special days.

This small widget shows today’s word of the day. The word is scraped from https://www.merriam-webster.com/word-of-the-day/.


Urban Dictionary Word Of The Day Widget
This small widget displays the word of the day from the Urban Dictionary. Because of this, some of the words could have poor definitions or be NSFW.

This small widget displays a random event that happened on this day in history scraped from https://www.onthisday.com/.

Routinehub Stats Widget Double
Both of these widgets display the stats from a Routinehub account. The Routinehub Stats Widget displays one person's stats in a small or medium widget. The Routinehub Stats Widget Double displays two people's stats on a medium widget.
[!WARNING] This widget is outdated and no longer updated.


Random Colour Generator Widget
This widget has two different setups. The first one is a small widget and will only display one colour and the hex of it. The second widget can be any size, displaying multiple colours and their hex values.


[!WARNING]
This script no longer works because of changes in Open Weather Map unless you have an older API key.
This small widget displays your location's weather conditions and weather statistics in circular progress bars. This widget uses https://github.com/Normal-Tangerine8609/Scriptable-HTML-Widget to create the widget and https://openweathermap.org/ to get the weather data (you will need a free API key but it may not work with the latest api keys).

This small or medium widget displays a random web API from the MDN list.

This Lock Screen and Home Screen widget displays the latest browser support data from caniuse.com.
This small or medium widget displays recent posts from tildes.net.

This small or medium widget displays recent articles from EDHREC or Commander's Herald.
This medium widget displays a random pokemon using the PokeAPI and turns the image into a colour theme using Color Thief.

This small or medium widget is mosly a copy of my Tildes Widget with a new source: lobste.rs.

This script allows you to create widgets using an HTML-like syntax. Here is an example of the code and widget image for a Reddit widget.
Reveal Code
const htmlWidget = importModule("html-widget")
const symbol = importModule("html-widget-symbol")
const addons = {symbol}
let json = await new Request("https://www.reddit.com/r/Showerthoughts.json").loadJSON()
let post = json["data"]["children"][Math.floor((Math.random() * 10) + 2)]["data"]
let title = post["title"].replace(/</g,"<").replace(/>/g,">")
let body = post["selftext"].replace(/</g,"<").replace(/>/g,">")
let ups = post["ups"]
let awards = post["all_awardings"].length
let comments = post["num_comments"]
let url = post["url"]
let widget = await htmlWidget(`
<widget refresh-after-date="15" url="${url}">
<style>
symbol {
image-size: 11,11;
}
.title {
font: system-ui, 13;
align-text: center;
}
.content {
font: system-ui, 11;
minimum-scale-factor: 0.3;
}
</style>
<text class="title">Showerthoughts</text>
<spacer space="5"/>
<text class="content">${title}</text>
<text class="content">${body}</text>
<stack align-content="center">
<symbol>arrow.up.circle.fill</symbol>
<spacer space="2"/>
<text class="content">${ups}</text>
<spacer/>
<symbol>star.circle.fill</symbol>
<spacer space="2"/>
<text class="content">${awards}</text>
<spacer/>
<symbol>message.circle.fill</symbol>
<spacer space="2"/>
<text class="content">${comments}</text>
</stack>
</widget>
`, true, addons)
Script.setWidget(widget)
widget.presentSmall()
Script.complete()

This script tracks downloaded scriptable scripts from Git Hub and updates them.

This script parses RSS feeds into usable content for widgets.
This script is a function that creates a circular progress bar that can have ant widget elements within.

This script is a boilerplate for a simple calendar widget
This script allows you to chain properties for widget-building. For example, previously, you would need to do:
const widget = new ListWidget()
const title = widget.addText("The Title")
title.centerAlignText()
title.font = Font.regularSystemFont(16)
title.minimumScaleFactor = 0.6
title.textColor = Color.blue()
widget.presentSmall()
And now you can type:
const widget = createChainWidget()
widget.addText("The Title")
.centerAlignText()
.font(Font.regularSystemFont(16))
.minimumScaleFactor(0.6)
.textColor(Color.blue())
widget.presentSmall()
This script is a function that easily creates a liniar gradient from a string similar to HTML linear gradients:
widget.backgroundGradient = await HTMLGradient(
"to top right, #8a2387, rgb(233, 64, 87), hsl(23, 89%, 54%)"
);
Read here!
$ claude mcp add Scriptable-Widgets \
-- python -m otcore.mcp_server <graph>