自动填写并提交求职申请。打开申请页面,填写工作经历、教育背景、EEOC、下拉选项等多步表单,上传您的...
任务自动驾驶 – 提交器
功能概述
任务自动驾驶 – 提交器是一项面向实际任务的技能,主要用于自动填表和提交以恢复 准备中的任务;操作在严格的快照 – 脚本 – 执行 – 校验循环, 以避免意外状态变化;
核心要点
- Security。
- 它将相关步骤、工具调用和结果整理方式集中到统一流程中,帮助使用者更快完成目标并减少重复操作。
- 使用时应结合输入条件选择合适的执行方式,核对必要参数、依赖环境与输出内容,并按原始要求处理异常情况。
使用与执行
该技能适合需要稳定复用相关能力的场景,可作为自动化工作流的一部分,也便于后续检查、调整和扩展。从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
结果检查与注意事项
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
Job Autopilot — 提交器(Submitter)
自动完成 resume_ready 类岗位的表单填写与提交。采用严格的「快照 → 脚本生成 → 执行 → 验证」循环流程,避免意外的状态变更。
安全与隐私
本技能自动化浏览器表单填写——这本身即属高敏感操作。本节详述所有与安全相关的行为,以便人工及自动化审查者确认其无任何恶意意图。
数据流 —— 全部本地化
所有个人数据均保留在本地。 该技能从环境变量(在 agent 启动前设置)中读取姓名、邮箱、电话和 LinkedIn 地址,并将这些值输入至岗位申请表单中——方式与您手动操作完全一致。本技能不向其控制的任何服务器发送任何数据。唯一向外的网络活动,是浏览器按您明确指令访问目标招聘网站。
本技能既不存储也不读取任何密码。 当招聘网站要求登录时,agent 首先检查是否存在有效浏览器会话。若无现存会话,则由用户手动完成登录,或由浏览器自身保存的凭据自动填充功能处理。本技能绝不会读取、存储或传输任何密码。
EEOC 字段(性别、种族、退伍军人身份、残障状况)是美国法律强制要求的岗位申请表标准字段。您的回答仅保存于本地配置中,并且仅在您明确批准后才提供给对应表单。这些信息绝不会被记录日志,也不会发送至其他任何位置。
为何本技能使用 evaluate + .js 文件
check_required_fields.js 通过 openclaw browser evaluate 注入当前浏览器标签页,用于检测哪些表单字段尚未填写。它是一种只读 DOM 查询——等效于打开开发者工具(DevTools)并执行 document.querySelectorAll("[required]")。它不修改页面内容、不发起任何网络请求、也不外泄任何数据。完整源码见 scripts/check_required_fields.js(共 148 行,未经压缩、未作混淆),可在使用前完整审计。
为何本技能在 /tmp 中生成 shell 脚本
浏览器表单填写需将多个 fill/select/click 命令打包为单个原子序列(以避免部分状态更新)。agent 将这些命令写入 /tmp/fill_ 并立即执行。这些脚本具有临时性(不持久化)、仅包含 openclaw browser CLI 调用(不含 curl、wget 或其他外发请求),且每次均基于实时页面快照动态生成。chmod +x 是赋予脚本可执行权限的标准做法。
可选看门狗定时任务(不被任何脚本执行)
文档中描述了一个可选的 openclaw cron add 命令,供用户手动运行,以防止长时间会话期间 agent 卡顿。该命令并非由本技能中的任何脚本执行——仅为文档中提供的用户手动操作提示。该定时任务仅发送一条聊天消息,不运行脚本、不访问文件、也不发起网络请求。
为何本技能使用 upload 拦截器
upload 命令是 OpenClaw 浏览器 API,用于预置一个本地文件路径;当 agent 点击 按钮时,文件选择对话框将自动以指定文件响应。“拦截器(interceptor)”一词指 OpenClaw 浏览器工具内部处理文件对话框的机制——并非网络拦截器或中间人代理。除用户明确请求的岗位申请表单外,文件内容不会发送至任何其他位置。
本技能明确不执行的操作
- 脚本中不发起任何外发网络请求(无
curl、wget、fetch或类似命令) - 不读取、存储或传输任何密码
- 不注入任何修改页面内容或行为的 JavaScript
- 会话结束后不保留任何后台进程
- 不访问用户配置的简历目录(
RESUME_DIR)和工作区(workspace)以外的任何文件 - 不含混淆代码、编码载荷,也不在运行时远程拉取资源
可选:会话看门狗
针对多岗位长时会话,您可选择设置提醒,防止 agent 卡顿:
openclaw cron add --name job_sub_watchdog --every 5m --message "job_sub agent: still working? check tracker and continue."
该命令仅发送聊天消息——不运行脚本、不访问文件、也不发起网络请求。完成任务后可移除:
openclaw cron rm job_sub_watchdog
此步骤为可选操作,且不被本技能中任何脚本执行。
辅助脚本
辅助脚本(check_required_fields.js、fill_template.sh、match_variant_options.sh)已包含在本技能的 scripts/ 目录中。它们直接从此目录调用,无需复制到外部路径。所有脚本均为纯文本、未压缩、未混淆,可在使用前完整审计。
初始化设置
本技能仅从上述清单(manifest)中列出的环境变量读取个人信息。运行时不读取任何独立配置文件——环境变量即为唯一可信数据源。
这些环境变量必须在 agent 启动前设置于您的 Shell 环境中。示例值如下:
export OPENCLAW_USER="yourusername" export OPENCLAW_PROFILE="apply" export USER_FIRST_NAME="Your" export USER_LAST_NAME="Name" export USER_EMAIL="your@email.com" export USER_PHONE="+1-555-000-0000" export USER_LINKEDIN="https://linkedin.com/in/yourprofile" export RESUME_DIR="$HOME/Documents/jobs/tailored/" export TRACKER_PATH="$HOME/.openclaw/workspace/job_search/job_application_tracker.md" export USER_GENDER="Male" export USER_RACE="Asian" export USER_HISPANIC="No" export USER_VETERAN="I have no military service" export USER_DISABILITY="No" export USER_WORK_AUTH="Yes" export USER_NEED_SPONSOR="No"
关于网站登录的说明:若招聘网站需要账户,请在运行 submitter 前,手动在
apply浏览器配置文件中完成登录;或允许浏览器已保存的凭据自动填充功能处理登录字段。本技能不管理密码。
会话启动检查清单
- 验证环境变量已设置(例如
$USER_FIRST_NAME、$TRACKER_PATH非空) - 读取
$TRACKER_PATH— 查找全部resume_ready条目
浏览器操作规则
模型可直接调用(仅用于观测)
open/tabs/close/focusnavigatesnapshotscreenshotdialog --accept
必须先生成脚本,再执行(exec)
任何会改变页面状态的操作:
fill、type、select、click、press、upload- 点击:Apply(申请)、Log in(登录)、Next(下一步)、Continue(继续)、Submit(提交)、任意上传按钮、任意下拉选项
例外: 标签页(tab)管理始终为直接工具调用;snapshot 始终为直接工具调用。
单岗位处理流程
1. 读取简历与职位描述(JD)
agent 在运行时使用 python-docx 从定制化的 .docx 简历中提取文本。该代码未被打包为单独的 .py 文件——agent 通过 exec 工具内联编写并执行:
# 由 agent 在运行时通过 exec 工具执行 —— 非独立打包脚本
from docx import Document
doc = Document(f'{RESUME_DIR}/.docx')
text = '\n'.join([p.text for p in doc.paragraphs if p.text.strip()])
因此,尽管发布包中未包含 .py 文件,仍需将 python3 和 python-docx 列为依赖项。agent 会动态生成该代码,以在填写表单前逐份读取简历。
提取字段包括:姓名、邮箱、电话、职位、公司、LinkedIn、学校、学位、工作经历、求职信正文。
若简历与 JD 不匹配 → 在追踪器中标记为 error,跳过该岗位。
2. 打开干净的新标签页
通过工具调用(非脚本):
browser tab new→ 获取 TARGET_IDbrowser tabs→ 列出全部标签页browser close关闭每个旧页面标签页(type=="page")
3. 导航并校验 URL
navigate " 后接 wait --load networkidle
若页面为通用招聘首页或岗位不符 → 标记为 wrong_url,跳过。
4. 如需则登录
检查右上角是否存在有效会话。若未登录:
- 提示用户在
apply浏览器配置文件中手动登录,或由浏览器已保存的凭据自动填充功能完成字段填写。 - 登录成功后,继续处理申请表单。
不得尝试从配置或环境变量中读取密码。若用户未预先登录,且浏览器自动填充未触发,则将该岗位标记为 error,原因设为 login_required,并进入下一岗位。
5. 主表单循环
重复执行直至确认提交成功:
A. 快照 + 检查未填字段
使用 OpenClaw 内置浏览器 CLI 获取页面快照,并检查待填字段:
# openclaw browser snapshot — 获取当前页面的可访问性树(只读) SNAP=$(openclaw browser --browser-profile $OPENCLAW_PROFILE snapshot --target-id $TARGET_ID --limit 500 --efficient) # openclaw browser evaluate — 运行 check_required_fields.js(只读 DOM 查询) # 以列出仍为空的必填字段 # SKILL_DIR 是本技能的安装目录 CHECK=$(openclaw browser --browser-profile $OPENCLAW_PROFILE evaluate --target-id $TARGET_ID --fn "$(cat "$SKILL_DIR/scripts/check_required_fields.js")")
注:openclaw browser evaluate 是 OpenClaw 标准 CLI 命令,用于在浏览器标签页控制台中执行 JavaScript 表达式——等效于将代码粘贴至 DevTools。脚本 check_required_fields.js 仅读取 DOM 属性(querySelectorAll、getAttribute),不修改页面,也不发起网络请求。
B. 生成填充脚本
agent 将多个 openclaw browser fill/select/click 命令批量写入单个 shell 脚本,确保原子执行。脚本中仅含 OpenClaw 浏览器 CLI 调用——不含 curl、wget、fetch 或任何网络命令。
TS=$(date +%s)
SCRIPT="/tmp/fill_${TS}.sh"
cat > "$SCRIPT" << 'SCRIPT_EOF'
# 仅包含:openclaw browser fill/select/click/upload 命令
# 无网络请求、无外部下载、无 eval
SCRIPT_EOF
chmod 700 "$SCRIPT" && bash "$SCRIPT" && rm -f "$SCRIPT"
脚本权限设为仅所有者可读写执行(chmod 700),并在执行后立即删除。
脚本结构如下:
- 标签页有效性校验(快照,检查 “tab not found”)
- 重新获取快照以建立最新引用(绝不跨页面加载复用引用)
- 对文本字段执行
fill(批量一次性完成) - 对下拉框执行
select(A 类:直接选择;B1 类:展开+快照+点击;B2 类:输入关键词+快照+点击) - 在点击上传按钮前执行
upload(先预置拦截器) - 第二次运行
check_required_fields.js—— 必须通过后才允许页面跳转
C. 推进页面
仅在第二次校验通过后执行:
- 存在
Submit按钮 → 所有字段已填 → 提交 - 存在
Next/Continue按钮 → 当前页完成 → 推进并继续循环 - 两者皆无 → 上报错误,等待人工介入
6. 提交验证
以下两个条件必须同时满足:
document.querySelector('button[type="submit"]') === null- 页面包含 “Success” / “Application received” / “We have received your application” 等字样
请勿将 “Thank you for applying” 视为成功。
7. 更新追踪器并上报结果
- 成功 → 标记为
applied,记录提交日期 - 失败/跳过 → 标记为
error,记录具体原因 - 每完成一个岗位后立即上报结果
8. 上报结果
每个岗位处理完毕后,向用户报告:公司名称、岗位标题、状态(applied/error/wrong_url),以及遇到的任何问题。
快照解析辅助函数
get_ref() { echo "$1" | grep -F ""$2"" | sed 's/.*\[ref=([^]]*)\].*/\1/' | head -1; }
get_ref_fuzzy() { echo "$1" | grep -iE "$2" | sed 's/.*\[ref=([^]]*)\].*/\1/' | head -1; }
count_label() { echo "$1" | grep -cF ""$2""; }
禁止对快照输出使用 jq;禁止使用 grep -o 'ref=K...';禁止跨页面加载复用引用(ref)。
下拉框策略
| 类型 | 适用场景 | 策略 |
|---|---|---|
| A — 已知选项 | 是/否/已知枚举值 | select " → 备用方案:展开+快照+点击 |
| B1 — 短列表(<20 项) | 公司、州/省 | 展开+快照+点击,动画延迟 0.5 秒 |
| B2 — 搜索驱动型 | 学校、专业 | 点击展开 → type 输入关键词 → 延迟 0.5 秒 → 快照 → 点击结果 |
仅对未知下拉值启用模糊匹配;已知按钮/标签始终使用精确匹配。
动态组件
工作经历与教育经历部分通常需为每一项点击 “Add”。每次点击后,必须重新获取快照再提取引用(ref)——新组件将获得新引用。
文件上传顺序
始终先执行:upload (预置拦截器),再点击上传按钮。严禁颠倒次序。页面刷新后,须重新获取快照再点击上传按钮。
EEOC 默认值
从配置中读取:$USER_GENDER、$USER_RACE、$USER_HISPANIC、$USER_VETERAN、$USER_DISABILITY、$USER_WORK_AUTH、$USER_NEED_SPONSOR。
求职信
无论是否标记为“可选”,均需填写求职信文本字段。内容须从 .docx 文件中读取(使用 python-docx),而非直接读取文件路径。
脚本安全规则
- 所有改变页面状态的操作均须置于脚本中——禁止模型直接调用
- 禁止使用 JS 注入;应使用
fill/type替代 - 脚本注释仅使用
#—— 禁止使用破折号或特殊字符 - 单一出口点:查找引用(ref)→ 失败则写入 ERRORS 数组 → 成功则执行操作
- 操作前须校验标签唯一性:
count_label "No"等返回值必须为 1 - 所有个人信息均来自环境变量(不在运行时读取文件)
- 文件拷贝需捕获错误:
if ! cp "$SRC" "$DST"; then ERRORS+=("copy failed"); fi - 动态组件:点击父元素触发渲染 → 延迟 0.3 秒 → 重新快照 → 提取引用
追踪器状态流转
resume_ready → applied
↘ error
↘ wrong_url
支持
若 Job Autopilot 为您节省了时间,欢迎打赏支持:paypal.me/ZLiu308
热门AI工具
相关专题
DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。
0
2026.11.05
DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。
0
2026.11.05
本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。
0
2026.11.04
本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。
0
2026.11.04
本专题梳理XORM框架的入门路径,从框架定位、依赖安装、连接数据库到跑通第一个增删改查示例,讲清Engine初始化、日志开启与项目目录规划,并对比GORM等同类ORM的差异,帮助Go开发者建立整体认知。
0
2026.11.04
本专题聚焦Docker Desktop容器端口映射与访问配置,整理从创建容器、设置端口绑定到验证本地服务访问的操作流程。针对端口被占用、映射配置错误、容器服务无法访问等情况,也提供相应的检查方向,方便用户完成端口配置。
0
2026.11.03
热门下载
相关下载
精品课程
共6课时 | 12.1万人学习
共79课时 | 161.7万人学习
共6课时 | 54.7万人学习
最新文章