Need the full technical breakdown?
See the complete capability list (every feature and environment flag):
Plex Agent Capabilities
Step 1 — Gather Your Info
1) NFLMeta API Key
Request a key from the NFLMeta admin. This key is required for metadata lookups.
2) Plex Token
Find your Plex token in the Plex server preferences file.
Windows: %LOCALAPPDATA%\Plex Media Server\Preferences.xml
macOS: ~/Library/Application Support/Plex Media Server/Preferences.xml
Linux: /var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Preferences.xml
Unraid: /mnt/user/appdata/plex/Library/Application Support/Plex Media Server/Preferences.xml
Synology: /volume1/Plex/Library/Application Support/Plex Media Server/Preferences.xml
QNAP: /share/CACHEDEV1_DATA/PlexMediaServer/Library/Application Support/Plex Media Server/Preferences.xml
TrueNAS: /mnt//PlexMediaServer/Library/Application Support/Plex Media Server/Preferences.xml
Search for PlexOnlineToken= in that file.
Tokens can rotate after re-login, app re-authorization, or server updates. If metadata stops refreshing, grab the latest token and retest.
Step 2 — Install the Scanner + Agent
Copy the files into the Plex config directory on your server. Windows is the most common setup.
Windows (common)
%LOCALAPPDATA%\Plex Media Server\Scanners\Series\NFLMetaCities.py
%LOCALAPPDATA%\Plex Media Server\Plug-ins\NFLMetaCities.bundle
Unraid
/mnt/user/appdata/plex/Library/Application Support/Plex Media Server/Scanners/Series/NFLMetaCities.py
/mnt/user/appdata/plex/Library/Application Support/Plex Media Server/Plug-ins/NFLMetaCities.bundle
Linux / macOS / Windows
.../Plex Media Server/Scanners/Series/NFLMetaCities.py
.../Plex Media Server/Plug-ins/NFLMetaCities.bundle
The base folder is the same as your Preferences.xml path.
Step 3 — Generate Your Env File
Fill in the form and download nflmeta.env. Place it next to your Plex config folder.
Step 4 — Auto-Update Plex Token (Optional)
If Plex rotates your token, run the script for your OS. It updates PLEX_TOKEN in nflmeta.env without editing by hand.
Windows (PowerShell)
$pref = "$env:LOCALAPPDATA\Plex Media Server\Preferences.xml"
$envFile = "$env:LOCALAPPDATA\Plex Media Server\nflmeta.env"
$token = (Select-String -Path $pref -Pattern 'PlexOnlineToken="([^"]+)"').Matches[0].Groups[1].Value
if (Test-Path $envFile) {
$content = Get-Content $envFile
if ($content -match '^PLEX_TOKEN=') { $content = $content -replace '^PLEX_TOKEN=.*', "PLEX_TOKEN=$token" }
else { $content += "PLEX_TOKEN=$token" }
$content | Set-Content $envFile
} else {
"PLEX_TOKEN=$token" | Set-Content $envFile
}
macOS
PREF="$HOME/Library/Application Support/Plex Media Server/Preferences.xml"
ENV_FILE="$HOME/Library/Application Support/Plex Media Server/nflmeta.env"
TOKEN="$(awk -F'"' '/PlexOnlineToken=/{print $2}' "$PREF")"
if [ -f "$ENV_FILE" ] && grep -q '^PLEX_TOKEN=' "$ENV_FILE"; then
sed -i '' "s/^PLEX_TOKEN=.*/PLEX_TOKEN=$TOKEN/" "$ENV_FILE"
else
printf '\nPLEX_TOKEN=%s\n' "$TOKEN" >> "$ENV_FILE"
fi
Linux / Unraid / NAS
PREF="/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/Preferences.xml"
ENV_FILE="/var/lib/plexmediaserver/Library/Application Support/Plex Media Server/nflmeta.env"
TOKEN="$(awk -F'"' '/PlexOnlineToken=/{print $2}' "$PREF")"
if [ -f "$ENV_FILE" ] && grep -q '^PLEX_TOKEN=' "$ENV_FILE"; then
sed -i "s/^PLEX_TOKEN=.*/PLEX_TOKEN=$TOKEN/" "$ENV_FILE"
else
printf '\nPLEX_TOKEN=%s\n' "$TOKEN" >> "$ENV_FILE"
fi
For Unraid, use /mnt/user/appdata/plex instead of /var/lib/plexmediaserver.
Docker
PREF="/config/Library/Application Support/Plex Media Server/Preferences.xml"
ENV_FILE="/config/nflmeta.env"
TOKEN="$(awk -F'"' '/PlexOnlineToken=/{print $2}' "$PREF")"
if [ -f "$ENV_FILE" ] && grep -q '^PLEX_TOKEN=' "$ENV_FILE"; then
sed -i "s/^PLEX_TOKEN=.*/PLEX_TOKEN=$TOKEN/" "$ENV_FILE"
else
printf '\nPLEX_TOKEN=%s\n' "$TOKEN" >> "$ENV_FILE"
fi
After updating the token, restart the agent and refresh the show.
Step 5 — Create the Library
- Create a TV library.
- Scanner: NFLMetaCities
- Agent: NFLMetaCities
- Media folder example:
/tv/NFL
Library name can be anything.
Step 6 — Organize Your Files
Use seasons and optional week folders.
/tv/NFL/Season 2025/Week 01/2025-09-07_Pittsburgh_at_Atlanta.mkv
/tv/NFL/Season 2005/Week 04/2005-10-02_Pittsburgh_at_San_Diego.mkv
Super Bowls go in Season Superbowls (maps to Season 0).
Step 7 — File Naming Rules
- Format:
YYYY-MM-DD_AwayCity_at_HomeCity.mkv
- Use city names, not nicknames.
- Ambiguous cities need nicknames (Giants/Jets, Rams/Chargers).
2024-09-29_Pittsburgh_at_Indianapolis.mkv
2020-09-14_Pittsburgh_at_New_York_Giants.mkv
Step 8 — Restart the Agent (Not Plex)
Restart the agent and refresh the show to pull metadata.
curl -s "http://<PLEX_IP>:32400/:/plugins/com.nflmeta.agent.cities/restart?X-Plex-Token=<PLEX_TOKEN>"
curl -X PUT "http://<PLEX_IP>:32400/library/metadata/<show_key>/refresh?force=1&X-Plex-Token=<PLEX_TOKEN>"
Step 9 — Optional: Bye Week Posters
Only show a bye week if you add a placeholder file.
Steelers_BYE.mkv
2005-10-23_Steelers_BYE.mkv
Step 10 — Troubleshooting
- No metadata? Check filename order (away/home is strict).
- Renamed files? Force refresh the episode or season.
- No posters? Ensure Cloudflare allows
/api/plex/* and /plex/*.
Agent log:
/Library/Application Support/Plex Media Server/Logs/PMS Plugin Logs/com.nflmeta.agent.cities.log