| .forgejo/workflows | ||
| .env.example | ||
| .gitignore | ||
| biome.json | ||
| config.js | ||
| index.js | ||
| lefthook.yml | ||
| now-page-template.md | ||
| package-lock.json | ||
| package.json | ||
| profile-page-template.md | ||
| README.md | ||
| utils.js | ||
now-updater
Automatically updates your omg.lol Now page with your latest activity.
Fork of melanie/now-updater with added support for HTML output links, Mastodon, Last.fm, and dynamic URLs.
Demo: dylan.omg.lol/now
How It Works
Fetches content from RSS feeds, JSON feeds, and different services (Letterboxd, Trakt, Mastodon, Last.fm) and updates HTML or markdown links on your Now page. Runs every 3 hours via Forgejo Actions, only updating your page when changes are detected.
Example
Your Now page links will be automatically updated from this:
HTML links (before):
<a href="https://your-blog.com">tktk</a>
Markdown links (before):
[tktk](https://your-blog.com)
to this:
HTML links (after):
<a href="https://your-blog.com/2025/12/my-latest-post">My Latest Post</a>
Markdown links (after):
[My Latest Post](https://your-blog.com/2025/12/my-latest-post)
Setup
- Fork this repo
- Enable Actions in repo settings
- Add Actions variables:
OMGLOL_USERNAME(your omg.lol username) - Add Actions secrets:
OMGLOL_KEY(your API key),TRAKT_SLURM(optional, see Trakt for details) - Add your sources in
config.js
For local development, copy .env.example to .env with your credentials.
Basic Example
Now page template:
I wrote this: [tktk](https://your-blog.com)
I watched this: [tktk](trakt.tv/users/username)
config.js:
export const linkFormat = 'markdown'
export const items = [
{
id: 'blog',
regex: htmlLinkRegex('your-blog.com'),
getLatest: async () => getJsonFeedItemTitle('https://your-blog.com/feed.json'),
},
{
id: 'letterboxd',
regex: htmlLinkRegex('letterboxd.com/username'),
getLatest: async () => getLetterboxdActivity('username', true), // with image
},
{
id: 'trakt-movie',
regex: htmlLinkRegex('trakt.tv/users/username'),
getLatest: async () => getTraktMovie('username', 'your-trakt-id', false), // text only
},
]
Configuration
Edit config.js to define your content sources. Each item needs:
id: identifier for logsregex: pattern to match your linkgetLatest: async function that fetches and returns latest content
Set linkFormat to 'html' or 'markdown' depending on your Now page format.
Available Functions
getRSSItemTitle(feedUrl)- Standard RSS feedsgetJsonFeedItemTitle(feedUrl, showImage)- JSON feedsgetLetterboxdActivity(username, showImage)- Letterboxd activitygetTraktEpisode(username, id, showImage)- Latest TV episodegetTraktMovie(username, id, showImage)- Latest moviegetTraktEpisodeAndMovie(username, id, showImage)- Latest episode and movie combinedgetMastodonPost(feedUrl)- Latest non-reply Mastodon postgetMalojaScrobble(url)- Latest music scrobble from maloja
Notes:
showImage(defaults totrue) controls whether images/posters are included in the output. Set it tofalseto show text only.- For Last.fm, use
getRSSItemTitle('https://lfm.xiffy.nl/your-username')(via lfm.xiffy.nl)
Trakt
To get your Trakt slurm key, follow these steps:
- Go to your History page on Trakt:
https://trakt.tv/users/your-username/history - There should be an RSS feed icon on the top right of the page. Click it.
- The URL it shows will look something like this:
https://trakt.tv/users/crankle/history.atom?slurm=your-slurm-key - Copy the
slurmvalue from the URL and add it as a secret in your Actions settings namedTRAKT_SLURM.
There may be a better way to get this key, but this is how I found it.
Credits
Original project by melanie kat. Without her work, this fork would not exist.
Thank you also to xiffy for the Last.fm scrobble fetching service this uses.
Support
Did you find this useful like I did? Melanie asks that you donate to Trans Lifeline or The Trevor Project if you can. I will also add Belong To to that list.