← Back to context

Comment by joemi

20 hours ago

> - Dumping all open Safari tabs to an Obsidian doc

I'd love to do this too. Would you mind sharing how you do it? Or is it trivially easy and not worth explaining? (I haven't looked too deeply into HS yet.)

It's not trivial, but roughly: use AppleScript/osascript to get the URLs, but mostly pass them to a ~50 line Bash script which:

  - Brings in the date path components for the dumped-to folder
  - Makes a hash of the URL for an Obsidian doc (each tab gets their own doc)
  - Uses Chrome command line (--headless --disable-gpu --dump-dom) to save a snapshot of the page contents
  - Uses it again with --screenshot to make a thumbnail
  - Create an Obsidian doc from a template
  - If it's a single tab dump, pass -o to the script, which opens it in Obsidian for review

Lastly, I use the relatively-new Bases feature in Obsidian to make a nice "cards" view of the docs with their thumbnails.

I'm hoping to clean it up at some point and maybe release it, but it's one of those classic one-shot systems that just works for me for now.

  • > - Uses Chrome command line (--headless --disable-gpu --dump-dom) to save a snapshot of the page contents > - Uses it again with --screenshot to make a thumbnail

    You could combine both of those into "run Archivebox somewhere and pass the URLs into that" (which is what I do for "URLs I save to Instapaper" - they go to my Linkhut, Pinboard, my Archivebox, and once I've fixed my code, to archive.org as well.)

    • Nice, thanks for the vote on it. Been meaning to look into a personal archiving solution, and now the pendulum is swinging back in the direction of homelab for me so it's on the list.

  • How does Hammerspoon help with this? Seems like just AppleScript and bash.

    Also if I may ask, how do you like Obsidian? I had never heard of it until now. Seems like a competitor to the Notes feature of iOS/macOS, but with its own subscription for syncing independently of iCloud?

    • I mean, in this case, the Hammerspoon part is really just the hyper keybind and the easy run of AppleScript text inline. But... once you've got some stuff going, it's easier to hook into Hammerspoon as the "frontend" for other things as your systems grow.

      Obsidian is good! This use of Bases is really my only "proprietary" use of anything Obsidian-specific. The rest is a combo of personal reference, brainstorms, intricate client work specs or outlines, and the beginnings of a personal wiki. The keybinds are great, everything is in one big folder for now, and the fuzzy search makes it fast. For sync, I just have my vault in a folder that is part of my overall Syncthing, so all my computers can access it. On mobile (iPhone moving to Android, and iPad) it's just read-only for now; not using their sync or doing any writing into the system from mobile.

      Somewhat relatedly, I just got Standard Notes going on all systems (Mac/Linux/iPhone/Android/iPad) which is good for reliable capture at all places for me right now. I'm not paying, so I don't have (Markdown or other) formatting like in Apple Notes yet.

I have no idea how that person is doing it, but I suspect it could be using osascript. Here's how I do it from my homegrown Go bookmark tool:

  const fetchTabsScript = `
  tell application "Brave Browser"
      set output to ""
      repeat with w in windows
          repeat with t in tabs of w
              set output to output & (URL of t) & "|||" & (title of t) & "\n"
          end repeat
      end repeat
      return output
  end tell
  `  
  
  func GetOpenTabs() ([]Tab, error) {
   cmd := exec.Command("osascript", "-e", fetchTabsScript)
   output, err := cmd.Output()
    // ...
  }