Token导航 LogoToken导航

Agent Skill · 研究检索

jobsearch-telegram(jobsearch Telegram 搜索)

jobsearch-telegram 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

jobsearch-telegram 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描有未通过项,按安装量在研究检索类的 73,675 个 Skill 里排第 64,068。

总安装 306周安装 13GitHub Stars 126下载 107核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:jobsearch-telegram(jobsearch Telegram 搜索)
来源仓库:https://github.com/proficientlyjobs/proficiently-claude-skills
仓库路径:skills/jobsearch-telegram
安装命令:
npx skills add https://github.com/proficientlyjobs/proficiently-claude-skills --skill jobsearch-telegram
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/proficientlyjobs/proficiently-claude-skills --skill jobsearch-telegram

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

jobsearch-telegram 用于查找、检索和筛选相关信息。适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词快速定位候选结果。支持按任务场景或来源线索进行内容筛选与组织。安装前建议确认权限范围和维护状态后再使用。可结合来源仓库和原始 README 进一步核验具体用法。

来源仓库内路径:skills/jobsearch-telegram

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/proficientlyjobs/proficiently-claude-skills --…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

jobsearch-telegram 怎么安装?

在终端执行 npx skills add https://github.com/proficientlyjobs/proficiently-claude-skills --skill jobs…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

jobsearch-telegram 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

jobsearch-telegram 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

jobsearch-telegram 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

jobsearch-telegram 用的人多吗?

公开数据是累计安装 306 次,近一周安装 13 次,下载 107 次,GitHub 126 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

jobsearch-telegram 安全吗?

第三方扫描有未通过项,风险较高。除非你确认过源码,否则不建议直接安装到常用环境。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
jobsearch-telegram

jobsearch Telegram 搜索 · 本页

306126需要联网未明确未通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Job Search Telegram Polling

Poll Telegram for incoming messages and route them to the appropriate Proficiently skill. Runs headlessly via /loop 1m /proficiently:jobsearch-telegram.

First-Time Setup

Before this skill can run, the user must create a Telegram bot and configure it. If DATA_DIR/telegram-config.md does not exist, walk the user through setup:

1. Create a Telegram Bot

Tell the user:

Let's set up your Telegram bot. 1. Open Telegram and search for @BotFather 2. Send /newbot 3. Choose a name (e.g., "My Job Search Assistant") 4. Choose a username (must end in bot, e.g., my_jobsearch_bot) 5. BotFather will give you a bot token — copy it and paste it here Then send your bot a message (anything) so I can find your chat ID.

2. Get the Chat ID

Once the user provides the bot token, fetch their chat ID:

curl -s "https://api.telegram.org/bot{TOKEN}/getUpdates"

Extract message.chat.id from the first result. If no results, remind the user to send a message to the bot first, then retry.

3. Save Config

Write DATA_DIR/telegram-config.md:

# Telegram Config

- Bot token: {TOKEN}
- Chat ID: {CHAT_ID}
- Bot username: @{USERNAME}

4. Verify

Send a test message:

curl -s -X POST "https://api.telegram.org/bot{TOKEN}/sendMessage" \
  -H "Content-Type: application/json" \
  -d '{"chat_id": "{CHAT_ID}", "text": "👋 Job search bot connected! Send me a job URL to apply, or say \"search\" to find jobs."}'

If successful, tell the user setup is complete and they can start the loop with /loop 1m /proficiently:jobsearch-telegram.


Config & State Files

Resolve the data directory using shared/references/data-directory.md.

Config — DATA_DIR/telegram-config.md (created during setup, contains bot token + chat ID). Never commit this file to git. Read this first on every poll cycle to get credentials.

State — DATA_DIR/telegram-state.md (tracks polling position). Create if missing:

# Telegram State

## Polling
- last_update_id: 0

## Pending Confirmations
<!-- Format: [msg_id: X] type/stage — description — waiting since DATE
     For apply confirmations, also store: job_url, form_url, field_mapping (JSON) -->

(none)

## Recent Actions
<!-- Last 20 actions taken -->

Workflow

Step 1: Load Context

  1. Read DATA_DIR/telegram-config.md — if missing, run First-Time Setup above and stop
  2. Read DATA_DIR/telegram-state.md — if missing, create from template above
  3. Read these if they exist: DATA_DIR/job-history.md, DATA_DIR/application-data.md, DATA_DIR/preferences.md

Step 2: Poll for Messages

curl -s "https://api.telegram.org/bot{TOKEN}/getUpdates?offset={LAST_UPDATE_ID+1}&timeout=5"

If no new messages → exit silently. Do not log, do not send anything.

