Safari Tabs
Safari browser management via AppleScript.
Key Scripts
| Script | Purpose |
|---|---|
get_tabs.sh | Get tabs with optional window filtering (TSV/markdown/JSON) |
close_by_pattern.sh | RECOMMENDED: Close tabs matching URL pattern |
close_tabs.sh | Close by window,tab index (advanced) |
find_duplicates.sh | Find/close duplicate tabs |
domain_stats.sh | Analyze tabs by domain |
export_tabs_*.sh | Export as JSON/CSV/markdown/HTML |
get_reading_list.sh | Export Reading List |
get_bookmarks.sh | Export bookmarks |
search_history.sh | Search history |
open_urls.sh | Open URLs from file/stdin |
Getting Tabs
get_tabs.sh # All tabs as TSV get_tabs.sh markdown # All tabs as markdown get_tabs.sh -w 1 markdown # Window 1 only get_tabs.sh -m "term" markdown # Window containing "term"
Closing Tabs
Always use close_by_pattern.sh (finds tabs by URL regardless of position):
close_by_pattern.sh "unique-url-substring" # Examples close_by_pattern.sh "adrianroselli.com" close_by_pattern.sh "/article/css-has-guide"
Closes ALL matching tabs across all windows. Use unique substring.
Alternative: close by position (error-prone, avoid unless necessary):
close_tabs.sh "1,5" "2,3" # Window,tab pairs (1-indexed)
Analysis Workflow
- •Fetch:
get_tabs.sh markdown - •Analyze: group by domain, identify duplicates/clusters, flag stale content
- •Report: stats, categorized list, suggestions
- •Act: close with
close_by_pattern.sh "url-substring"
Process-and-close pattern:
- •Fetch tab
- •Process it
- •Close:
close_by_pattern.sh "unique-url-part" - •Next tab
Export Formats
export_tabs_markdown.sh [list|table|checklist|grouped] export_tabs_json.sh export_tabs_csv.sh export_tabs_html.sh > bookmarks.html # Importable format
Other Features
Duplicates: find_duplicates.sh [--close]
Domain stats: domain_stats.sh
Reading list: get_reading_list.sh [tsv|markdown|json]
Bookmarks: get_bookmarks.sh [tree|flat|json]
History: search_history.sh [term] [--days N]
Open URLs: open_urls.sh urls.txt or pipe stdin
Privacy: Tab data stays local. Page content not accessed unless explicitly requested.