关于 notion-opportunity-database
将 Notion 数据库作为机会发现、去重、评分、申请交接及后续状态记录系统的技能。它定义字段、状态流转和逐条交接规则,并提供查询能力受限时的替代方法。
主要功能
- 01管理机会数据库字段与视图
- 02搜索并去重候选记录
- 03按候选人背景完善和评分
- 04按申请阶段维护状态
- 05逐条交接申请任务
适用场景
- 01整理并评估待申请职位
- 02筛选待处理记录并交给申请执行技能
- 03记录申请结果并更新机会状态
MCP 相关
使用 Notion MCP/API 获取数据库结构、查询和去重记录、创建或更新页面及属性。若 MCP 查询工具不可用,可使用筛选视图、搜索或官方 Notion API。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ arthurzakirov/ opportunityos --skill notion-opportunity-database安装后在 Claude Code 中输入/notion-opportunity-database确认已加载。
详细介绍
Notion 机会数据库
用途
当 Notion 数据库应作为机会工作流的唯一事实来源时,使用此技能。
数据库负责发现、去重、评分、记录依据、移交申请以及跟踪操作后的状态。它应一次向执行技能(例如 job-application-operator)提供一个选定的机会。
工具边界
使用 Notion MCP/API 工具来:
- 获取数据库架构
- 查询候选行
- 检查重复项
- 创建行
- 更新行属性
- 更改架构和视图
- 回写申请状态
如果有 MCP/API 访问权限,不要使用浏览器自动化来编辑 Notion。
MCP 查询限制
某些 Notion MCP 环境会提供 SQL/数据源查询工具,但该工具在运行时会报错,例如 Tool notion-query-data-sources not found。遇到这种情况时,不要因无法进行全表 SQL 扫描而停滞。
改用以下方法:
- 创建或使用筛选后的 Notion 视图来显示确切的审查队列,例如
Status is empty、Status is Needs enrichment或Status is To do。 - 从该可见队列中获取/搜索行,并通过 MCP
update_page更新各个页面。 - 如果无法按视图枚举行,则在数据源中使用宽泛的职位/公司词进行 Notion 搜索,以发现可能的行,然后逐个获取/更新页面。
- 对于已知数据集,将先前收集的页面 ID 用作有界回填列表。
- 如果需要完整可靠性且具备凭据,请通过本地脚本使用官方 Notion API 数据库查询端点,而不要使用有问题的 MCP SQL 包装器。
尽可能优先使用临时审查视图,而不是搜索,因为它有明确可见的完成条件:视图变为空。
推荐架构
最低字段要求:
Role或Name:标题URL:URLCompany:文本Status:选择Priority Score:数字,0-100Rationale:富文本Role Family:选择Location:多选Salary Range:文本Salary Rationale:富文本Source:选择
URL 应是最靠前的可见列之一,理想情况下紧接在标题之后。
状态语义
Status 表示申请/执行状态,而非优先级或匹配度标签。
推荐值:
Needs enrichment:已发现或导入,但匹配度、评分、依据、薪资或来源字段尚不完整Enriching:Agent 正在研究并补全该行Backlog:已补全并评分,尚未选入申请工作To do:从待办池中选出,纳入下一批申请工作In progress:正在检查、填写或准备申请表Human blocked:需要用户操作、登录、验证码、缺失信息、未知必填字段或策略决策Ready to apply:申请已准备就绪,等待最终提交/审核Submitted:申请已提交Waiting for response:已提交,正在等待公司回复Interview invite:公司邀请候选人预约面试,但尚未安排Interview scheduled:面试已加入日历或已通过其他方式确认Interview completed:面试已完成,候选人正在等待后续回复Assessment received:公司已发送在线评估/挑战,但尚未开始Assessment in progress:正在进行评估/挑战Assessment submitted:评估/挑战已提交,候选人正在等待后续回复Rejected:申请后被拒,或候选人自行决定不再申请Closed:职位已不再开放
使用 Priority Score 进行排序,并使用 Rationale 说明匹配依据。
预期流程:
Needs enrichment -> Enriching -> Backlog -> To do -> In progress -> Ready to apply -> Submitted -> Waiting for response
Human blocked 是从 In progress 分出的分支;问题解决后,返回 In progress 或 Ready to apply。
提交后的公司回复分支:
Waiting for response -> Interview invite -> Interview scheduled -> Interview completed -> Waiting for response
Waiting for response -> Assessment received -> Assessment in progress -> Assessment submitted -> Waiting for response
Waiting for response -> Rejected
丰富信息的标准
完整丰富信息需要候选人背景。在评估匹配度或撰写针对候选人的理由之前,请先确认是否可以获取:
- 简历或经验方面的证据
- 目标职位偏好
- 地点/远程办公限制
- 薪酬期望(如相关)
- 求职策略或不可妥协的条件
如果无法获取这些背景,请询问是否改为部分丰富信息。部分丰富信息仍可补充公司公开信息,例如 URL、公司、职位类别、地点、来源、薪资范围和薪资理由,但应将 Priority Score 和候选人匹配度 Rationale 留空,或明确标注需要候选人背景。
当一行包含以下内容时,即可认为其信息丰富程度足以进入 Backlog:
- 有效的
URL CompanyRole FamilyLocation- 数值型
Priority Score - 汇总后的
Rationale Source- 有可信数值时填写
Salary Range,否则留空 Salary Rationale,说明信息来源、可信度,或薪资未知的原因
原始导入和信息不完整的职位使用 Needs enrichment。Agent 正在积极研究某行时使用 Enriching。除非用户明确接受部分丰富信息,否则不要在缺少候选人背景、未完成完整信息丰富时,将某行移至 Backlog 以便基于匹配度筛选职位。除非用户明确选择在信息尚未完整丰富时申请,否则不要在某行进入 Backlog 之前将其移至 To do。
Rationale 字段
保留一个汇总的 Rationale 字段,不要拆分为以下多个列:
- 匹配度理由
- 经验信号
- 申请角度
- 主要风险
推荐结构:
Fit: ...
Experience signal: ...
Application angle: ...
Main risk: ...
薪资字段
将薪资数值与相关说明分开:
Salary Range:仅填写实际范围或数值,例如EUR 80k-100k base;未知时留空Salary Rationale:信息来源、可信度,或数值未知的原因
不要在 Salary Range 中填写诸如 not captured; verify directly 的句子。
逐个职位移交申请
调用执行技能之前:
- 获取数据库架构。
- 按状态和评分选择一行,通常选择
Status为To do且Priority Score最高的一行。 - 确认该行包含有效的
URL。 - 将
Status更新为In progress。 - 向
job-application-operator传递精简的移交对象。
移交对象:
source: notion
pageId:
role:
company:
applicationUrl:
priorityScore:
rationale:
salaryRange:
salaryRationale:
roleFamily:
location:
statusBefore:
申请操作员应只处理这一个职位,然后返回结构化结果。
申请后回写
执行后,更新 Notion 行:
Status:Ready to apply、Submitted、Human blocked、Closed或其他申请阶段值Rationale:如果申请结果实质性地影响了决策,则追加简洁的申请结果备注Salary Range和Salary Rationale:仅在申请过程中发现可靠的薪酬信息时更新
不要用申请日志覆盖来源理由。详细字段清单和敏感申请信息应保存在私有日志中。
发现职位时的插入规则
创建行之前,按以下条件去重:
- 完全相同的 URL
- 规范化后的 URL 域名/路径
- 公司 + 职位名称
如果已存在重复项,则补充缺失字段;除非职位已关闭或重新开放,否则保留申请状态。
输出
返回:
- 使用的数据库
- 选中的行
- 移交对象
- 更新前后的状态
- 已更新的字段
- 阻碍事项