I refined the AppleScript somewhat. There's one version for opening 6 different websites across two different screens in separate Safari windows, and another version for opening 6 different websites in the same screen.
Same screen (optimized for a 16" MacBook Pro screen by default):
-- CONFIGURATION - URLS
set url1 to "https://www.apple.com" -- REPLACE with your first URL
set url2 to "https://www.apple.com" -- REPLACE with your second URL
set url3 to "https://www.apple.com" -- REPLACE with your third URL
set url4 to "https://www.apple.com" -- REPLACE with your fourth URL
set url5 to "https://www.apple.com" -- REPLACE with your fifth URL
set url6 to "https://www.apple.com" -- REPLACE with your sixth URL
-- CONFIGURATION - MONITOR
-- IMPORTANT: Check System Settings > Displays.
-- Enter the "Looks like" resolution (Logical resolution), NOT the physical specs.
set logicalWidth to 1728 -- REPLACE with your main monitor's logical width (e.g., 1920, 2560, 3024)
set logicalHeight to 1117 -- REPLACE with your main monitor's logical height (e.g., 1080, 1440, 1600)
-- HELPER FUNCTION - IGNORE THIS
on makeSafariWindow(theURL, x1, y1, x2, y2)
tell application "Safari"
make new document with properties {URL:theURL}
set bounds of front window to {x1, y1, x2, y2}
end tell
end makeSafariWindow
-- 1. SAFARI (4 Windows, 25% width each on Primary Screen)
tell application "Safari"
activate
-- Window 1
my makeSafariWindow(url1, 0, 0, logicalWidth / 4, logicalHeight)
-- Window 2
my makeSafariWindow(url2, logicalWidth / 4, 0, (logicalWidth / 4) * 2, logicalHeight)
-- Window 3
my makeSafariWindow(url3, (logicalWidth / 4) * 2, 0, (logicalWidth / 4) * 3, logicalHeight)
-- Window 4
my makeSafariWindow(url4, (logicalWidth / 4) * 3, 0, logicalWidth, logicalHeight)
-- Open url5 and url6 as tabs in Window 4 (current front window)
tell front window
make new tab with properties {URL:url5}
make new tab with properties {URL:url6}
end tell
end tell
Two screens (optimized for a 1080p main screen with the 16" MacBook Pro as a secondary screen):
-- CONFIGURATION - URLS
set url1 to "https://www.apple.com" -- REPLACE with your first URL
set url2 to "https://www.apple.com" -- REPLACE with your second URL
set url3 to "https://www.apple.com" -- REPLACE with your third URL
set url4 to "https://www.apple.com" -- REPLACE with your fourth URL
set url5 to "https://www.apple.com" -- REPLACE with your fifth URL
set url6 to "https://www.apple.com" -- REPLACE with your sixth URL
-- CONFIGURATION - MONITORS
-- IMPORTANT: Check System Settings > Displays.
-- Enter the "Looks like" resolution (Logical resolution), NOT the physical specs.
set logicalWidth to 1920 -- REPLACE with your main monitor's logical width (e.g., 1920, 2560, 3024)
set logicalHeight to 1080 -- REPLACE with your main monitor's logical height (e.g., 1080, 1440, 1600)
set secondaryLogicalWidth to 864 -- REPLACE with your secondary monitor's logical width (e.g., 1920, 2560, 3024)
set secondaryOffset to logicalWidth
-- HELPER FUNCTION - IGNORE THIS
on makeSafariWindow(theURL, x1, y1, x2, y2)
tell application "Safari"
make new document with properties {URL:theURL}
set bounds of front window to {x1, y1, x2, y2}
end tell
end makeSafariWindow
-- 1. SAFARI (4 Windows, 25% width each on Primary Screen)
tell application "Safari"
activate
-- Window 1
my makeSafariWindow(url1, 0, 0, logicalWidth / 4, logicalHeight)
-- Window 2
my makeSafariWindow(url2, logicalWidth / 4, 0, (logicalWidth / 4) * 2, logicalHeight)
-- Window 3
my makeSafariWindow(url3, (logicalWidth / 4) * 2, 0, (logicalWidth / 4) * 3, logicalHeight)
-- Window 4
my makeSafariWindow(url4, (logicalWidth / 4) * 3, 0, logicalWidth, logicalHeight)
end tell
-- 2. SAFARI (Window 5 on left portion of Secondary Screen)
tell application "Safari"
activate
my makeSafariWindow(url5, secondaryOffset, 0, secondaryOffset + secondaryLogicalWidth, logicalHeight)
end tell
-- 3. SAFARI (Window 6 on right portion of Secondary Screen)
tell application "Safari"
activate
my makeSafariWindow(url6, secondaryOffset + secondaryLogicalWidth, 0, secondaryOffset + (secondaryLogicalWidth * 2), logicalHeight)
end tell