How does PhotoStructure populate the Albums tag?
PhotoStructure’s Albums tag root is populated automatically from metadata already in your files. You don’t tag albums in PhotoStructure today β you tag them in the tool that wrote the metadata (Lightroom, digiKam, Apple Photos, Google Photos, etc.), and PhotoStructure imports them on sync.
π Album titles from metadata
PhotoStructure reads album titles from these fields, in order:
Albumβ the XMPAlbumtagCollections.CollectionNameβ MWG 2.0 Collections, written by digiKam and some other tag editorsalbumData.titleβ Google Takeoutmetadata.json(one per album directory; applies to every photo in that folder)
Nested / hierarchical albums are supported: write Vacations|Paris 2019
as the Album value (or use the nested form in MWG 2.0 Collections) and
PhotoStructure will place the photo under Albums/Vacations/Paris 2019.
The list of fields PhotoStructure reads is configurable via the
tagAlbumTitle library setting.
Google Takeout: directory-level album metadata
Google Takeout’s metadata.json sits at the album directory root, not
alongside each photo. PhotoStructure reads it once and applies the
album (title, description, date) to every sibling media file in that
folder. Per-photo .jpg.json sidecars carry their own title and
description but don’t create albums.
The filenames PhotoStructure treats as directory-level album metadata
are configurable via the tagAlbumFilenames setting (default:
["metadata.json"]).
A minimal metadata.json that PhotoStructure will pick up:
{
"albumData": {
"title": "Trip to Hawaiian Islands",
"description": "Two weeks on Kauai",
"date": {
"timestamp": "1401505479",
"formatted": "May 31, 2014, 3:04:39 AM UTC"
}
}
}
Every photo in that directory will be tagged under:
Albums / Trip to Hawaiian Islands
β¦with the description and date populating the album page.
Pipe-delimited titles produce nested albums. A metadata.json with:
{
"albumData": {
"title": "Vacations|Hawaii 2014",
"description": "Two weeks on Kauai",
"date": {
"timestamp": "1401505479",
"formatted": "May 31, 2014, 3:04:39 AM UTC"
}
}
}
β¦tags every photo in the directory under:
Albums / Vacations / Hawaii 2014
Google Takeout’s real files include additional fields (access,
geoData, enrichments, etc.) β PhotoStructure simply ignores what it
doesn’t use.
π Album descriptions and dates
When present, PhotoStructure also reads:
- Description: from
Notes(XMP) oralbumData.description(Google Takeout), controlled by thetagAlbumDescriptionsetting - Release date: from
albumData.date(Google Takeout), controlled by thetagAlbumDatesetting
These populate the description and date shown on the album page.
β οΈ CatalogSets is a keyword, not an album
Lightroom writes Collection membership to the CatalogSets XMP tag.
PhotoStructure imports CatalogSets as keywords, not as albums β you’ll
find them under the Keywords tag root, not Albums.
If you want your Lightroom Collections to appear as albums in
PhotoStructure, you need to also write them to the Album tag (or to
Collections.CollectionName). Most Lightroom users find keyword-based
browsing works well enough that they leave things as-is.
π‘ Tips
- Editing sidecars works. Tag values in
.xmp/.mie/.jsonsidecars are read on every sync. Changing an album name in a sidecar and resyncing will rename the album in PhotoStructure. - Remove an album by clearing the
Album/Collections.CollectionName/albumData.titlevalue from every member file (and its sidecars) and resyncing. - Empty tag cleanup does not delete album tags, so albums stay in
place even when their member files move between tags (see the
keepEmptyTagssetting, which defaults to["Albums"]).
See also
- Keywords β how PhotoStructure extracts keywords (including
CatalogSets) - How PhotoStructure determines capture date
- Google Takeout imports
