A Stash plugin that tags each performer’s role within a scene or image, with multi-select tagging, performer-card badges, performer-to-performer relationships, per-performer rollups, group/gallery role tables, and automatic scraping from IAFD and GEVI.
New here? Start with Getting Started, which also links four ready-made starter packs (General, BDSM, Lesbian, Gay) if you’d rather import a vocabulary than build one from scratch.
Features
Full writeups for everything below live on the Features wiki page:
A Roles tab on the scene page, and the same tagging inside the Details tab on images: multi-select, creatable role tags, multiple roles per performer per item. Same behaviour exists in the details tab of images.
Relationships: link two role tags together (e.g. Protagonist ↔ Antagonist) so a scene with 3+ performers can say who did what to whom, not just who has which tag. Optionally pin a relationship to a scene marker, then click it to jump straight to that timestamp.
Role badges on performer cards, and a role-grouped rollup with a per-split percentage breakdown on the performer page - switch the rollup between Scenes/Images, filter by role/split, and bulk-apply a role to a selection.
Splits organize your role vocabulary into named groups (starts out as Main/Sub, but delete/edit/add as many as you like), each optionally with its own colour for the pill badges.
Settings → Tools → Manage roles is the one place for all role/split housekeeping - add, rename, delete, reorder (drag-and-drop, with collapsible sections), move roles between splits, and rename a role everywhere it’s already assigned, library-wide.
Export/Import: download your splits as a file, or import one - always additive, never touches anything you already have. This is also how the starter packs work.
IAFD Dictionary: the table this plugin uses to decode IAFD’s messy compound strings (Anal Facial DP DAP Squirt Swallow A2M) is user-editable, with a fallback per-word dictionary for anything not already recognized.
Scrape roles automatically from IAFD and GEVI, per scene, in bulk for a performer, or library-wide - see Scraping.
A task to auto-tag performers in Solo/Solo Male/Solo Female scenes, no scraping needed.
Optional: auto-apply a scene tag when an assigned role matches an existing tag name (case-insensitive, opt-in, with a per-role exclusion list).
Installation
Requires Stash v0.31+ (custom_fields on scenes). Windows/Mac users note: This plugin requires a python3 command on your Stash server’s PATH. More info on installing Python for your system over at the Wiki.
Docker users already have this, and can continue straight to the one-click install below.
One-click, via a plugin source (recommended)
In Stash, go to Settings → Plugins → Sources and add https://heman.codeberg.page/stash-plugins/index.yml as a source.
Role Tagger now shows up under Available Plugins, then click Install. Future updates will be delivered here.
Thanks dude! Cosplay could be a great use for it. It could be used for anything really. IAFD’s scraper offers subtext about who’s receiving a facial in a scene with a lot of performers, which could be helpful info before pressing play. BDSM enjoyers could use it for Dominant/Submissive/Switch. Themed content enjoyers could use it for Teacher/Student, Step-Father/Step-Daughter. Gay people could use it for Top/Bottom/Versatile. Possibilities are open for all of it.
Cool plugin. Any thoughts on having it apply tags to the scene when a role is assigned to a performer that matches a tag? For example, performer is assigned “Dominant” role so the tag “Dominant” also gets applied to the scene.
There is another plugin,Scene Marker Tags to Scene, which does something similar for markers.
Edit: Published an update for this. There’s a new “Auto-tag scene from assigned roles” option in plugin settings you can turn on There’s also a “Roles to never auto-tag” box to fill in if you find yourself in the situation where you want to auto tag some roles, but not others.
Thanks! Could I please get a screenshot of the issue with the role name dropdown? Just trying to figure out the visual issue (whether horizontally or vertically short, and whether there’s a theme involved). When I know more, I’ll make the bug ticket.
For the other two features, I’ve made tickets and I’ll get to them shortly
A minor issue. On the performer page, the checkbox to select multiple scenes doesn’t work. I can get around this by enabling the roles tab. This just moves the problem to that tab instead of the scene tab.
It might also be nice to be able to do bulk updates. I don’t know that I need that but typing this made me think of it.
Both tickets done, tested, and published Things to try:
Click a role badge to see who else has it. On a performer card, clicking one of their role badges (e.g. “Dominant”) now pops up every performer in your library who’s also tagged with that role. Handy for browsing “who else does this.”
Renaming a role now actually renames it everywhere. Previously, editing a role name in settings only changed the option going forward, while old scenes kept the stale name. There’s now a “Manage roles” tool under Settings → Tools where you can rename a role in place, and it rewrites every scene already using it.
Ah yes, did the task finish successfully? It took about 10 mins to do a full rename across 500 scenes for me. If it did, the logs will reveal what happened and would be really useful to me.
I think it’s best if I make a ticket to drop role management from Plugin Settings altogether and keep all role management (adding, editing, deleting) under Tools exclusively so it doesn’t live in two places.
Also another slight bug, after multi selection of scenes and application of roles, the page needs to be reloaded. Making a bug ticket for that now.
Hmm, good call. The scraper logic is only primarily Python right now. Edit: I forgot it’s used in bulk tagging (doh!). I have a bunch of plugins already, one being PythonDepManager from community scripts.
I’ll spin up another fresh instance of Stash with no other plugins and test from there to confirm if that’s needed though.
Massive splits overhaul. I got some feedback that a hard defined two-split system is restrictive, so on the latest update, any number of splits/parents can be defined.
You’ll have “Main” and “Sub” after updating, with the option to rename those, define more splits, and move your tags around.
The tag setting method via Plugin Settings has been retired and removed from the latest release, and can only be managed via Settings → Tools. It will look something like this:
This enables you to define whatever you’d like in terms of splits, and it allows you to rename tags/splits, move a tag to another split, or remove a tag/split entirely.
What the splits enable is a more fine-grained experience on a performer profile. Below example of a performer’s profile with only one scene, but there’s a lot going on in that scene.