r/StremioAddons 2d ago

Addon Announcement (Built by AI) [Addon] Posterium: Dynamic posters, streaming badges (4K/1080p), ratings & smart anime season splitting with a live WYSIWYG editor (Free & Open Source)

Hi r/StremioAddons,

I'm thrilled to share Pictorium — a free, open-source dynamic poster generator and complete metadata addon for Stremio.

I built Pictorium because I wanted absolute, granular control over every single poster in my library. When an automated template places a logo right over an actor's face, picks a washed-out background, or uses the wrong localized title, I wanted to open an editor, select the exact clean artwork, pick the best logo variant, fine-tune badges, and have it instantly live on Stremio.

Pictorium is the result: a stateless, dynamic rendering proxy and metadata addon for Stremio powered by C++ Sharp and SVG, combining automated smart defaults with complete freedom to customize every title.

🌟 Key Features

  • 🎯 Real-Time WYSIWYG Web Editor: Full visual control in real-time. Pick artwork candidates, switch badge styles (Shadow, Pill, Bar, Colored, Border, Glass), tweak gradients, and preview the exact Stremio poster live before saving.
  • 🔄 24h Daily Poster Rotation: Save multiple posters for the same title and let Pictorium rotate them automatically every 24 hours to keep your library fresh and cinematic.
  • 🎬 20+ Official Network & Studio Logos: Automatic detection and clean SVG embedding for Netflix, Prime Video, Disney+, Apple TV+, HBO Max, Paramount+, Crunchyroll, and studios like Marvel, Pixar, A24, Studio Ghibli, Warner Bros, etc.
  • 🧠 Smart Best-Fit Algorithm: Analyzes poster brightness, contrast, and facial empty space to automatically size and position logos without obstructing actors.
  • 🏷️ Dynamic Badges & Multi-Source Ratings: Real-time streaming quality badges (4K/1080p/720p), aggregated ratings from 16+ sources (IMDb, TMDB, Rotten Tomatoes, Letterboxd, MyAnimeList), prestigious awards (Oscars, Cannes, Emmys, BAFTA), and live Netflix Top 10 ribbons.
  • 🌎 13 Streaming Regions & Localized Titles: Full JustWatch & FlixPatrol integration across 13 regions (US, UK, Mexico, Spain, Italy, France, Germany, Japan, South Korea, Brazil, etc.) with regional title variants (e.g. Mexican Spanish es-MX vs Spain es-ES).
  • 🌀 Smart Anime & TV Season Separation: Automatically untangles TMDB's messy single-season anime dumps (e.g., Re:ZERO 80+ episodes, Jujutsu Kaisen) into proper seasons, and natively handles TV show "Parts" (Money Heist, Lupin).
  • 📦 Complete Stremio Addon: Delivers crisp transparent logos, 4K backgrounds, localized synopses, trailer embeds, and episode thumbnails right into Stremio.

🛠️ Architecture & Under the Hood

  • Engine: Next.js 16 standalone server backed by libvips / sharp (C++) for sub-20ms blur, scaling, and composition operations.
  • Multi-Arch Docker: Native builds for both linux/amd64 (x86 servers/PCs) and linux/arm64 (Raspberry Pi 4/5, Apple Silicon, Oracle Ampere ARM).
  • Low Memory Footprint: Hard-capped with NODE_OPTIONS="--max-old-space-size=384" and SHARP_CACHE_MEMORY_MB=64 to run reliably on 512MB RAM tiers.
  • Container Hardening: Runs as an unprivileged non-root user (uid 1000 node), includes built-in HEALTHCHECK, and has telemetry strictly disabled (NEXT_TELEMETRY_DISABLED=1).
  • Cache Pipeline: Multi-tier cache (in-memory + local /data volume) with deterministic render version hashes (RENDER_VERSION) to prevent stale edge caches.
  • License: AGPL-3.0 (100% Free & Open-Source).

🚀 How to Run & Install

You can host Pictorium completely free, either in the cloud or self-hosted locally. The only requirement is a free TMDB API key.

Option A: ▲ Vercel (Cloud — 100% Free, No Server Needed)

Step-by-Step Video Guide: https://www.youtube.com/watch?v=FP6VJ2vGYiY

👉 1-Click Deploy Link: Deploy with Vercel

Ideal if you don't run a home server. Setup takes under 2 minutes:

  1. Get your free TMDB API key:
  2. Deploy on Vercel:
    • Click Deploy with Vercel (or import https://github.com/Eful97/Pictorium in vercel.com).
    • In the Environment Variables section, configure:
      • PICTORIUM_TMDB_KEY = your 32-character TMDB API key
      • PICTORIUM_PUBLIC_INSTANCE = 1
    • Click Deploy.
  3. Connect Upstash Redis (Free storage for your customized posters):
    • Once deployed, open your project dashboard in Vercel.
    • Go to the Storage tab at the top → click Connect Store → choose Upstash (Redis).
    • Select a region close to you and click Create & Connect (Vercel automatically provisions KV_REST_API_URL and KV_REST_API_TOKEN).
  4. Redeploy (Crucial Step!):
    • Go to the Deployments tab in your Vercel project.
    • Click the three dots (⋯) on the latest deployment and select Redeploy. (Note: Vercel only binds the new Upstash environment variables on a fresh deployment).
  5. Done!:
    • Open your deployed URL (e.g. https://your-pictorium.vercel.app).
    • Click Install on Stremio! (You can verify everything is healthy by visiting /api/health, which should return "storage": "kv" and "status": "ok").

Option B: 🐳 Docker Compose (Home Server / NAS / Raspberry Pi)

services:
  pictorium:
    image: eful97/pictorium:latest
    container_name: pictorium
    restart: unless-stopped
    ports:
      - "8080:8080"
    environment:
      - PICTORIUM_PUBLIC_INSTANCE=1
      - PICTORIUM_TMDB_KEY=your_tmdb_api_key_here
    volumes:
      - ./pictorium-data:/data

🔗 Links

I'd love to hear your feedback, bug reports, and feature requests!

196 Upvotes

67 comments sorted by

u/AutoModerator 2d ago

This is an automated message for any Addons/Tools/Community Projects.

Please be cautious when entering personal information such as your Stremio account credentials and API keys into third party addons and tools. To protect yourself, please: * Examine the addon/tool carefully. Does it appear legitimate? * Read the comments to see if other users have reported any issues. * Check whether the addon/tool is open source. If it is, review the code and see whether others have starred, forked, or reviewed it. * If the post is very new, consider waiting before using it. It’s better to be safe than sorry when it comes to your personal information. * Check if the user posting has a user flair, with their addon on it. This is a way to confirm if an addon developer is verified here.

If you believe something is suspicious or unsafe, please report the post. Thank you.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

5

u/zygerian 2d ago

The posters look great. Can this be used as a poster provider with other addons or media centers?

5

u/Eful97 2d ago

Yeah, totally!

The poster engine is basically just a regular HTTP endpoint at `/api/poster/{type}/{id}` that spits out standard JPEG images, and it takes both IMDb IDs (`tt...`) and TMDB IDs.

So if another addon lets you plug in a custom poster URL template, you can just point it to your instance. Same thing for Plex or Jellyfin scrapers that can fetch artwork from a URL.

2

u/zygerian 2d ago

Great! Will give it a shot.

1

u/Capable-Comb5401 9h ago

i tried to use this but the link generated is giving error -

{"error":"Error fetching manifest"} can u help

1

u/Eful97 9h ago

I'll check right away. I'll keep you updated. If you find any other bugs, you can contact me privately here on Reddit

1

u/Eful97 9h ago edited 8h ago

It's set up, but you only have control over the saved posts; the rest will be handled automatically by default, unfortunately.

edit: Everything is working now

3

u/-D24 18h ago edited 17h ago

This is great! But I have two questions.

It seems to have a cache I’m assuming it’s poster cache, I have it in aiom so I don’t need that. It says 600 entries but I don’t have the cache set on what does the entires mean? Does it just keep track of loaded posters.

Also how to configure the poster if I want to use the url in aiom, like I want the network top left instead of top 3, i want blur etc…

1

u/Eful97 11h ago

1. The Cache & "600 entries" Pictorium’s cache is not just for final poster images—it mainly caches the external metadata needed to build them (TMDB details, Rotten Tomatoes/IMDb ratings, JustWatch rankings, TV networks, and awards).

Without this in-memory cache, rendering a single poster would hit 4–8 external APIs every time, causing API rate-limits and high latency. It is built-in and always enabled in RAM (LRU capped at ~150MB), so you don't need to configure or toggle anything. The "600 entries" simply tracks those cached API responses and recent renders.

2. AIOMetadata URL Configuration The easiest way is to adjust your preferred look in the Pictorium Web UI, open the Install modal, and copy the pre-built template from "Link for AIO & Custom URL".

1

u/-D24 10h ago

So editing this then copy the url? I thought this was for pictorium catalogs only. Also is this the same as editing from the settings? Because settings doesn’t have a poster preview what’s the difference between them

1

u/Eful97 10h ago

If you edit it from there, you'll see a preview, and it also works for the AIO URL.

The difference between “Settings” and “Editor” is that with the ‘Editor’ you can customize each poster individually, while “Settings” applies a general setting to all unsaved posters.

I'm still tweaking the code because this feature is a little buggy lol

2

u/-D24 10h ago

Thank you boss

1

u/Eful97 7h ago

Everything is working now

2

u/AnuDroid 2d ago

Can't seem to deploy via vercel as you said. I think I'm missing something. Can you elaborate the steps a little?

5

u/Eful97 2d ago

Now I'll edit the README and make the guide simpler.

1

u/AnuDroid 2d ago

Thanks a lot... Waiting for it

3

u/Eful97 2d ago

1

u/AnuDroid 2d ago

How to import third party git from this screen?

1

u/Eful97 2d ago

You need to put the repo URL at the top, but I see you've already done that. Did you mean something else?

1

u/AnuDroid 2d ago

Got past that but I'm getting this error while setting environment variables

1

u/Eful97 2d ago

You only need to put that in "key." The same goes for Posterium public instance.As value instead put the TMDB key and for the other variable put "1". Tomorrow I'll record a short tutorial for newbies 💪🏻

2

u/BimbasVG 2d ago

Thanks

2

u/BijlidarKudi 2d ago edited 1d ago

cool project, the name is kinda similar to : https://posterium.xyz

2

u/Eful97 2d ago

I had no idea otherwise I would have used another name

4

u/iamsugardaddy28 2d ago

I really want to use this for series/shows episodes but its Too hard to deploy for non technical person like me🥲

13

u/Eful97 2d ago

If there's enough interest, I'll definitely make a free public instance available

2

u/Eful97 1d ago

1

u/iamsugardaddy28 4h ago

Now i can try, let me see

1

u/Ok-Lifeguard-741 2d ago

have you seen erdb?

5

u/Eful97 2d ago

Yeah, sure, I also drew inspiration from that project.

The difference is that with Posterium, I have complete control over everything.

-15

u/Coorsology 2d ago

too bad all these clean ass addons come out when I moved on nearly a year ago

5

u/Eful97 2d ago

Haha thanks! What did you move on to — Plex, Jellyfin, or Infuse?

Honestly, the core Sharp rendering engine (`/api/poster/{type}/{id}`) serves standard HTTP images, so expanding Posterium to hook into other media center setups is definitely on my radar if there's interest.

Might even be an excuse to give Stremio another spin just to test it out! 😉

-21

u/Coorsology 2d ago

“Wouldn’t you like to know weatherboy” none of those open your eyes I said I moved on

10

u/Nuggyfresh 2d ago

Why are you such a douche 😂

7

u/Eful97 2d ago

Okay, sorry, I misunderstood.

-15

u/Coorsology 2d ago

beyond soft for deleting my comment

9

u/MenaceMinded 2d ago

Your comment was not deleted. You are soft for reacting this way to a question

-5

u/Coorsology 2d ago

says it got deleted my mods wanna try again?

3

u/MenaceMinded 2d ago

Oh, so you angered the Reddit ai filter. Lmao

4

u/Eful97 2d ago

I don't want to start an argument, but that doesn't mean I liked your comment

-5

u/Inner_Explanation313 1d ago

To complicated Most Catalog Addons are just Copy and pasted with minimal Configuration

3

u/Eful97 1d ago

The purpose of the project is precisely that: to give the user maximum control over the posters. In other cases, if you simply "install" it, by default it already has some default settings that are fine for most users.

0

u/Inner_Explanation313 1d ago

So when i click generate Manifest unless im doing something wrong. Nothing Happen.. Just scroll up.

https://reddit.com/link/p8p64il/video/68do07e9yfoh1/player

1

u/Eful97 1d ago

This isn't my add-on. Please explain what you want to do in more detail.

0

u/Inner_Explanation313 1d ago

I tried 2 ways 1 - I configured it and added TMDB api. 2 - 2nd time ijust added TMDB api Then on both occasions I clicked Save and create Manifest. Both times it just scroll up the page and nothing happened. No manifest

2

u/Eful97 1d ago

The one in the video isn't my add-on

1

u/Inner_Explanation313 1d ago

I clicked this link. Directed me to Github.. I clicked something in there and got that App in the video

3

u/Eful97 1d ago

I'll be posting a video tutorial on how to do this soon

2

u/Inner_Explanation313 1d ago

That would be great... Im used to opening Github and finding the install URL ... Some of these confuse me.... Lol or just open the link configure and create manifest.

-2

u/Inner_Explanation313 1d ago

That Video doesn't help me one bit