A powerful Jellyfin plugin that automatically creates and maintains dynamic collections based on flexible criteria. This enhanced fork extends the original Smart Collections plugin with advanced boolean expression support and comprehensive filtering options.
The Auto Collections plugin enables you to create smart collections that automatically update as your library changes. Collections can be based on simple criteria or complex boolean expressions, allowing for highly specific and dynamic organization of your media library.
- Quick Setup: Easy-to-use interface for basic collections
- Single Criterion: Each collection uses one matching criterion
- Media Filtering: Filter by Movies, TV Shows, or All content
- Case Control: Configurable case-sensitive matching
- Boolean Logic: Combine multiple criteria with AND, OR, NOT operators
- Complex Expressions: Use parentheses for grouping and nested logic
- Multiple Criteria: Combine different types of filters in one collection
- Title: Match by words or phrases in titles
- Genre: Group content by genre
- Studio: Collect content from specific studios
- Actor: Find all content featuring specific actors
- Director: Group content by director
- Tag: Match items with specific tags
- Production Location: Filter by country/region of origin
- Movie: Include only movies
- Show: Include only TV series
- All: Include both movies and TV shows
- Parental Rating: Filter by age ratings (G, PG, PG-13, R, etc.)
- Community Rating: Match by user community ratings (0-10 scale)
- Critics Rating: Filter by professional critic scores
- Custom Rating: Use Jellyfin's custom rating field (supports numeric comparisons)
- Audio Language: Match content by audio track language
- Subtitle Language: Filter by available subtitle languages
- Year: Match by production/release year
- Release Date: Filter by release date with day-based comparisons
- Added Date: Match by date added to library
- Episode Air Date: For TV shows, match by most recent episode air date
- Unplayed: Match items not watched by any user
- Unwatched: Alias for Unplayed
- Watched: Match items played by at least one user
Advanced collections support complex boolean expressions:
(STUDIO "Marvel" AND GENRE "Action") OR (DIRECTOR "Christopher Nolan" AND COMMUNITYRATING ">8.0")
Here are the REAL keywords you can use in expressions:
Content Criteria:
TITLE- Match by titleGENRE- Match by genreSTUDIO- Match by studioACTOR- Match by actorDIRECTOR- Match by directorTAG- Match by tag
Media Type Criteria:
MOVIE- Match only moviesSHOW- Match only TV shows
Rating Criteria:
PARENTALRATING/PARENTAL/RATING- Match by parental ratingCOMMUNITYRATING/USERRATING- Match by community ratingCRITICSRATING/CRITICS- Match by critics ratingCUSTOMRATING/CUSTOM- Match by custom rating
Location & Language Criteria:
PRODUCTIONLOCATION/LOCATION/COUNTRY- Match by production locationLANG- Match by audio languageSUB- Match by subtitle language
Temporal Criteria:
YEAR- Match by production yearRELEASEDATE/RELEASE- Match by release date (day-based)ADDEDDATE/ADDED- Match by date added to library (day-based)EPISODEAIRDATE/EPISODEAIR/LASTAIR- Match by episode air date (TV shows)
Play State Criteria:
UNPLAYED/UNWATCHED- Match unplayed itemsWATCHED- Match watched items
Logical Operators:
AND- Both conditions must be trueOR- Either condition can be trueNOT- Negate a condition
Grouping:
(and)- Parentheses for expression grouping
Support for comparison operators in numeric fields:
COMMUNITYRATING ">8.5"- Greater than 8.5YEAR ">=2000"- From year 2000 onwardsCRITICSRATING "<=75"- Critics rating 75 or belowCUSTOMRATING "=7"- Exactly 7
Day-based comparisons for temporal criteria:
RELEASEDATE ">30"- Released within last 30 daysADDEDDATE "<=7"- Added to library within last 7 daysEPISODEAIRDATE ">14"- TV episodes aired within last 14 days
- Automatic Sync: Collections update every 24 hours via scheduled task
- Manual Trigger: Update collections on-demand from the web interface
- Real-time Maintenance: Collections stay current as library changes
- Auto-Sorting: Items sorted by production year and premiere date
- Deduplication: Prevents duplicate entries in collections
- Image Assignment: Automatically sets collection artwork from content
- Smart Naming: Intelligent default collection names based on criteria
- JSON Export: Backup your collection configurations
- JSON Import: Restore configurations or share with others
- Merge Support: Add new collections without overwriting existing ones
- Validation: Automatic expression validation during import
- REST API: Programmatic access to collection management
- Automation Ready: Integrate with external scripts and tools
- Configuration Endpoints: Full API for configuration management
- Legacy Support: Migrates from old tag-based system
- Configuration Preservation: Maintains existing setups during updates
- Version Safety: Safe upgrades without data loss
- Syntax Checking: Real-time validation of boolean expressions
- Error Reporting: Detailed error messages for invalid expressions
- Auto-Correction: Fixes common typos in expressions
- In Jellyfin, go to
Dashboard -> Plugins -> Catalog - Add repository:
@KeksBombe (Auto Collections) - Repository URL:
https://raw.githubusercontent.com/KeksBombe/jellyfin-plugin-auto-collections/refs/heads/main/manifest.json - Click "Save"
- Search for "Auto Collections" and install
- Restart Jellyfin
- Navigate to
Dashboard -> Plugins -> My Plugins -> Auto Collections - Choose match type: Title, Genre, Studio, Actor, or Director
- Set media type filter: All, Movies only, or Shows only
- Enter search string
- Configure case sensitivity
- Set custom collection name (optional)
- Click "Save" and "Sync Auto Collections"
-
Scroll to "Advanced Collections" section
-
Enter collection name
-
Build boolean expression using the following REAL keywords:
Content Metadata Filters:
TITLE "text"- Match items with "text" in the titleGENRE "name"- Match items with "name" genreSTUDIO "name"- Match items from "name" studioACTOR "name"- Match items with "name" actorDIRECTOR "name"- Match items with "name" directorTAG "tag"- Match items with "tag" in their tagsPRODUCTIONLOCATION "location"/LOCATION "location"/COUNTRY "location"- Match items by production country/location
Rating Filters:
PARENTALRATING "rating"/PARENTAL "rating"/RATING "rating"- Match items with specific parental rating (e.g., "PG-13", "R")COMMUNITYRATING "value"/USERRATING "value"- Match items by community rating (supports comparison operators)CRITICSRATING "value"/CRITICS "value"- Match items by critics rating (supports comparison operators)CUSTOMRATING "value"/CUSTOM "value"- Match by custom rating (string match or numeric comparisons if numeric)
Language & Media Filters:
LANG "language"- Match items by audio languageSUB "language"- Match items by subtitle language
Temporal Filters:
YEAR "value"- Match items by production/release yearRELEASEDATE "value"/RELEASE "value"- Match items by release date with day-based comparisonsADDEDDATE "value"/ADDED "value"- Match items by date added to library with day-based comparisonsEPISODEAIRDATE "value"/EPISODEAIR "value"/LASTAIR "value"- Match by most recent episode air date (for TV shows)
Play State Filters:
UNPLAYED/UNWATCHED- Match items that have not been played by any userWATCHED- Match items that have been played by at least one user
Logic Operators:
-
AND- Both conditions must be true -
OR- Either condition can be true -
NOT- Negate a condition -
Use parentheses
()for grouping expressions -
Case Sensitive: Choose whether the matches should be case-sensitive (optional)
-
Click "Save" and then "Sync Auto Collections"
GENRE "Action" AND COMMUNITYRATING ">7.0"- High-rated action contentSTUDIO "Pixar" OR DIRECTOR "Hayao Miyazaki"- Animated family content
(GENRE "Comedy" AND YEAR ">=2020") OR (GENRE "Drama" AND CRITICSRATING ">80")- Recent comedies or critically acclaimed dramasMOVIE AND COMMUNITYRATING ">8.0" AND NOT GENRE "Documentary"- Highly rated movies excluding documentaries
PRODUCTIONLOCATION "Japan" AND (GENRE "Animation" OR LANG "Japanese")- Japanese animated contentLANG "French" AND NOT SUB "English"- French content without English subtitles
MOVIE AND UNPLAYED AND COMMUNITYRATING ">7.5"- Unwatched high-rated moviesSHOW AND WATCHED AND GENRE "Drama"- Watched drama series
First-time users receive example collections:
- Marvel Universe (Title match)
- Star Wars Collection (Title match)
- Harry Potter Series (Title match)
- Marvel Action (Advanced expression)
- Spielberg or Nolan (Advanced expression)
- Tom Hanks Dramas (Advanced expression)
- Frequency: Every 24 hours
- Manual Execution: Available in
Dashboard -> Scheduled Tasks - Progress Tracking: Real-time progress during execution
POST /AutoCollections/AutoCollections- Trigger collection syncGET /AutoCollections/ExportConfiguration- Export configuration as JSONPOST /AutoCollections/ImportConfiguration- Import configuration (overwrite)POST /AutoCollections/AddConfiguration- Add configuration (merge)
{
"TitleMatchPairs": [
{
"TitleMatch": "Marvel",
"CollectionName": "Marvel Universe",
"CaseSensitive": false,
"MatchType": 0,
"MediaType": 0
}
],
"ExpressionCollections": [
{
"CollectionName": "High Rated Action",
"Expression": "GENRE \"Action\" AND COMMUNITYRATING \">8.0\"",
"CaseSensitive": false
}
]
}Collections automatically receive artwork from:
- Person Images: For actor/director-based collections
- Content Posters: From items within the collection
- Smart Selection: Prioritizes high-quality images
- Jellyfin: Version 10.9.9.0 or later
- .NET: Compatible with Jellyfin's runtime
- Permissions: Plugin requires collection management permissions
- Check syntax: Ensure proper quotes around values
- Validate operators: Use correct AND/OR/NOT spelling
- Verify parentheses: Ensure balanced grouping
- Run manual sync from plugin settings
- Check scheduled task execution
- Verify library scan completion
- Ensure valid JSON format
- Check for special characters in expressions
- Validate collection names are unique
- Parse Errors: Detailed error reporting for invalid expressions
- Logging: Comprehensive logging for troubleshooting
- Validation: Real-time expression validation
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
This project maintains the same license as the original Smart Collections plugin by johnpc.
- Original Plugin: johnpc/jellyfin-plugin-smart-collections
- Enhanced Fork: KeksBombe/jellyfin-plugin-auto-collections
- Community: Thanks to all contributors and users
Note: All images in this repository are mock-up examples for demonstration purposes only. No copyrighted material is included or referenced.