I tried creating a single bookmark with search word But I can’t get this to work. How can I bypass security to make it work ? Do I really have to enable debug mode ? Is it possible to switch debug mode without having to restart the browser (and discard all tabs)
Here is the code I tried
javascript:(async()=>{let t="S",n="GPT Classic",u="https://chatgpt.com/g/g-YyyyMT9XH-chatgpt-classic/?q=%25s",k="cc",g=(await PlacesUtils.bookmarks.search({parentGuid:PlacesUtils.bookmarks.toolbarGuid,title:t}))[0]?.guid||(await PlacesUtils.bookmarks.insert({parentGuid:PlacesUtils.bookmarks.toolbarGuid,title:t,type:PlacesUtils.bookmarks.TYPE_FOLDER})).guid;await PlacesUtils.bookmarks.insert({parentGuid:g,title:n,url:u}),await PlacesUtils.keywords.insert({keyword:k,url:u}),alert(`Bookmark "${n}" added to folder "${t}" with keyword "${k}"!`)})();
How exactly are you trying to run your javascript? Website javascript certainly won’t be allowed to create bookmarks. If you run the function on browser side however, then it should work fine - but then I don’t understand why it’s wrapped into javascript url.
If it’s a javascript: url because you tried to run this as bookmark itself (ie. clicking this special bookmark creates another bookmark folder and a bookmark inside it) then that’s not going to work because that’s pretty much just user provided code running in website context.
Hello, I tried pasting that into the URL bar But firefox autoremoves the “javascript:” in front. When I type it manually still, it does nothing.
So I pressed F12, went to console tab and pasted it there
It fails with “Uncaught (in promise) ReferenceError: PlacesUtils is not defined”
Here is a human readable version of this command
I’m just trying to create a bookmark with a script, so I can create the 40 or so special bookmarks with search keywords that I want, without wiping all the bookmarks like an import would. Also I want to just automate this for my OS re-installation.
javascript:(async () => { // Define variables for bookmark details let folderTitle = "S"; // The name of the folder where the bookmark will be stored let bookmarkTitle = "GPT Classic"; // The title of the bookmark let bookmarkURL = "https://chatgpt.com/g/g-YyyyMT9XH-chatgpt-classic/?q=%25s"; // URL of the bookmark, %25s is the URL-encoded version of %s let keyword = "cc"; // The keyword to access the bookmark directly from the address bar // Find or create the folder in the Bookmarks Toolbar let folderGuid = (await PlacesUtils.bookmarks.search({ parentGuid: PlacesUtils.bookmarks.toolbarGuid, // Look in the Bookmarks Toolbar title: folderTitle // Look for the folder with the given title }))[0]?.guid; // If the folder is found, get its GUID if (!folderGuid) { // If the folder doesn't exist, create it folderGuid = (await PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.toolbarGuid, // Add it to the Bookmarks Toolbar title: folderTitle, // Use the specified folder title type: PlacesUtils.bookmarks.TYPE_FOLDER // Specify that it's a folder })).guid; } // Add the new bookmark to the folder await PlacesUtils.bookmarks.insert({ parentGuid: folderGuid, // Add the bookmark inside the created folder title: bookmarkTitle, // Use the specified bookmark title url: bookmarkURL // Use the specified bookmark URL }); // Add a keyword to the bookmark for quick access await PlacesUtils.keywords.insert({ keyword: keyword, // The keyword that can be used in the address bar url: bookmarkURL // The URL associated with the keyword }); // Notify the user that the bookmark and keyword were added successfully alert(`Bookmark "${bookmarkTitle}" added to folder "${folderTitle}" with keyword "${keyword}"!`); })();
F12 opens web developer tools - the console there runs scripts in the website context - you cannot use that to access browser internals like PlacesUtils.
You need to run your script via browser console, I can’t remember a hotkey for it, but you can find it from menu > more tools… > browser console
Also, I’m not sure but there’s a chance that browser console is “read-only” in release firefox - meaning you might not be able to run anything from it. If that is the case, then open normal web developer tools (F12) and go to its settings, there’s some checkbox there to enable “browser chrome debugging” or something like that. After checking that (and reopening browser console) you can run your function from browser console.