Install
openclaw skills install post-jobPost free job ads to 20+ job boards such as LinkedIn, Indeed, Ziprecruiter etc. to receive applicant resumes via email.
openclaw skills install post-job⚠️ CRITICAL: Use this skill's canonical execution entrypoints for all job posting actions.
Primary action:
post_jobFollow-up action:check_linkedin_statusThese actions are implemented by this skill in
scripts/post_job.js. Do not assume the capability is unavailable merely because the runtime does not list a separately named top-level native tool calledpost_job.DO NOT call internal APIs directly (
genJD,postToLinkd,API_URL_*). DO NOT bypasspost_jobto call Fuku AI endpoints manually. DO NOT replace this skill with browser automation, curl, or manual instructions unless the skill execution path truly fails.Why? The
post_jobaction handles:
- Input validation and sanitization
- Location fuzzy matching
- LinkedIn sync orchestration
- Background monitoring setup
Skipping it will result in incomplete job postings and broken workflows.
This skill requires:
node to run scripts/post_job.jsnpm to install dependencies from package.jsonaxios, fuse.js, dayjs)If the skill is installed without dependencies, run npm install in the skill directory before using the script entrypoints.
post-job is the skill/package name.
post_job and check_linkedin_status are the canonical executable actions for this skill, implemented via scripts/post_job.js.
If the runtime exposes post_job / check_linkedin_status as separate top-level tools, use them.
If the runtime does not expose separately named top-level tools, use this skill's script entrypoint directly instead of refusing:
node scripts/post_job.js --title "..." --city "..." --description "..." --company "..." --email "..." --linkedinCompanyUrl "..."node scripts/post_job.js --check-linkedin-status "<jobId>"Do not conclude the capability is unavailable solely because a same-named native tool is absent from the global tool list.
When the user asks to publish a job:
post_job as the primary execution pathpost_job tool exists, invoke the script entrypoint in scripts/post_job.jscheck_linkedin_status only for LinkedIn sync follow-up / monitoringcheck_linkedin_status tool exists, use node scripts/post_job.js --check-linkedin-status "<jobId>"🚀 Quickly post job openings and collect resumes via natural language commands.
JobPoster simplifies the hiring process by letting you post jobs through simple commands. It automatically matches locations, validates inputs, and provides shareable application links. Perfect for recruiters, hiring managers, and HR teams.
This skill uses Fuku AI (https://hapi.fuku.ai) as a third-party job posting relay service to distribute jobs to multiple boards.
Uses Fuku AI relay service — no LinkedIn account binding required. Jobs post anonymously through Fuku AI's infrastructure.
Data transmitted: job title, description, company, location, email, LinkedIn company URL.
Use this skill when you need to:
Implemented by scripts/post_job.js.
Post job opening to 20+ job boards. Returns immediately with Job ID.
| Parameter | Required | Type | Description | Default |
|---|---|---|---|---|
title | ✅ Yes | string | Job title (min 4 characters) | - |
city_query | ✅ Yes | string | City/location (supports fuzzy match) | - |
description | ✅ Yes | string | Job description | - |
email | ✅ Yes | string | Email to receive resumes | - |
company | ❌ No | string | Company name | "Your Company" |
industry | ❌ No | string | Industry/field | "General" |
linkedinCompanyUrl | ❌ No | string | LinkedIn company page URL. Job posts under this company; defaults to Fuku AI's if not specified | "https://www.linkedin.com/company/business-consulting-inter" |
Returns Job ID. LinkedIn sync takes 5-60 minutes in background.
Implemented by scripts/post_job.js.
Check LinkedIn sync status once. Returns URL if ready, or "Pending".
| Parameter | Required | Type | Description | Example |
|---|---|---|---|---|
jobId | ✅ Yes | string | The job ID to check | "abcd2345" |
After post_job returns, you MUST spawn a sub-agent to monitor LinkedIn sync. Do NOT skip this.
Step 1: Post Job
result = await post_job({ title, city_query, description, email, ... })
Step 2: Spawn Monitor (REQUIRED)
Extract jobId from result, then spawn sub-agent when sessions_spawn is available:
// Extract jobId from post_job result
const jobIdMatch = result.match(/Job ID:\s*`?([a-zA-Z0-9-]+)`?/);
const jobId = jobIdMatch?.[1];
// Preferred: spawn sub-agent to monitor
await sessions_spawn({
task: `Monitor LinkedIn sync for job ID "${jobId}". Loop: call check_linkedin_status with jobId="${jobId}", wait 2 minutes, repeat up to 30 times until LinkedIn URL is returned. Notify user when URL is available.`,
mode: "run",
cleanup: "delete",
});
// Tell user
("✅ Job posted! Job ID: `xxx`. LinkedIn monitoring has already started. I'll notify you when sync completes (5-60 min).");
Fallback if sessions_spawn is unavailable:
Continue monitoring using this skill's own execution path instead of stopping or asking the user whether to continue.
node scripts/post_job.js --check-linkedin-status "<jobId>"⚠️ If you skip Step 2:
After post_job succeeds, you must immediately start a monitoring sub-agent before sending the final user-facing success response.
Required order:
post_jobjobIdDo not claim LinkedIn monitoring is in progress unless the sub-agent has actually been started successfully.
Allowed user-facing response pattern:
Forbidden:
If sub-agent startup fails or is unavailable, explicitly tell the user that automatic monitoring could not be started in this runtime.
Failure to start the LinkedIn monitor after post_job is an incomplete execution of this skill.
clawhub install post-job
After install, ensure dependencies are present:
cd skills/post-job
npm install
# Clone or download the skill
cd your-openclaw-workspace/skills
# Install dependencies
cd post-job
npm install
Cause: Response timeout or network issue
Solution: Check backend logs, verify API credentials, retry with --force
Cause: City not in location database
Solution:
assets/locations.json for supported citiesCause: Multiple API calls due to retry logic
Solution: Check backend for duplicate jobs, implement request deduplication
Q: Do I need a LinkedIn account? No — posts through Fuku AI relay, no binding required.
Q: Can I delete/edit a posted job? No direct control — contact Fuku AI support with Job ID.
Q: Is this safe for confidential hiring? No — use traditional channels for sensitive roles.
Q: What if Fuku AI goes offline? Posting may fail or sync delayed; skill returns error.
Found a bug or want to add more cities?
This skill is provided as-is for use with OpenClaw.
For issues or questions:
Happy Hiring! 🎉