Metadata Importing
How to import metadata from sidecar files, EXIF, ID3 tags, video metadata, and document properties into Nomad Media assets.
Nomad Media supports multiple methods for importing metadata into assets:
- Sidecar Metadata Files - JSON files placed alongside media assets
- EXIF Metadata - Embedded metadata from image files (JPEG, TIFF, etc.)
- ID3 Tags - Embedded metadata from audio files (MP3, M4A, etc.)
- Video Metadata - Embedded metadata from video files via MediaInfo
- Document Properties - Embedded metadata from document files (PDF, Office docs, etc.)
All metadata import methods share a unified processing system that supports:
- Mapping source metadata keys to custom attributes
- Mapping to special fields (tags, collections, language, dates)
- Type validation and automatic conversion
- Lookup value resolution (by ID or title)
- Configurable tag auto-creation per mapping
- Value splitting with delimiters
- Consistent error handling and logging
Mapping Configuration ReferenceAll metadata import methods use the same mapping configuration model. See the Metadata Mapping Reference for detailed information about:
- Mapping properties (
sourceKey,customMetadataProperty,createNewContentRecord,splitByDelimiter)- Special target properties (tags, collections, language, dates)
- Tag auto-creation behavior
- Value splitting with delimiters
- Type validation and conversion
- Lookup resolution
- Error handling
Sidecar Metadata Files
Sidecar files with metadata properties can be imported automatically. This is most often used when external metadata exists for the media but is not contained within the media file itself — for example, dates, locations, tags, or other metadata that is commonly added to media in this fashion.
Rules
The following rules must be followed:
- The metadata file must exist in the same folder as the associated asset.
- For file assets, the metadata file must be named with the same name as the asset file, with
.metadataappended to the end. For example:image.jpg→image.jpg.metadatacool-contents.json→cool-contents.json.metadata
- Folder assets are also supported. For a folder asset, place the metadata file inside the folder and name it after the folder, with
.metadataappended. For example:content/videos/videos.metadata→content/videos/2024/january/january.metadata→2024/january/a/b/c/c.metadata→a/b/c/
- The contents of the metadata file are in JSON format as a single dictionary (see File Format below).
Additionally:
- A job runs every 5 minutes to scan for metadata files.
- When a metadata file is found, the system looks for the associated asset by removing
.metadatafrom the filename and searching the same folder. This supports both standard file assets and folder assets whose metadata file matches the containing folder name. If no matching asset is found, the metadata file is ignored. - When the file matches, the system opens and parses the metadata file contents.
- After the metadata is successfully attached to the asset, the metadata file is moved to the
metadata-archivebucket and associated as a related asset of the original file. - Metadata is stored in the internal
customPropertiesattribute of the file manifest, except for the specific fields noted in the table below. All custom key values are merged into the search record for the asset. - The metadata file is then removed from the folder and will no longer appear in the UI. It remains accessible as a related asset of the original file for historical purposes.
Configuration
To enable automatic sidecar metadata file processing, set processMergeMetadataAssets to true in the nomadApplication section of the system configuration:
"application/nomadSettings": {
"processMergeMetadataAssets": true,
"mergeMissingMetadataFields": false
}Configuration Options:
processMergeMetadataAssets- Enable/disable sidecar metadata file processingmergeMissingMetadataFields- Iftrue, ignores fields that don't exist in custom attributes; iffalse, returns an error for unknown fields
File Format
The metadata file is a JSON file with the .metadata extension, containing a single dictionary:
{
"key1": "key1-value",
"key2": "key2-value"
}Notes about entries:
- Each key is compared against the
propertyNamefield in the Asset Metadata definition — the property name must exist or an error will be returned (unlessmergeMissingMetadataFieldsistrue). - The value's data type (boolean, date, guid, string, number) must match the field type or an error will be returned. For example, boolean values must be
trueorfalse; date values should use standard JSON format like"2025-10-06T14:00:00Z". - Dropdown choices (single and multi-select) accept either the record ID or the title string. Using the record ID guarantees an exact match. Titles are matched exactly against the content definition's record list — if the title is not found, an error is returned.
Special Fields
The following keys are handled differently and are not stored in customProperties:
| Key | Notes |
|---|---|
tags | Can be a single value or a list. Each value can be a string or ID. String values are looked up against existing tags for an exact match. Missing tags are not automatically created from sidecar files. |
collections | Can be a single value or a list. Each value can be a string or ID. String values are looked up against existing collections for an exact match. Invalid IDs or unmatched strings are ignored. Importing metadata does not create new collections automatically. |
createdDate | Overwrites the system createdDate property (normally auto-retrieved from S3). |
lastModifiedDate | Overwrites the system lastModifiedDate property (normally auto-updated on every asset update). |
language | Overwrites the system language property. Must be a UUID matching an existing language in the system language list. |
EXIF Metadata Import
EXIF (Exchangeable Image File Format) metadata is automatically extracted from image files during asset processing. You can configure which EXIF fields map to custom attributes or special fields.
Configuration
Add EXIF import mappings to your system configuration:
"application/exifMetadataImportSettings": {
"importMappings": [
{
"sourceKey": "Make",
"targetProperty": "cameraMake",
"createNewContentRecord": false
},
{
"sourceKey": "Model",
"targetProperty": "cameraModel",
"createNewContentRecord": false
},
{
"sourceKey": "Keywords",
"targetProperty": "tags",
"createNewContentRecord": true,
"splitByDelimiter": ","
},
{
"sourceKey": "DateTimeOriginal",
"targetProperty": "createdDate",
"createNewContentRecord": false
}
]
}Mapping Configuration
See the Metadata Mapping Reference for complete details on mapping properties including splitByDelimiter for handling multi-value fields.
Common EXIF Fields
| EXIF Field | Description | Example Value |
|---|---|---|
Make | Camera manufacturer | "Canon" |
Model | Camera model | "EOS 5D Mark IV" |
DateTimeOriginal | Original capture date/time | "2024:03:15 14:30:00" |
Keywords | Keyword tags (array) | ["landscape", "sunset"] |
Copyright | Copyright information | "© 2024 Company Name" |
Artist | Creator/photographer | "John Doe" |
ImageDescription | Image description | "Sunset over mountains" |
GPSLatitude | GPS latitude | 37.7749 |
GPSLongitude | GPS longitude | -122.4194 |
Special Field Mapping Example
EXIF metadata can map to special fields like tags:
{
"sourceKey": "Keywords",
"targetProperty": "tags",
"createNewContentRecord": true,
"splitByDelimiter": ","
}This mapping will:
- Extract the
KeywordsEXIF field - Split the value by comma if it's a string (e.g., "landscape, sunset, mountains")
- For each keyword, find or create a tag (because
createNewContentRecordis true) - Attach all tags to the asset
ID3 Metadata Import (Audio)
ID3 tags are automatically extracted from audio files (MP3, M4A, etc.) during asset processing. Configure which ID3 fields map to custom attributes or special fields.
Configuration
Add ID3 import mappings to your system configuration:
"application/id3MetadataImportSettings": {
"importMappings": [
{
"sourceKey": "TIT2",
"targetProperty": "songTitle",
"createNewContentRecord": false
},
{
"sourceKey": "TPE1",
"targetProperty": "artist",
"createNewContentRecord": false
},
{
"sourceKey": "TALB",
"targetProperty": "album",
"createNewContentRecord": false
},
{
"sourceKey": "TCON",
"targetProperty": "tags",
"createNewContentRecord": true
}
]
}Common ID3 Frame IDs
| ID3 Frame | Description | Example Value |
|---|---|---|
TIT2 | Title/Song name | "Bohemian Rhapsody" |
TPE1 | Lead artist/Performer | "Queen" |
TALB | Album/Movie/Show title | "A Night at the Opera" |
TYER | Year | "1975" |
TCON | Content type/Genre | "Rock" |
COMM | Comments | "Remastered 2011" |
TCOP | Copyright message | "© 1975 EMI" |
TPUB | Publisher | "EMI Records" |
Video Metadata Import
Video metadata is extracted from video files using MediaInfo during asset processing. This includes technical metadata from General, Video, and Audio tracks.
Configuration
Add video metadata import mappings to your system configuration:
"application/videoMetadataImportSettings": {
"importMappings": [
{
"sourceKey": "General - Title",
"targetProperty": "videoTitle",
"createNewContentRecord": false
},
{
"sourceKey": "General - Performer",
"targetProperty": "performer",
"createNewContentRecord": false
},
{
"sourceKey": "General - Genre",
"targetProperty": "tags",
"createNewContentRecord": true
},
{
"sourceKey": "Video - Format",
"targetProperty": "videoCodec",
"createNewContentRecord": false
}
]
}Common Video Metadata Fields
Video metadata fields are prefixed with the track type:
| Field | Description | Example Value |
|---|---|---|
General - Title | Video title | "My Video" |
General - Performer | Performer/Artist | "John Doe" |
General - Genre | Genre | "Documentary" |
General - Recorded_Date | Recording date | "2024-03-15" |
Video - Format | Video codec | "AVC" |
Video - Width | Video width in pixels | "1920" |
Video - Height | Video height in pixels | "1080" |
Audio - Format | Audio codec | "AAC" |
Audio - Channels | Audio channel count | "2" |
Document Metadata Import
Document properties are extracted from document files (PDF, Office documents, etc.) during asset processing.
Configuration
Add document metadata import mappings to your system configuration:
"application/documentMetadataImportSettings": {
"importMappings": [
{
"sourceKey": "Title",
"targetProperty": "documentTitle",
"createNewContentRecord": false
},
{
"sourceKey": "Author",
"targetProperty": "author",
"createNewContentRecord": false
},
{
"sourceKey": "Subject",
"targetProperty": "subject",
"createNewContentRecord": false
},
{
"sourceKey": "Keywords",
"targetProperty": "tags",
"createNewContentRecord": true,
"splitByDelimiter": ","
}
]
}Common Document Properties
| Property | Description | Example Value |
|---|---|---|
Title | Document title | "Q4 2024 Report" |
Author | Document author | "Jane Smith" |
Subject | Document subject | "Financial Analysis" |
Keywords | Document keywords | "finance, quarterly, 2024" |
Comments | Document comments | "Draft version" |
CreatedDate | Creation date | "2024-03-15T10:00:00Z" |
ModifiedDate | Last modified date | "2024-03-16T14:30:00Z" |
See Also
- Metadata Mapping Reference - Complete reference for mapping configuration, type validation, lookup resolution, and error handling
- Metadata Import Configuration - Configuration guide for EXIF, ID3, video, and document metadata import