Step 3: Classify Each Message

Parse each message and classify:

Message TypeDetectionRoute
Job URLContains greenhouse.io, lever.co, myworkdayjobs.com, ashbyhq.com, or other job board URLStep 4a: Apply
"apply last" / "apply"Text matches apply (with optional last/current)Step 4a: Apply
"search for..."Text starts with search, find, look forStep 4b: Search
"tailor resume for..."Text mentions tailor/resume + contextStep 4c: Tailor
"status" / "what's open"Text asks about application statusStep 4d: Status
"help"Text is exactly help or ?Step 4e: Help
Confirmation replyThreaded reply to a pending confirmation message, OR standalone confirm word (yes/y/go/no/cancel) when pending confirmations existStep 5: Confirm
Plain textAnything elseStep 6: Note

Step 4a: Handle Job URL / Apply Request

  1. Extract the URL or resolve "last"/"current"
  2. Check if a job folder already exists in DATA_DIR/jobs/ for this URL
  3. Send acknowledgment to Telegram: 🎯 Got it — applying to [URL or "most recent job"]. I'll scan the form, tailor your resume, and propose answers. Stand by...
  4. Execute the apply workflow from skills/apply/SKILL.md:

- Follow Steps 0-6 (prerequisites → navigate → scout → generate materials → scan fields → propose answers) - Instead of using AskUserQuestion for approval, send the Step 6 proposal summary to Telegram and add to Pending Confirmations - Store in the pending confirmation: job_url, form_url (the direct ATS form URL navigated to), and field_mapping (the full approved field→value JSON) - Wait for user confirmation via Telegram (will arrive as a reply in a future poll cycle)

  1. When field-approval confirmation arrives (Step 5), re-navigate to form_url, fill all fields, then send a second confirmation (submit approval) with a screenshot description and ask: "Everything looks good — submit?"

- Store this as a new pending confirmation with stage: "submit-approval"

  1. When submit-approval arrives, click Submit, then log the application (Step 9 of the apply skill).

Sending the proposal: Use the send message helper (Step 8) with the full field summary. Keep it under 4000 chars. If longer, split into: (1) auto-fill fields, (2) proposed answers, (3) needs input.

Two-phase confirmation flow:

  • Phase 1 (stage: field-approval): User approves the field→value mapping
  • Phase 2 (stage: submit-approval): User approves the final form before clicking Submit
  • Never skip phase 2 — submitting a job application is irreversible

Step 4b: Handle Search Request

  1. Extract search keywords from the message
  2. Send acknowledgment: 🔍 Searching for: [keywords]...
  3. Execute the job-search workflow from skills/job-search/SKILL.md
  4. Send results summary to Telegram: 🔍 Found X matches for "[keywords]": 1. [Role] at [Company] — [fit score] [URL] 2.... Reply with a number to apply, or "apply 1" / "apply 3" etc.
  5. Add to Pending Confirmations with the job list so replies can be matched

Step 4c: Handle Tailor Request

  1. Extract job reference (URL, "last", or job name)
  2. Send acknowledgment: 📝 Tailoring resume for [job]...
  3. Execute the tailor-resume workflow from skills/tailor-resume/SKILL.md
  4. Send result to Telegram with key changes made
  5. Note the file path where the tailored resume was saved

Step 4d: Handle Status Query

