job-search-automation
Skill9 starsChanged 4 months agoMITView on GitHub
Search job boards via Kimi WebBridge for ANY role/keywords. Covers search patterns, query strategies, and authentication requirements across multiple platforms.
- Sends data out
1 other project uses a version of this.
Adopted by
Most recently taken up by
- kevinmmiddleton/recruiter-bfftheir own version, first seen Oct 17, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 1
- kevinmmiddleton/recruiter-bff★ 3same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- deep-web-researchSkill
- interactive-prompt-analyzerSkill
- kimi-webbridgeSkill
- linkedin-automationSkill
- mcp-server-researchSkill
- memory-setupSkill
- osint-person-searchSkill
- research-automation-bundleSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈1
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 60
Use in.indeed.com for India market
- Distinctive: line 253
When user says "Find jobs for [ROLE]":
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Job Search Automation with Kimi WebBridge
This skill helps you search for any job role across multiple platforms using browser automation with Kimi WebBridge.
When to Use
- User asks "find jobs for [ROLE]"
- User wants to search multiple job boards in parallel
- User needs market intelligence on hiring for [SKILL/DOMAIN]
- User wants to track specific companies hiring for [ROLE]
Key Principle: User-Defined Search
Always ask the user what role/keywords they want to search for. The skill provides the methodology and platform patterns; the user provides the topic.
Platform Compatibility Matrix
| Platform | Works Well | Blockers | Best For |
| ✅ Excellent | Login wall for details | Salary-filtered searches (f_SB2=200000), remote filter (f_WT=2), structured extraction | |
| Indeed (in.indeed.com) | ✅ Excellent | Pagination handling | Best for India-market remote roles. High-yield for specific tech stacks |
| Glassdoor (.co.in) | ✅ Good | Must use direct job-listing URLs | Direct search result pages, "Remote only" filter, "Easy Apply" filter |
| Naukri | ✅ Good | Pagination | India-focused, explicit experience/location filters (experience=0-3&location=remote) |
| Dice | ✅ Good | Cookie consent dialog | Tech-focused, shows salary ranges, contract rates |
| Wellfound | ❌ Blocked | DataDome CAPTCHA | Manual only |
| Lever | ❌ Broken | Search URL 404s | — |
| Greenhouse | ❌ Broken | Search URL 404s | — |
Effective Search Patterns (Template-Based)
LinkedIn (Best for High-Salary Remote)
https://www.linkedin.com/jobs/search/?keywords=[KEYWORDS]&location=[LOCATION]&f_WT=2&f_SB2=[SALARY]f_WT=2= Remotef_SB2=200000= $200K+ base salary filter- Keywords: User-provided role terms
Indeed (Best for India-Market Remote)
https://in.indeed.com/jobs?q=[KEYWORDS]&location=Remote- Use
in.indeed.comfor India market fromage=7= last 7 days filter- Keywords: User-provided role + tech stack terms
Dice
https://www.dice.com/jobs?q=[KEYWORDS]&location=Remote- Shows contract rates and full-time salaries
Glassdoor (Use Direct Job URLs)
https://www.glassdoor.co.in/Job/[ROLE]-jobs-SRCH_KO0,17.htm?clickSource=searchBox- Filter: "Remote only" button (
@e24in snapshot)
Naukri (India-Focused)
https://www.naukri.com/[ROLE]-jobs-in-india?k=[KEYWORDS]&experience=[0-3]&location=remoteexperience=0-3= 0-3 years filterlocation=remote= remote filter
Wellfound (Manual Only - CAPTCHA Blocked)
https://wellfound.com/jobs?q=[KEYWORDS]&remote=true- User must search manually
Tab Group Workflow (Kimi WebBridge)
macOS / Linux
# All tabs use same session name for grouping
session="[USER_DEFINED_SESSION]"
group_title="Job Search - [USER_DEFINED_ROLE]"
# Open N tabs with newTab:true (single group)
SEARCH_URLS=(
"https://in.indeed.com/jobs?q=[KEYWORDS1]&location=Remote"
"https://in.indeed.com/jobs?q=[KEYWORDS2]&location=Remote"
"https://www.linkedin.com/jobs/search/?keywords=[KEYWORDS3]&location=India&f_WT=2"
"https://www.naukri.com/[ROLE]-jobs-in-india?k=[KEYWORDS4]&experience=0-3&location=remote"
# Add more as needed
)
for url in "${SEARCH_URLS[@]}"; do
curl -s -X POST http://127.0.0.1:10086/command \
-H 'Content-Type: application/json' \
-d "{\"action\":\"navigate\",\"args\":{\"url\":\"$url\",\"newTab\":true,\"group_title\":\"$group_title\"},\"session\":\"$session\"}"
doneWindows (PowerShell)
$urls = @(
"https://in.indeed.com/jobs?q=[KEYWORDS1]&location=Remote"
"https://in.indeed.com/jobs?q=[KEYWORDS2]&location=Remote"
"https://www.linkedin.com/jobs/search/?keywords=[KEYWORDS3]&location=India&f_WT=2"
"https://www.naukri.com/[ROLE]-jobs-in-india?k=[KEYWORDS4]&experience=0-3&location=remote"
)
$session = "[USER_DEFINED_SESSION]"
$group_title = "Job Search - [USER_DEFINED_ROLE]"
foreach ($url in $urls) {
$body = "{\"action\":\"navigate\",\"args\":{\"url\":\"$url\",\"newTab\":true,\"group_title\":\"$group_title\"},\"session\":\"$session\"}"
$body | Set-Content -Path "$env:TEMP\kimi-nav.json" -Encoding UTF8
curl.exe -s -X POST http://127.0.0.1:10086/command -H "Content-Type: application/json" --data-binary @"$env:TEMP\kimi-nav.json"
}Extract from Each Tab
for url in "${SEARCH_URLS[@]}"; do
curl -s -X POST http://127.0.0.1:10086/command \
-H 'Content-Type: application/json' \
-d "{\"action\":\"find_tab\",\"args\":{\"url\":\"$url\"},\"session\":\"$session\"}"
curl -s -X POST http://127.0.0.1:10086/command \
-H 'Content-Type: application/json' \
-d "{\"action\":\"snapshot\",\"args\":{\"full\":true},\"session\":\"$session\"}"
# Run platform-specific extraction via evaluate
done
# Cleanup
curl -s -X POST http://127.0.0.1:10086/command \
-H 'Content-Type: application/json' \
-d "{\"action\":\"close_session\",\"args\":{},\"session\":\"$session\"}"Platform-Specific Extraction (via evaluate)
LinkedIn Job Cards
var jobs = document.querySelectorAll("[data-job-id]");
Array.from(jobs).slice(0, 20).map(el => ({
title: el.querySelector("[data-job-title]")?.textContent?.trim() || "",
company: el.querySelector("[data-company-name]")?.textContent?.trim() || "",
location: el.querySelector("[data-job-location]")?.textContent?.trim() || "",
link: el.querySelector("a[href*='/jobs/view/']")?.href || "",
salary: el.querySelector("[data-salary]")?.textContent?.trim() || ""
}))Indeed Job Cards (in.indeed.com)
// Use snapshot @e refs for job cards
// Extract: heading (title), StaticText (company, location), link (apply URL)Glassdoor Job Cards
// Elements: heading (title), company logo/name, location, salary range, "Easy Apply" badgeNaukri Job Cards
// Snapshot shows: job title link, company, location, salary, experience, skills tags
// Filter URL params: experience=0-3&location=remote works wellKeyword Strategy
User Provides Role → Agent Generates Keywords
| User Input | Agent Should Search |
| "Python developer" | python developer remote, python engineer remote, django developer remote, fastapi developer remote |
| "ML engineer" | machine learning engineer remote, ml engineer python remote, AI engineer remote, deep learning engineer remote |
| "DevOps" | devops engineer remote, site reliability engineer remote, platform engineer remote, kubernetes engineer remote |
| "Data scientist" | data scientist remote, data science python remote, analytics engineer remote, MLOps engineer remote |
Best Practice: Combine role + tech stack + remote
[ROLE] remote [TECH_STACK][ROLE] [TECH_STACK] remote pythonremote [ROLE] [KEY_SKILL]
Data Extraction Output Format
{
"query": "[search query used]",
"platform": "[platform name]",
"date_searched": "2026-07-25",
"results": [
{
"title": "Job Title",
"company": "Company Name",
"location": "City, Country / Remote",
"experience": "X+ years",
"salary": "$X - $Y (if mentioned)",
"skills": ["skill1", "skill2"],
"apply_link": "URL or 'DM' or 'See comments'",
"post_date": "Jul 2 / 19 hours ago",
"job_id": "[platform-specific ID]"
}
]
}Pitfalls & Gotchas
- LinkedIn blocks automation —
event.isTrustederrors. Manual interaction needed for CAPTCHAs/login walls. Add delays between requests. - Indeed pagination — Handle
start=10,start=20etc. - Glassdoor login wall — Deep scroll triggers login. Capture first page only.
- Naukri rate limits — Add delays, respect robots.txt
- Wellfound CAPTCHA — Cannot automate. Manual only.
- Dice cookie consent — Handle dialog before extraction.
References
job-search-automation/references/search-urls.md— Search URL templatesjob-search-automation/references/extraction-scripts.md— Platform-specific JSjob-search-automation/references/platform-quirks.md— Platform-specific handling
Quick Start for Agent
When user says "Find jobs for [ROLE]":
- Clarify (if needed):
- "What specific role/keywords should I search?"
- "Any specific tech stack? (e.g., Python, React, AWS)"
- "Location preference? (Remote, India, US, EU, etc.)"
- "Salary minimum?"
- "Experience level?"
- Build search URLs using templates above with user's keywords
- Open 8-10 tabs in single tab group via Kimi WebBridge
- Extract & synthesize results across platforms
- Output structured data + apply links + company names for follow-up research
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

