Exit
  • Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
  • 한국 커뮤니티
0

How to get Bridge to recognize tags as keywords?

Contributor ,
Aug 25, 2025 Aug 25, 2025

I'm trying to switch from Picasa to Bridge as my photo organizer.  My main problem with Bridge is that it doesn't automatically recognize the tags created in Picasa as keywords. It seems to recognize them as "unassigned" keywords and displays them in the keyword panel in italics, but each one has to be right-clicked on and converted to "Persistent" to remove the italics and have the keyword entered into Bridge's library of keywords.  Since I have hundreds of keywords, that's not going to work for me.  Is there a faster way?

TOPICS
How to , Keywords
123
Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Advocate ,
Aug 26, 2025 Aug 26, 2025

You would need to use a script to read keywords from your files and add them to Bridge's library.

Try this script, I have not done extensive testing with it but it should work. Save it as PLAIN TEXT with a .jsx file extension and put it into the Bridge Scripts folder, then relaunch Bridge. Select all of your files from which to add keywords, then run this script from the Tools menu. The result will be a file on your desktop that you can import into Bridge to add keywords.

 

#target bridge
if(BridgeTalk.appName == 'bridge'){
    try{
        var KeywordCapture = new Object; //id object for this script

        var kwCap = MenuElement.create('command', 'Keyword Capture', 'at the end of Tools');

        kwCap.onSelect = function(){
            var kwList = app.document.selections;
            var i = 0; //counters
            var j = 1;
            var k = 1;
            var l = 0;
            var kw_clean = []; //optimized keywords array
            var kw_line = ''; //keyword
            var kw_tabs = []; //hierarchy depth
            var kw_leading = ''; //exported file requires tab delimiter for hierarchical keywords
            var kwCapLogFile = File(''); //file to write list to
            kwCapLogFile = new File('~/Desktop/kwCapture.txt').saveDlg('Create Keyword Capture File', '*.txt'); //create text file
            kwCapLogFile.open('w:');
            if (ExternalObject.AdobeXMPScript == undefined)  ExternalObject.AdobeXMPScript = new ExternalObject('lib:AdobeXMPScript');
            for(i = 0; i < kwList.length; i++){ //loop through selected files
                if(kwList[i].hasMetadata){ //only process files with metadata
                    k = 1;
                    kw_clean = [];
                    kw_tabs = [];
                    //XMP stores keywords in several namespaces. We don't process them all.
                    var kw = kwList[i].synchronousMetadata.read(XMPConst.NS_DC, 'subject').toString();
                    var lrkw = kwList[i].synchronousMetadata.read('http://ns.adobe.com/lightroom/1.0/', 'hierarchicalSubject').toString();
                    if(kw != '' || lrkw != ''){ //at least one namespace has keywords
                        kw = kw.split(','); //make arrays out of keyword string
                        lrkw = lrkw.split(',');
                        kw = kw.concat(lrkw); //place all keywords in one array and sort
                        kw.sort();
                        if(kw[0] != ''){
                            kw_clean[0] = kw[0];
                            }
                        else{ //flag empty keywords
                            k = 0;
                            }
                        for(j = 1; j < kw.length; j++){ //eliminate duplicates and write into new array
                            if(kw[(j - 1)] != kw[j] && kw[j] != ''){
                                kw_clean[k] = kw[j];
                                k++;
                                }
                            }
                        for(j = 0; j < kw_clean.length; j++){ //write optimized list of keywords to file
                            kw_leading = ''; //reset leading tabs
                            kw_tabs = kw_clean[j].match(/\|/g); //how deep is the hierarchy
                            if(kw_tabs != null){ //hierarchical kw
                                for(l = 0; l < kw_tabs.length; l++){
                                    kw_clean[j] = kw_clean[j].replace('|', '\r' + kw_leading + '\t'); //we process "|" as a delimiter, edit script to use others
                                    kw_leading = kw_leading + '\t'; //each new level requires one more leading tab
                                    }
                                }
                            if(kw_line != ''){
                                kw_line = kw_line + '\r' + kw_clean[j];
                                }
                            else{ //first line for file, don't add extra return
                                kw_line = kw_clean[j];
                                }
                            }
                        kwCapLogFile.writeln(kw_line); //write to file
                        kw_line = ''; //reset for next file
                        }
                    }
                }
            kwCapLogFile.close();
            kwCapLogFile.open('r:');
            var kwFin = kwCapLogFile.read();
            kwCapLogFile.close();
            kwCapLogFile.open('w:');
            kwFin = kwFin.replace(/\n\t/g, '\t');
            kwFin = kwFin.split('\n');
            kwFin = kwFin.sort();
            for(i = 0; i < kwFin.length; i++){
                if(kwFin[i] == kwFin[i + 1]){
                    kwFin[i] = '';
                    }
                }
            kwFin = kwFin.sort();
            kwFin = kwFin.join('\r');
            kwFin = kwFin.replace(/\r\r/g, '');
            kwFin = kwFin.replace(/\t/g, '\r\t');
            kwFin = kwFin.replace(/\t\r/g, '\t');
            kwCapLogFile.write(kwFin);
            kwCapLogFile.close();
            alert('Keyword capture completed');
            }
        }
    catch(e){
        alert(e + ' ' + e.line);
        }
    }

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Aug 29, 2025 Aug 29, 2025

Sorry for the delayed reply (swamped at work).  Thanks loads for taking the time to write this.  I'll try to test it out this weekend.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 28, 2025 Aug 28, 2025

The other common option beyond a script as recommended by @ExUSA is to export out all of the keywords to .txt file and then import them as keywords into Bridge.

 

https://prepression.blogspot.com/2016/08/extracting-metadata-to-csv.html

 

https://prepression.blogspot.com/2016/11/bridge-restoring-lost-keyword-xml-file.html

 

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Aug 29, 2025 Aug 29, 2025

Thanks.  I'll try that, too.

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Contributor ,
Aug 29, 2025 Aug 29, 2025

Alas, Malwarebytes won't let me go to either of those links as neither can "provide a secure connection."

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 29, 2025 Aug 29, 2025
LATEST

The links are secure HTTPS hosted by Blogger, having an SSL certificate doesn't mean much.  I don't think it says much for Malearebytes

Translate
Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines