办理豆包专业版学生优惠申请:引导用户绑定抖音、完成学生认证并领取权益。仅当用户明确提出申请、继续办理或查询申请状态时加载;单纯咨询优惠或诉求不明确时不加载。
Scanned 9/12/2026
Install to Claude Code
npx -y skills add ahang1598/doubao-workbuddy-qwenwork-skills --skill student-discount-application --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Student Discount Application?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/ahang1598-student-discount-application)More formats (shields.io, HTML) on the badges page.
---
name: student-discount-application
description: 办理豆包专业版学生优惠申请:引导用户绑定抖音、完成学生认证并领取权益。仅当用户明确提出申请、继续办理或查询申请状态时加载;单纯咨询优惠或诉求不明确时不加载。
---
> **目录命名说明**:当前仓库根目录名为 `v2`,用于承载 Skill 第二版实现迭代;frontmatter 中的 `name: student-discount-application` 是 Skill 发布到平台时的正式名称。如平台要求目录名与 Skill 名一致,发布前可将根目录重命名为 `student-discount-application` 或 `student-discount-application-v2`。
# 学生优惠申请
办理用户的豆包专业版学生优惠申请。每次以 `{}` 调用工具 `student_discount_run_application_step`,读取返回的 `content`(当前阶段文本)和 `errorMsg`(失败提示),按返回结果引导用户操作。
工具返回后请先查阅对应的参考文件:
- [内容路由表](references/content-routing.md):根据 `content` 文本确定当前处于哪一阶段;
- [阶段提醒文案](references/stage-reminders.md):根据阶段生成对用户的回复;
- [学生认证交互](references/student-auth-workflow.md) + [学信网当前有效学籍核验](references/chsi-enrollment-verification.md):命中「需要学生认证」阶段时执行。
## 操作规则
1. **工具调用方式**:始终以空对象 `{}` 调用 `student_discount_run_application_step`,不需要传入任何信息。
2. **唯一业务工具**:办理全程只使用上述工具。只有首次进入 `STUDENT_AUTH_REQUIRED` 阶段时,额外执行一次内嵌的[学信网当前有效学籍核验](references/chsi-enrollment-verification.md)。
3. **读取返回**:只看 `content`(阶段文本)和 `errorMsg`(失败提示)。
4. **路由判断**:严格按照 `content` 中的稳定文字匹配阶段;`errorMsg` 不为空时按错误处理。不要凭感觉脑补未明确出现的状态。
5. **用户交互素材**:
- 二维码链接:从本次返回的 `content` 文本里直接提取,用 markdown 图片展示;不要复用上一轮的旧链接,也不要猜测链接。
- 抖音绑定按钮名称:只用 `content` 里明确出现的文案,不编造按钮或链接。
- 权益名称和有效期:只采用 `content` 里明确写出的内容;没写就不展示,不猜测。
6. **敏感信息**:不要向用户询问或复述账号、密码、短信验证码、身份证号、人脸信息等认证数据。
7. **成功口径**:只有明确到达 `BENEFIT_GRANTED` 或 `BENEFIT_ALREADY_GRANTED` 两个终态时,才可以告知用户领取成功。
8. **学信网流程**:每个办理周期最多执行一次。执行完毕后必须再次调用 `student_discount_run_application_step({})`,并按「学信网结果 → 新阶段文案 → 二维码(如需要)」的顺序回复用户。
9. **浏览器自动化边界**:学信网当前有效学籍核验或其他需要浏览器自动化的内嵌子流程中,凡涉及登录、实名认证、人脸识别、报告付费申请或延长有效期、第三方跳转或可疑页面的步骤,必须将控制权完全交还给用户亲自在浏览器中完成点击、输入和确认;模型不得自动提交任何涉及敏感凭据或个人信息的操作。若出现付费提示、第三方非官方页面或其他异常情况,立即终止子流程并返回 NO_RESULT,回到主 Skill 强制续调统一工具。
## 执行流程
1. 确认用户要开始申请、继续办理或查询申请状态。
2. 调用 `student_discount_run_application_step({})`。
3. 读取返回:
- `content`:合并其中所有文字得到 `visibleText`;
- `errorMsg`:判断是否出错。
4. 对照[内容路由表](references/content-routing.md)判定阶段:
- `errorMsg` 不为空,或 `visibleText` 包含错误相关表述 → 按错误处理;
- `errorMsg` 为空,且 `visibleText` 只匹配到一种正常业务阶段 → 按该阶段处理;
- 匹配不到、同时匹配多个互相矛盾的阶段、或 `STUDENT_AUTH_REQUIRED` 但 `content` 里没有二维码链接 → 再调用一次工具查询;仍然无法确定就停止。
5. 按照[阶段提醒文案](references/stage-reminders.md)生成回复。不要把工具给模型的操作提示(如「请引导用户…」)直接转发给用户;要用自然的用户语气表达。
6. 命中 `STUDENT_AUTH_REQUIRED` 时:根据学信网流程决定先做学信网核验还是直接展示二维码。
7. 判断是否结束流程。以下任一情况出现时**立即停止、不再继续调用工具**:
- 明确到达终态业务阶段:`BENEFIT_GRANTED` / `BENEFIT_ALREADY_GRANTED` / `BENEFIT_RECEIVED_BY_OTHER_ACCOUNT` / `STUDENT_NOT_ELIGIBLE` / `ACTIVITY_EXPIRED` / `ACTIVITY_NOT_STARTED` / `PLATFORM_NOT_SUPPORTED`;
- 无法识别当前登录用户(不可重试);
- 某错误或响应不完整自动重试一次后仍失败;
- 触发兜底降级(已给出手动认证链接)。
8. 未结束时,等待用户告知外部操作完成(如「绑定好了」「认证完了」),或按约定秒数自动等待后,回到第 2 步重新调用工具查询最新状态。注意:用户完成学生认证本身不算流程结束,必须继续确认权益是否成功下发。
## 返回结果完整性检查
调用工具后,只需要确认以下几点:
- `content` 里有实际内容(不是空白);
- `errorMsg` 可以读到;
- 进入 `STUDENT_AUTH_REQUIRED` 且需要展示二维码时,`content` 文本中包含二维码图片链接(以 `https://aka.doubaocdn.com/` 开头的 URL)。
判断优先级:只要 `errorMsg` 不为空,就按错误处理(即使 `content` 里出现成功字样)。如果 `errorMsg` 为空但 `content` 明确写了失败,也按错误处理。重新查询一次后仍然不完整或阶段冲突,回复「响应不完整」固定文案并停止。
## 业务阶段与对应动作
根据 `content` 文本匹配到阶段后,按下面的动作执行。路由名直接对应工具返回的英文阶段标签,来源于文本锚点匹配。
| 路由 | 你应该做什么 |
|---|---|
| `PLATFORM_NOT_SUPPORTED` | 告知用户当前平台暂不支持学生优惠申请,需切换到 PC 端;不展示二维码或其他入口;流程结束。 |
| `DOUYIN_BIND_REQUIRED` | 提醒用户先完成抖音账号绑定,引用 `content` 明确给出的按钮文案(如「去绑定抖音账号」);告知绑定完成后回复「好了」继续;等待用户回复。 |
| `STUDENT_AUTH_REQUIRED` | **首次进入**:先执行一次学信网当前有效学籍核验,无论结果如何都重新调用工具,按「学信网结果 → 新阶段文案 → 二维码(如仍需要)」顺序展示。**非首次**:从 `content` 提取二维码链接,阶段文案之后按 markdown 图片格式展示——先写感叹号,再写方括号包裹的图片 alt「学生认证二维码」,再写圆括号包裹本轮 `content` 中提取到的实际 URL(必须是以 `https://aka.doubaocdn.com/` 开头的新地址)。圆括号内不要写任何字面占位字符串,必须填入实际提取到的链接;告知用户扫码完成手机端认证,回来回复「好了」继续。 |
| `STUDENT_NOT_ELIGIBLE` | 如实告知已完成学生身份核验但不符合本次活动条件;可补充 `content` 中明确给出的脱敏原因;不宣称认证失败;流程结束。 |
| `BENEFIT_GRANTED` | 恭喜用户 +「2.5 倍学生专属额度」说明 + 38 元专业版引导链接;明确告知权益已到账;流程结束。 |
| `BENEFIT_ALREADY_GRANTED` | 告知账户中已有权益;从 `content` 提取权益名称替换,仅当生效和失效时间同时出现在 `content` 中时保留有效期句子;不附付费引导;流程结束。 |
| `BENEFIT_RECEIVED_BY_OTHER_ACCOUNT` | 告知该学生身份已在其他账号领取过,同一身份只能领一次;不要求重新认证/绑定、不猜测领取账号;流程结束。 |
| `ACTIVITY_EXPIRED` | 告知本次学生优惠活动已结束;不推测重新开放时间;流程结束。 |
| `ACTIVITY_NOT_STARTED` | 告知本次学生优惠活动尚未开始;不推测具体开始时间;流程结束。 |
### 等待与自动重查规则
| 场景 | 等待秒数来源 | 自动重查次数上限 |
|---|---|---|
| 响应无法识别、阶段冲突、缺少二维码链接 | — | 合计最多 **1 次** |
| 工具执行错误(见错误处理表) | 读 `content` 中秒数,未写时用错误表的降级秒数 | 合计最多 **1 次** |
| 学信网流程刚执行完毕后的「强制续调」 | 不等待,立即续调 1 次;续调后若响应仍不完整或阶段冲突,可再独立重查 1 次 | 这 2 次与上述普通重查互不占用 |
### 权益文案替换规则
- `BENEFIT_GRANTED`:使用固定庆祝文案 +「2.5 倍学生专属额度」+ 38 元专业版引导链接(详见阶段提醒文案)。
- `BENEFIT_ALREADY_GRANTED`:
- `{benefitName}`:用 `content` 里明确写出的权益名称替换;若只是泛称,写「学生优惠权益」即可。
- 有效期句子:只有 `content` 里同时明确出现生效时间和失效时间两端时,才保留整句;任一端没写就整句省略,不要猜测日期。
## 学信网子流程
只在**首次进入 `STUDENT_AUTH_REQUIRED` 且本轮办理还没有做过学信网核验**时执行一次。**交互细节、首次判定、输出顺序全部以 [学生认证交互](references/student-auth-workflow.md) 为准**,以下是执行骨架:
1. 读取并执行[学信网当前有效学籍核验](references/chsi-enrollment-verification.md)。
2. 执行前记住:本轮已做过学信网,后续不再重复。不要展示当前返回中的旧二维码链接。
3. 核验结果归为三种之一:有有效学籍 / 无有效学籍 / 没查到结果。
4. 无论学信网成功、失败、取消还是没结果,**必须立即再调用一次** `student_discount_run_application_step({})` 获取最新状态。
5. 对新返回的结果重新判断阶段。回复用户时**严格按以下顺序**,任何情况下都不能省略学信网结果:
1. 先展示学信网结果文案(有/无/没查到);
2. 再展示新阶段或错误的固定文案;
3. 如果新阶段仍是 `STUDENT_AUTH_REQUIRED`,最后才展示从本次新返回 `content` 中提取的二维码图片。
6. 即使学信网结果为「无有效学籍」或「没查到结果」,也**不要直接判定用户没有资格**,仍以统一工具返回的阶段为准;同一办理周期不再重复做学信网核验。
## 交互素材
- **抖音绑定入口**:只用 `content` 中明确给出的按钮文案(常见为「去绑定抖音账号」);不要编造其他名称、链接或入口。
- **学生认证二维码**:从 `content` 文本中提取二维码图片 URL,在阶段文案之后按 markdown 图片格式展示——先写感叹号,再写方括号包裹的图片 alt「学生认证二维码」,再写圆括号包裹本轮最新返回的实际 URL。圆括号内不要写任何字面占位字符串(如 `<URL>` 或 `<二维码真实URL>`),必须填入从 `content` 提取到的真实地址;不要复用或猜测上一轮的旧链接。
- 如果用户说二维码失效或扫不了,重新调用工具获取最新内容。
## 错误处理
对照[内容路由表](references/content-routing.md)匹配错误类型。`errorMsg` 只用于判断工具是否失败,**不要原样展示给用户**。下表列出遇到各类错误时应该怎么做:
| 错误 | 识别文字(出现在 `content` 或 `errorMsg`) | 是否自动重试 | 等待秒数 | 处理动作 |
|---|---|---|---|---|
| 无法识别当前登录用户 | 「运行时身份上下文不完整」或「缺少必要字段」 | 否 | — | 回复「当前调用环境暂时无法识别登录用户…」固定文案;不向用户索要任何身份信息;直接结束。 |
| 绑定状态查询失败 | 「抖音账号绑定状态」+「查询失败」或「当前绑定状态未知」 | 是 | `content` 中有秒数按其值,否则约 **5 秒** | 回复查询失败文案并自动重查一次;不要展示绑定入口;重试后仍失败就走兜底降级。 |
| 认证状态查询失败 | 「学生认证状态」+「查询失败」或「当前认证状态未知」 | 是 | `content` 中有秒数按其值,否则约 **5 秒** | 回复查询失败文案并自动重查一次;不要要求用户重新认证;重试后仍失败就走兜底降级。 |
| 二维码生成失败 | 「未能生成可用的认证二维码」或「认证二维码暂时生成失败」 | 是 | `content` 中有秒数按其值,否则约 **3 秒** | 回复二维码生成失败文案并自动重查一次;不要展示旧链接;重试后仍失败就走兜底降级。 |
| 权益下发失败 | 「未能确认学生优惠权益发放成功」「权益下发服务暂时不可用」「未确认权益发放成功」 | 是 | `content` 中有秒数按其值,否则约 **5 秒** | 回复查询失败文案并自动重查一次;不要要求重新认证,也不要宣称已经到账;重试后仍失败就走兜底降级。 |
| 响应不完整 | `errorMsg` 非空且未匹配到具体锚点,或 `content` 含「学生优惠申请状态暂时无法确认」 | 是 | 约 **1 秒** | 回复「响应不完整」文案并自动重查一次;重试后仍失败就走兜底降级。 |
**兜底降级(手动认证入口)**:满足以下任一条件时,给出[阶段提醒文案](references/stage-reminders.md)中的手动认证链接并结束本轮流程——
1. 同一错误自动重试一次后仍然失败;
2. 用户明确表达挫败(如「失败了」「不行」「搞不定」「还是不行」「扫码没用」「二维码扫不了」)。
正常流程中不要主动推送这个链接。结束前不要展示内部错误信息。
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!