NFLMeta
User Guide

Install the NFLMetaCities Plex Agent

Turn your NFL library into rich, accurate metadata: titles, summaries, posters, coaches, and broadcast info. This guide is for casual users.

Works On Windows, macOS, Linux, Unraid, NAS
Needs Plex Token + NFLMeta API Key
Before You Start
  • Ask for an NFLMeta API key
  • Know your Plex server IP
  • Have a TV library ready

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.

Generated nflmeta.env

Commands (copy/paste)

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