Compile from DATA_DIR/job-history.md and DATA_DIR/jobs/*/applied.md:

📋 Job Search Status

Applied (X):
- [Role] at [Company] — [date] — [status]
- ...

Saved but not applied (Y):
- [Role] at [Company] — [date saved]
- ...

Pending your confirmation:
- [any pending apply proposals]

Step 4e: Handle Help Request

Send:

👋 Here's what you can do:

<b>Apply</b>
• Send a job URL → I'll apply for you
• "apply last" → continue with the most recent job

<b>Search</b>
• "search [keywords]" → find matching jobs
• "find AI product jobs" → same thing

<b>Resume</b>
• "tailor resume for [job URL or name]"

<b>Status</b>
• "status" → see all applications and what's pending

<b>Other</b>
• "help" → this message
• Any other text is saved as a note

Step 5: Handle Confirmation Reply

A confirmation reply is either:

  • A threaded reply (Telegram's native reply feature): match via reply_to_message.message_id to a pending confirmation
  • A standalone message containing only a confirm/reject word (yes, y, go, send it, 👍, no, skip, cancel, ❌) when pending confirmations exist

Disambiguation when standalone:

  • If exactly one pending confirmation exists → apply it to that confirmation
  • If multiple pending confirmations exist → respond with a numbered list of what's pending and ask which one they mean: You have X things waiting. Which one? 1. [description of pending 1] 2. [description of pending 2] Reply with a number.

Processing:

  1. Look up the pending confirmation in telegram-state.md
  2. Parse the user's reply:

- "yes" / "y" / "go" / "send it" / 👍 → approve - "no" / "skip" / "cancel" / ❌ → reject - "yes but [changes]" → approve with modifications - A number (e.g., "2") → select that option from a list

  1. Execute the approved action:

- stage: field-approval → re-navigate to form_url, fill fields using field_mapping, then send submit-approval prompt - stage: submit-approval → click Submit, log application - Search result selection → start apply workflow for selected job

  1. Send confirmation of what was done
  2. Remove from Pending Confirmations, add to Recent Actions

Step 6: Handle Plain Text Note

  1. Log to DATA_DIR/telegram-inbox.md with timestamp
  2. If it looks like a company name or job title, suggest: "Want me to search for [text] jobs?"
  3. Otherwise confirm: "Noted 👍"

Step 7: Update State

After processing all messages:

  1. Update last_update_id in DATA_DIR/telegram-state.md
  2. Update Pending Confirmations (add new, remove resolved). For each apply confirmation, include: [msg_id: X] apply/field-approval — [Role] at [Company] — waiting since DATE job_url: https://... form_url: https://... field_mapping: {"First Name": "...", "Email": "...",...}
  3. Update Recent Actions (keep last 20, newest first)

Step 8: Sending Messages

Read credentials from DATA_DIR/telegram-config.md, then send via curl:

curl -s -X POST "https://api.telegram.org/bot{TOKEN}/sendMessage" \
  -H "Content-Type: application/json" \
  -d '{"chat_id": "CHAT_ID", "text": "MESSAGE", "parse_mode": "HTML"}'

For replies to specific messages, add "reply_to_message_id": MSG_ID.

Formatting rules:

  • Use HTML: <b>bold</b>, <i>italic</i>, <code>code</code>
  • Keep messages under 4000 chars (Telegram limit is 4096)
  • Be concise — user reads on mobile
  • Use line breaks for readability, not walls of text

To capture the sent message's message_id (needed for tracking confirmations):

# Parse from response JSON
jq -r '.result.message_id'

Key Rules

  • HEADLESS. Never use AskUserQuestion. All interaction happens through Telegram.
  • Acknowledge fast. Send a quick reply before starting long operations (apply, search, tailor).
  • Suggest before acting. For apply: always send the proposal and wait for Telegram confirmation before filling fields.
  • Never skip submit confirmation. Submitting an application is irreversible — always require explicit approval.
  • Exit silently if no new messages. Don't log empty polls.
  • Concise messages. Mobile-first. No walls of text.
  • Track everything in telegram-state.md so confirmations persist across poll cycles.
  • No secrets in git. Credentials live only in DATA_DIR/telegram-config.md.
  • Log costs every cycle. See Cost Tracking below.

Cost Tracking

After every poll cycle that does actual work (not silent exits), you MUST:

  1. Count your token usage for this cycle. At the end of your response, estimate:

- Input tokens: approximate total from all files read + tool results received - Output tokens: approximate total from all text + tool calls you generated - Use these rates: input = $3/M tokens, output = $15/M tokens (cache reads = $1.875/M)

  1. Append to DATA_DIR/telegram-cost-log.csv (create with header if missing): timestamp,action,input_tokens,output_tokens,estimated_cost_usd Example row: 2026-03-11T14:30:00Z,apply-proposal,12000,3500,$0.09
  2. Include a cost footer in every Telegram reply: --- 📊 ~12K in / ~3.5K out · ~$0.09
  3. On "status" queries, include a cost summary section: 💰 Cost this session: $X.XX (Y interactions) 💰 Cost all-time: $X.XX (Z interactions) Compute from the CSV log.

Permissions Required

Add to ~/.claude/settings.json:

{
  "permissions": {
    "allow": [
      "Bash(curl:*)",
      "Bash(jq:*)",
      "Read(~/.proficiently/**)",
      "Write(~/.proficiently/**)",
      "Edit(~/.proficiently/**)",
      "Read(~/.claude/skills/**)",
      "mcp__claude-in-chrome__*"
    ]
  }
}

平台分布

Codex

35.42%
按下载量换算38

Claude

33.32%
按下载量换算36

Cursor

18.89%
按下载量换算20

Gemini CLI

10.28%
按下载量换算11

安全审计

Gen Agent Trust Hub

通过

Socket

可疑

Snyk

未通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills