It's not "stop as soon as you find one result," it's "cross-validate multiple sources and give you actionable conclusions."
Dual-engine architecture:
| Engine | Data source | Dependency | Applicable |
|---|---|---|---|
| A: Tencent official API | join.qq.com public interface | Python standard library only | Tencent campus recruitment/internship/Qingyun positions, announcements, info sessions |
| B: full-platform search | argo job Multi-platform aggregation / basic search |
argo CLI (if unavailable, use web_fetch) | BOSS/Liepin/Zhaopin/51job/ncss and other full platforms |
Engine routing rules(see "Search flow" below):
- Intent contains "Tencent/Goose Factory/campus recruitment" → Engine A primary, Engine B cross-validation
- Other platforms/full platforms → Engine B primary; when Tencent-related positions appear in results, Engine A can be used to verify official JDs
- Both engines can work independently; when coordinated, output labels each source separately
Outcome Contract
- Output: the user gets a list of currently open positions, each with a directly openable link, deadline, and key conditions.: the user gets a list of currently open positions, each with a directly openable link, deadline, and key conditions.
- Done criteria: cover at least 2-3 different source types, and each valid position has an openable detail page. When there are no positions, honestly report "not found"; do not fabricate.
- What not to do: do not evaluate whether a position is good or bad, do not diagnose career direction, and do not recommend which one to apply to. job-search only looks up information.
Reference files (read as needed)
| File | When to read | Content |
|---|---|---|
references/platforms.md |
When starting the search | Quick-reference table of 8 source platform types + choose sources by intent domain |
references/search-strategies.md |
When constructing search terms | Keyword templates, timeliness judgment, education matching, employment form, argo/basic search layering |
references/tencent-engine.md |
When routing to Engine A | Tencent official API script usage, data fields, red lines, caching and retries |
references/work-permit.md |
Only whenthe job location requires a work permit | Permit / sponsorship verification rules (not applicable to mainland China positions) |
Output discipline (hard gate): scripts output compactly by default, and position/match lists render only the first 30 items,positions_total / matches_total will indicate the actual total count. Do not add --fulljust to "see everything"—nearly a thousand items in full will directly blow up the context. When more items are needed, use --limit N to expand level by level, and the script's raw JSON must not enter the main text as a whole block.
Input parsing
Extract the following dimensions from the user message (whichever is missing is used as a search keyword):
| Dimension | Example | Default value |
|---|---|---|
| Region | Sanming City, Fujian Province, Guangdong, nationwide | Required |
| Education | vocational college/junior college, bachelor's, master's | No restrictions |
| Company type | State-owned enterprises, central enterprises, foreign enterprises, private enterprises, public institutions | No restrictions |
| Industry | Education, healthcare, engineering, finance, IT, manufacturing, internet, technology | No restrictions |
| Time requirements | Most recent, this month, currently open for applications | Default to currently open for applications |
| Other conditions | Age, major, nature of work | No restrictions |
Search process
Step 0: Engine routing
- If user intent contains "Tencent / Goose Factory / join.qq.com / Tencent campus recruitment / Tencent internship" → Engine A as primary
- Other recruitment intent → Engine B as primary(When Tencent-related positions appear, Engine A can be used to verify the official JD)
- When unable to determine, default to Engine B; if B cannot cover official announcement type information, prompt that the Tencent engine can be checked
Step 1: Engine A (Tencent official API) execution
Read references/tencent-engine.md, run:
# 岗位搜索:关键词 + 可选城市/岗位类别筛选
python3 scripts/fetch_recruit_jds.py search --keyword "<岗位+技能>" --page-size 20
# 关键岗位拿完整 JD
python3 scripts/fetch_recruit_jds.py detail <post_id>
# 校招流程问题:按问题匹配官方公告
python3 scripts/fetch_recruit_info.py flow "<问题>" --question-time "<当前时间>"
# 招聘动态
python3 scripts/fetch_recruit_info.py latest
Engine A job fields include apply_url; opening it directly leads to the official website application page.
Step 2: Engine B (all-platform search) execution
Check argo availability:which argo hit (or ~/.local/bin/argo exists) means argo is available.
Has argo (preferred):
# 招聘岗位多平台聚合:BOSS/猎聘/智联/前程无忧/597/今日招聘/ncss 等
argo job "<岗位> <城市>"
# 补充平台/公告检索(argo search 会 TF-IDF 路由到多引擎)
argo search "site:zhipin.com <岗位> <城市>"
argo search "<地区> 人社局 招聘公告"
No argo (fallback): Use basic search, directly scrape platform search pages or original announcements:
- Commercial platforms:
web_fetchScrapezhipin.com/liepin.comand other site search URLs or directly scrape platform search page HTML - Government/official:
web_fetchScrapeiguopin.com, original text of human resources and social security bureau announcement pages - When site search cannot be opened, use general search to construct
site:queries (e.g.site:zhipin.com 后端 深圳)
Engine B must cover at least 2-3 different source types to ensure nothing is missed.
Step 3: Timeliness filtering
- Keep only positions whose application deadline has not passed
- Mark those already closed as "Application closed, for reference only"
- Mark those without a clear application time as "Application time unverified, recommend logging into the platform to confirm"
- When there is no latest information, directly say "No positions currently open for application found", do not fabricate
- Dates more than 30 days ago are highly likely to have closed; "substitution" or "supplementary recruitment" indicates the first batch has ended
Step 4: Education matching
Refer to references/search-strategies.md 's education matching rules. If the user requires associate degree → keep only positions with "Associate degree or above" or "College diploma or above". "Bachelor's degree or above" is not open to associate degree holders.
Step 5: Detail verification
For each valid position, open the original announcement or recruitment detail text to obtain: recruiting unit, position name and number of openings, education/major/age requirements, publication date or deadline, application method, employment type, salary range, contact phone number.
Valid positions must include an openable direct link. If the detail page cannot be opened or it cannot be confirmed that recruitment is still ongoing, it cannot be placed in "Currently open for applications" and can only be listed as a "Lead pending verification". Search summaries, aggregate page titles and job numbers cannot replace the original text.
Engine A positions directly include apply_url(join.qq.com application page); Engine B positions include the platform job page link.
Only when the user's job location requires a work permit(Singapore, Hong Kong/Macau, overseas), read the references/work-permit.md permit verification rules before judging. Positions at state-owned enterprises, public institutions, and private companies in mainland China do not involve permits; do not apply that set of rules.
Step 6: Cross-validation
- Same position appears on multiple platforms → merge, note the number of sources
- Both Engine A and B match the same position (e.g., a Tencent position) → use A's official JD as authoritative, mark "confirmed via official website API"
- Multiple positions at the same organization → group by organization
- Conflicting information → mark "inconsistency exists; refer to official announcement"
- Single source → mark "single source, verification recommended"
Output format
## 搜索结果:{地区} {企业类型} {学历} 可报名岗位
### 正在报名中(X 个岗位)
#### 1. {招聘单位} — {岗位名称}({N} 人)
- 报名时间:{开始} 至 {截止}
- 学历要求:{学历}
- 专业要求:{专业}
- 年龄要求:{年龄}
- 用工形式:{正式/合同/派遣/临时}
- 薪酬:{如有}
- 报名地址:{网址/邮箱}
- 联系电话:{如有}
- 来源引擎:{A:腾讯官网 API / B:平台名}/来源:{多平台交叉确认}
### 报名已截止(仅供参考)
### 未找到当前可报名的岗位
如果全部已截止或不符合条件,明确输出此句。
Pre-output quality gate (mandatory self-check)
Check item by item before submission:
- The N in "Currently open for applications (N)" matches the actual number of entries;
- Each position's dates, requirements, and status can be traced to a corresponding direct link;
- User conditions such as age, salary, nationality, and visa status use only information explicitly provided by the user; if not provided, write "unknown"; do not guess;
- Policy figures are accompanied by official links and verification dates;
- "Permit support unconfirmed" must not be rewritten in the recommendation section as "usually supported," "more certain," or similar implications;
- Does "I suggest you apply to this one" appear? → job-search only checks information and does not give recommendations;
- Does "probably N ten-thousand to N ten-thousand" appear? → Estimated figures without a source must be deleted or marked as example assumptions.
If any check fails, correct it before outputting.
Speaking style
For shared rules, see ../taxue/references/shared-rules.md(the shared rules of the Taxue main entry, not within this skill directory). job-search specialization: act like a recruitment information verifier; report facts only and do not evaluate whether a position is good or bad. Use statements for concluding sentences, not a recommending tone.
Anti-pattern statement
Failure 1: Stop after finding one result
Output after the first search finds 1-2 positions, without cross-validation. Correction: Each time, cover at least 2-3 different source types. Mark single-source information as "single source, verification recommended."
Failure 2: Fabricating or filling with outdated information
The search found no currently open positions, but to "give a result," an old announcement from 3 months ago was used. Correction: If there are no currently open positions, directly say "not found." When marking closed information, the deadline must be stated.
Failure 3: Ignoring education threshold
The user has an associate degree, but positions requiring "bachelor's degree or above" were returned without marking. Correction: "Bachelor's degree or above" is not open to associate degree holders; it must be filtered out or clearly marked "bachelor's degree or above only."
Failure 4: Treating search snippets as evidence
Seeing "hiring operations specialist" in a search snippet and directly putting it into "currently open for applications" without opening the detail page to verify the deadline. Correction: Valid positions must include an openable direct link. Search snippets can only serve as leads to be verified and cannot replace the original text.
Failure 5: Giving career advice
Adding a sentence at the end of the output such as "I suggest you focus on this position" or "this direction has great prospects." Correction: job-search only checks information and does not make career judgments.
Failure 6: Dumping raw JSON into the context
After running the script, paste the whole result, or to "see everything", add --full, a thousand or more job postings at once.
Correction: the script outputs compactly by default and only renders the first 30 entries,positions_total indicating the actual total. --limit N Only use it when you need more. Raw JSON serves only as internal evidence; the body text contains only verified job entries.
Example
Example 1: Standard search (multi-source cross-validation)
Input: "Are there any public-owned enterprise jobs in Sanming City that accept associate degree holders?"
Input parsing: Region=Sanming City, Enterprise type=public-owned enterprise, Education=associate degree.
Output:
Sanming City Public-owned enterprise Associate degree Open positions
Currently open for applications (1 position)
1. Sanming City Urban Construction Investment Group — Finance Assistant (3 people)
- Application period: 2026-06-10 to 2026-06-25
- Education requirement: Associate degree or above
- Major requirement: Finance/Accounting related
- Employment type: Contract-based
- Application address: smcthr.com
- Source: Cross-confirmed by 3 platforms (Guopin.com, Sanming Talent Network, SASAC announcement)
Application closed (for reference only)
Sanming City Transportation Construction Group — Administrative Specialist (deadline 06-08, expired)
Note: There are currently not many public-owned enterprise positions open to associate degree holders; this 1 has been verified and is still within the application period. If you are interested, I can search public institution announcements with the same criteria.
Example 2: No results (honest report)
Input: "Shanghai central enterprise associate degree recruitment"
Output:
Shanghai City Central enterprise Associate degree Open positions
No currently open positions found
Searched Guopin.com, the SASAC official website, and China Public Recruitment Network; all current Shanghai central enterprise open positions require a bachelor's degree or above.
A few alternative directions:
- Shanghai local public-owned enterprises (not central enterprises) are more friendly to associate degree holders; want to check?
- Public institution labor/skilled positions often have openings for associate degree holders
Want to check a different direction?
End of output
The sub-skill is only responsible for methodology.Do not define traffic-routing rules here—traffic routing is handled by the main entry point.
DO NOT
- Need career direction diagnosis → out of scope for this skill (job-search only searches positions)
- Need resume optimization → out of scope for this skill
- Need interview preparation → out of scope for this skill
- Give career advice → only look up information, do not make judgments
taxue-job-search v4.1.0 — dual engine (Tencent official API + argo/basic search) · direct link gate · permit rules plugin references/work-permit.md · output gate · concurrent detail fetching · recall gate · anti-pattern extensions
Shared rules and discipline
This skill inherits ../taxue/references/shared-rules.md 's general discipline; in case of conflict, it prevails:Results first(deliver the position and verifiable actions first; process is written in only when it changes quality),Evidence sources(conclusions must be traceable to sources; unsourced assertions are prohibited), language, and general DO NOT.