Super Search across multiple websites – stupid simple script I use all the time :D

https://github.com/user-attachments/assets/8a961f10-9ec0-4e90-9016-cfd77a90f46d

Open super-search in Script Kit

// Menu: Super Search across multiple websites
// Description: Search multiple websites, in bulk, in your browser
// Author: Pavel 'Strajk' Dolecek <www.strajk.me>
// Twitter: @straaajk
//// Shortcut: command option ;
// me.strajk:status WIP
// BEWARE: Discord search requires my userscript:
// https://github.com/Strajk/setup/blob/master/user-scripts/discord-search-from-q-url-param.user.js
let templates = {
discord: `https://discord.com/channels/{slug}/?q={query}`,
githubRepo: `https://github.com/{slug}/issues?q={query}`,
githubDiscussion: `https://github.com/{slug}/discussions?discussions_q={query}`,
twitter: `https://x.com/search?q=from%3A{slug}+{query}`,
reddit: `https://www.reddit.com/r/{slug}/search?q={query}`,
// TODO:
// Slack: But even harder than Discord https://stackoverflow.com/questions/51541986/a-way-to-open-up-slack-search-ui-in-a-browser-from-a-url
}
// Each topic can only use search templates defined above (discord, githubRepo, githubDiscussion)
// but doesn't need to include all of them - just some are enough
// ⬇⬇⬇ EDIT TO YOUR LIKING ⬇⬇⬇
let topics: Record<string, Partial<{[K in keyof typeof templates]: string[]}>> = {
kit: {
discord: [`804053880266686464`],
githubRepo: [`johnlindquist/kit`],
githubDiscussion: [`johnlindquist/kit`],
twitter: [`scriptkitapp`],
},
litellm: {
discord: [`1123360753068540065`],
githubRepo: [`BerriAI/litellm`],
githubDiscussion: [`BerriAI/litellm`],
twitter: [`LiteLLM`],
},
wxt: {
discord: [`1212416027611365476`],
githubRepo: [`wxt-dev/wxt`],
githubDiscussion: [`wxt-dev/wxt`]
},
coolify: {
discord: [`459365938081431553`],
githubRepo: [`coollabsio/coolify`],
githubDiscussion: [`coollabsio/coolify`],
twitter: [`coolify`],
},
crawlee: {
discord: [`801163717915574323`],
githubRepo: [`apify/crawlee`],
githubDiscussion: [`apify/crawlee`]
},
mantine: {
discord: [`854810300876062770`],
githubRepo: [`mantinedev/mantine`],
githubDiscussion: [`orgs/mantinedev`], // note it's different from repo above
twitter: [`mantinedev`],
},
supabase: {
discord: [`839993398554656828`],
githubDiscussion: [`orgs/supabase`],
reddit: [`Supabase`],
githubRepo: [
`supabase/supabase`,
`supabase/supabase-js`,
`supabase/cli`,
`supabase/postgrest-js`,
`supabase/supabase-py`,
],
},
pnpm: {
discord: [`731599538665553971`],
githubRepo: [`pnpm/pnpm`],
githubDiscussion: [`pnpm/pnpm`],
},
ai: {
discord: [
`1110910277110743103`, // superagent
`1153072414184452236`, // autogen
`822583790773862470`, // latentspace
`1122748573000409160`, // ai stack devs
`877056448956346408`, // lablablab
],
},
nextjs: {
discord: [
`752553802359505017`, // nextjs
`966627436387266600`, // theo typesafe cult
],
},
plasmo: {
githubDiscussion: [`PlasmoHQ/plasmo`],
githubRepo: [`PlasmoHQ/plasmo`],
discord: [`946290204443025438`],
},
scraping: {
discord: [
`646150246094602263`, // scraping in prod
`851364676688543744`, // scrapy
`737009125862408274`, // scraping enthusiasts
],
}
}
let hint = `${isMac ? `` : `Control`}+o to edit`
let type = await arg({
placeholder: `What topic? ${hint}`,
choices: Object.keys(topics),
})
let query = await arg('Query?')
let topicObj = topics[type] // e.g. { discord: ['123', '345'], github: ['foo'] }
for (const [key, slugs] of Object.entries(topicObj)) {
// key is e.g. discord, githubIssues, githubDiscussions, ...
// slugs are e.g. ['12356', 'facebook/react']
for (const slug of slugs) {
// slug e.g. '12356', 'facebook/react'
let urlTemplate = templates[key] // e.g. 'github.com/{id}/issues?q={query}'
let url = urlTemplate
.replace('{slug}', slug) // e.g. 'facebook/react'
.replace('{query}', encodeURI(query)) // e.g. 'foo'
exec(`open ${url}`)
}
}