chore(.cursor): 同步 rules/skills/docs 与 karuo-party(排除凭证);补充 .gitignore
Made-with: Cursor
This commit is contained in:
@@ -1,127 +1,21 @@
|
||||
# Soul 创业派对 - .cursor 配置说明
|
||||
# Soul 创业派对 · `.cursor` 速览
|
||||
|
||||
本目录按 **cursor标准模板** 重构,rules、skills、agent 为**开发团队**服务,用于约束开发、防止互窜、经验升级。
|
||||
## 路径约定
|
||||
|
||||
---
|
||||
- 所有 Skill、会议纪要、agent 经验路径均以 **本 Git 仓库根** 为基准(与 `miniprogram/`、`soul-api/` 同级)。
|
||||
- Rules 中「必须 Read」的路径形如 `.cursor/skills/{name}/SKILL.md`。
|
||||
- Python 脚本统一可用 `config/paths.py` 的 `ROOT`、`SKILLS`、`AGENT`、`MEETING`。
|
||||
|
||||
## 目录结构
|
||||
## 入口优先级
|
||||
|
||||
```
|
||||
.cursor/
|
||||
├── README.md # 本说明(入口)
|
||||
├── config/ # 配置(paths.py、workspace.txt、model_switch.json)
|
||||
├── rules/ # 规则(boundary、checklist、助理、会议、老板分身-索引)
|
||||
├── skills/ # Skills(按角色分配)
|
||||
├── agent/ # 智能体(标准开发团队结构)
|
||||
│ ├── 老板分身/ # 最高权限,协调所有角色
|
||||
│ ├── 开发助理/ # 规则进化、通用经验、项目索引、bat 入口
|
||||
│ │ ├── evolution/ # 通用经验池
|
||||
│ │ ├── script/ # 一键-列出经验池.bat、一键-添加经验.bat 等
|
||||
│ │ └── 项目索引/ # 各角色开发进度(小程序.md、管理端.md 等)
|
||||
│ ├── 小程序开发工程师/
|
||||
│ ├── 管理端开发工程师/
|
||||
│ ├── 后端工程师/
|
||||
│ ├── 产品经理/
|
||||
│ ├── 软件测试/
|
||||
│ └── 团队/ # 跨角色共享经验
|
||||
├── scripts/ # 共享脚本(evolution.py、经验模板.md、db-exec)
|
||||
├── docs/ # 文档(职责定义、边界、分析)
|
||||
├── process/ # 工作流
|
||||
├── meeting/ # 会议纪要(橙子生成)
|
||||
└── archive/ # 历史归档
|
||||
```
|
||||
1. **三端开发**:`rules/soul-project-boundary.mdc` + `skills/*-dev` / `change-checklist`。
|
||||
2. **派对 AI**:若存在仓库根目录 `派对AI/`,可补充读其 `BOOTSTRAP.md`;与 `.cursor` 冲突时 **以 `.cursor` 三端约定为准**(见 `rules/party-ai-dev.mdc`)。
|
||||
|
||||
---
|
||||
## 噪声与体积
|
||||
|
||||
## 开发团队
|
||||
- `meeting/`、`agent/`:历史纪要/evolution 会增多,属正常;需要时可按月归档到子目录或压缩备份。
|
||||
- `scripts/db-exec/node_modules/`:已在 `.cursorignore` 与 `.gitignore` 中排除,首次使用在 `db-exec` 下执行 `npm install`。
|
||||
|
||||
| 角色 | 负责 | 主 Skill | Agent 目录 |
|
||||
|------|------|----------|------------|
|
||||
| 小程序开发工程师 | miniprogram/ | SKILL-小程序开发.md | agent/小程序开发工程师/ |
|
||||
| 管理端开发工程师 | soul-admin/ | SKILL-管理端开发.md | agent/管理端开发工程师/ |
|
||||
| 后端开发 | soul-api/ | SKILL-API开发.md | agent/后端工程师/ |
|
||||
| 产品经理 | 开发文档/1、需求/、临时需求池/ | SKILL-产品经理.md | agent/产品经理/ |
|
||||
| 测试人员 | miniprogram、soul-admin、soul-api | SKILL-测试.md | agent/软件测试/ |
|
||||
| 助理橙子 | 讨论后记录、经验升级 | SKILL-助理橙子-文档同步.md | agent/开发助理/ |
|
||||
## 文档
|
||||
|
||||
**经验**:每角色 `agent/{角色}/evolution/`,团队共享 `agent/团队/evolution/`。用户说「吸收经验」「升级 skills」→ 入库 + 升级 Skill;说「保存开发进度」「任务完成」→ 更新 `agent/开发助理/项目索引/{角色}.md`。
|
||||
|
||||
---
|
||||
|
||||
## 快速决策(必须 Read = 使用 Read 工具读取完整内容)
|
||||
|
||||
| 编辑/场景 | 必须 Read 的 Skill | 自动加载的 Rule |
|
||||
|-----------|-------------------|----------------|
|
||||
| miniprogram/ | `SKILL-小程序开发.md` | soul-miniprogram-boundary |
|
||||
| soul-admin/ | `SKILL-管理端开发.md` | soul-admin-boundary |
|
||||
| soul-api/ | `SKILL-API开发.md` | soul-api |
|
||||
| 开发文档/1、需求/、临时需求池/ | `SKILL-产品经理.md` | product-manager |
|
||||
| 测试、测试用例、回归测试、功能测试、QA | `SKILL-测试.md` | - |
|
||||
| 小橙、橙子、讨论完毕、记录、同步文档 | `SKILL-助理橙子-文档同步.md` | assistant-xiaofeng |
|
||||
| 吸收经验、升级 skills、保存开发进度、任务完成、搞定了 | `SKILL-助理橙子-文档同步.md` | assistant-xiaofeng |
|
||||
| 跨端功能开发 | `SKILL-角色流程控制.md` | - |
|
||||
| 变更完成 | `SKILL-变更关联检查.md` | soul-change-checklist |
|
||||
| 开个会、团队会议、需求评审、方案讨论 | `SKILL-团队会议.md` | soul-meeting |
|
||||
| 会议结束、散会 | `SKILL-助理橙子-文档同步.md`(会议收尾) | soul-meeting |
|
||||
|
||||
---
|
||||
|
||||
## Rules 一览
|
||||
|
||||
| 规则 | 生效范围 | 用途 |
|
||||
|------|----------|------|
|
||||
| soul-project-boundary | `**`(alwaysApply) | 项目组成、核心原则、会话自检 |
|
||||
| 老板分身-索引 | `**`(alwaysApply) | 经验自动收集、Soul 角色推断、编码习惯 |
|
||||
| soul-change-checklist | miniprogram、soul-admin、soul-api | 变更后必过 |
|
||||
| assistant-xiaofeng | 触发词 | 小橙触发器 → SKILL-助理橙子-文档同步 |
|
||||
| soul-miniprogram-boundary | miniprogram/** | 只调 /api/miniprogram/* |
|
||||
| soul-admin-boundary | soul-admin/** | 只调 /api/admin/*、/api/db/* |
|
||||
| soul-api | soul-api/** | 路由边界 + 编码规范(合并版) |
|
||||
| product-manager | 开发文档/1、需求/、临时需求池/ | 产品经理 glob 触发 |
|
||||
| soul-meeting | 触发词 | 开个会、团队会议、需求评审 → SKILL-团队会议 |
|
||||
|
||||
---
|
||||
|
||||
## Skills 一览
|
||||
|
||||
### 角色主 Skill
|
||||
|
||||
| 角色 | 主 Skill | 辅助 Skill |
|
||||
|------|----------|------------|
|
||||
| 小程序开发工程师 | SKILL-小程序开发 | 三端架构 → API开发 → 变更关联检查 |
|
||||
| 管理端开发工程师 | SKILL-管理端开发 | 三端架构 → API开发 → 变更关联检查 |
|
||||
| 后端开发 | SKILL-API开发 | soul-api 规范 → 三端架构 → 变更关联检查 → MySQL直接操作 |
|
||||
| 产品经理 | SKILL-产品经理 | 需求汇总、运营与变更 |
|
||||
| 测试人员 | SKILL-测试 | 变更关联检查、小程序/管理端/API 规范 |
|
||||
| 助理橙子 | SKILL-助理橙子-文档同步 | - |
|
||||
|
||||
### 场景 Skill
|
||||
|
||||
| 场景 | Skill |
|
||||
|------|-------|
|
||||
| 跨端协同 | SKILL-角色流程控制 |
|
||||
| 变更检查 | SKILL-变更关联检查、soul-change-checklist |
|
||||
| 文档同步、经验升级 | SKILL-助理橙子-文档同步 |
|
||||
| **多角色会议** | **SKILL-团队会议** |
|
||||
| next-project | SKILL-next-project仅预览 |
|
||||
| 项目拆解 | SKILL-Next全栈拆解为前后端分离与小程序 |
|
||||
|
||||
---
|
||||
|
||||
## 文档与脚本
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| [开发团队职责定义](./docs/开发团队职责定义.md) | 六角色职责、Skills 分配 |
|
||||
| [三角色边界定义](./docs/三角色边界定义.md) | 开发三角色源码与业务边界 |
|
||||
| [config/目录地图](./config/目录地图.md) | paths.py 路径别名 |
|
||||
| [meeting/](./meeting/) | 会议纪要(橙子生成) |
|
||||
| [经验清单](./agent/开发助理/经验清单.md) | 跨角色经验索引 |
|
||||
| evolution 脚本 | `python .cursor/scripts/evolution.py list` 列出经验池;`add --stdin` 添加经验 |
|
||||
| 一键 bat | `agent/开发助理/script/一键-列出经验池.bat` 等 |
|
||||
|
||||
---
|
||||
|
||||
## 会话启动自检
|
||||
|
||||
新 Cursor 打开本项目时,优先执行 soul-project-boundary 中的「会话启动自检」:仅沿用本项目的 rules、skills、开发风格与配置,排除无关规则。
|
||||
- 架构与迭代说明:`docs/cursor规则与架构分析及优化建议.md`
|
||||
|
||||
@@ -13,5 +13,3 @@
|
||||
| 2026-03-14 | 我的页设置入口隐藏;资料修改引导场景梳理(登录后、@某人、找伙伴、链接卡若) | [2026-03-14.md](./2026-03-14.md) |
|
||||
| 2026-03-16 | 编辑资料页分享名片:转发/朋友圈特殊处理,Canvas 绘制封面,标题「昵称+为您分享名片」 | [2026-03-16.md](./2026-03-16.md) |
|
||||
| 2026-03-17 | 代付美团式:读页→代付页→分享;详情页双态(发起人/好友);目录 loading、最新新增 5 条折叠 | [2026-03-17.md](./2026-03-17.md) |
|
||||
| 2026-03-19 | 原生按钮覆盖定位:chooseAvatar 等用绝对定位 overlay 覆盖,禁止 button 包裹,避免原生样式影响 | [2026-03-19-原生按钮覆盖定位.md](./2026-03-19-原生按钮覆盖定位.md) |
|
||||
| 2026-03-20 | 手机号一键登录与公用组件:getPhoneNumber 耦合 agreePrivacyAuthorization;login-modal 组件;登录后手机号同步 | [2026-03-20-手机号登录与公用组件.md](./2026-03-20-手机号登录与公用组件.md) |
|
||||
|
||||
@@ -53,10 +53,6 @@
|
||||
| 2026-03-17 | 后端、团队 | 架构/最佳实践 | api-dev SKILL | Redis 缓存:parts/hot/recommended/stats/config/章节 content;容灾回退 DB;OSS 上传;/health 返回 database/redis 状态 |
|
||||
| 2026-03-18 | 小程序、团队 | 业务规则/最佳实践 | - | 分享链路兼容好友/朋友圈 singlePage:单页模式能力降级(不支付/不自动领取),引导点击底部“前往小程序”进入完整版 |
|
||||
| 2026-03-18 | 产品、后端、管理端、测试 | 文档归档/需求口径 | - | 文档归档整理:以《以界面定需求》为基准,各角色重整“功能需求+验收口径+风险点”并写入各自经验库;补齐《项目落地推进表》 |
|
||||
| 2026-03-19 | 小程序 | 最佳实践 | miniprogram-dev SKILL §11 | 原生按钮覆盖定位:chooseAvatar 等用绝对定位 overlay 覆盖,禁止 button 包裹,避免原生样式影响(灰色矩形等) |
|
||||
| 2026-03-20 | 安全工程师 | 触发词约定 | security-server-ops、soul-project-boundary | 「帮我部署api到线上」→ 直接执行 soul-api/master.py |
|
||||
| 2026-03-20 | 安全工程师 | 触发词约定 | security-server-ops、soul-project-boundary | 「管理端帮我部署到xx环境」→ 语义化解析:正式→master.py,测试→deploy.py |
|
||||
| 2026-03-20 | 小程序 | 最佳实践 | miniprogram-dev SKILL §8 | 手机号登录:getPhoneNumber 需耦合 agreePrivacyAuthorization;onNeedPrivacyAuthorization 支持页面;登录弹窗公用组件 login-modal |
|
||||
|
||||
---
|
||||
|
||||
@@ -67,4 +63,4 @@
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-20
|
||||
**最后更新**:2026-03-18
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
## 项目总结
|
||||
|
||||
Soul 创业派对产品定位:面向创业者的社区/工具型小程序。核心需求文档在 `开发文档/1、需求/`(按日期命名,以最新为主;见 `1、需求/索引.md`),项目推进表在 `开发文档/10、项目管理/项目落地推进表.md`,临时需求/分析在 `临时需求池/`。
|
||||
Soul 创业派对产品定位:面向创业者的社区/工具型小程序。核心需求文档在 `开发文档/1、需求/需求汇总.md`,项目推进表在 `开发文档/10、项目管理/项目落地推进表.md`,临时需求/分析在 `临时需求池/`。
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -31,11 +31,9 @@ Soul 创业派对全项目架构与约定:路由隔离(miniprogram/admin/db
|
||||
| 2026-03-17 | 性能优化与 Redis 缓存方案落地:Redis 容灾回退 DB、OSS 上传容灾;/health 返回 database/redis 状态 | 已完成 |
|
||||
| 2026-03-18 | 吸收经验:分享进入链路需兼容朋友圈 singlePage;单页模式不执行支付/自动领取等强动作并引导“前往小程序” | 已完成 |
|
||||
| 2026-03-18 | 会议:超级个体开通后自动创建@人统一走 Person;幂等键绑定 userId;默认资料 flags 后端输出 | 已完成 |
|
||||
| 2026-03-20 | 「帮我部署api到线上」→ 安全工程师执行 soul-api/master.py;security-server-ops、soul-project-boundary 触发词升级 | 已完成 |
|
||||
| 2026-03-20 | 「管理端帮我部署到xx环境」→ 语义化解析:正式/线上/生产→master.py,测试/dev→deploy.py;soul-admin 部署脚本索引 | 已完成 |
|
||||
|
||||
> **格式说明**:每次架构级讨论后在此追加一行,日期格式 YYYY-MM-DD
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-20
|
||||
**最后更新**:2026-03-18
|
||||
|
||||
@@ -41,11 +41,9 @@
|
||||
| 2026-03-17 | 会议收尾:源码优化 5 项全部完成;开发环境测试通过 | 已完成 |
|
||||
| 2026-03-18 | 吸收经验:分享链路需兼容好友/朋友圈 singlePage;单页模式能力降级并引导“前往小程序”进入完整版 | 已完成 |
|
||||
| 2026-03-18 | 会议:支付超级个体前/开通后资料默认校验,跳转 avatar-nickname 引导页(仅头像+昵称) | 已完成 |
|
||||
| 2026-03-19 | 吸收经验:原生按钮覆盖定位,chooseAvatar 用绝对定位 overlay 覆盖头像,禁止 button 包裹,已升级 SKILL §11 | 已完成 |
|
||||
| 2026-03-20 | 手机号一键登录:getPhoneNumber 耦合 agreePrivacyAuthorization;onNeedPrivacyAuthorization 支持 read/my/gift-pay/index/settings;登录弹窗公用组件 components/login-modal;登录后手机号同步 _syncPhoneFromProfileAfterLogin | 已完成 |
|
||||
|
||||
> **格式说明**:每次开发后在此追加一行,日期格式 YYYY-MM-DD,状态用:已完成 / 进行中 / 待续 / 搁置
|
||||
|
||||
---
|
||||
|
||||
**最后更新**:2026-03-20
|
||||
**最后更新**:2026-03-18
|
||||
|
||||
@@ -53,7 +53,6 @@ AGENT_BACKEND = AGENT / "后端工程师"
|
||||
AGENT_PRODUCT = AGENT / "产品经理"
|
||||
AGENT_TEST = AGENT / "软件测试"
|
||||
AGENT_TEAM = AGENT / "团队"
|
||||
AGENT_SECURITY = AGENT / "安全工程师"
|
||||
|
||||
# ========== 常用文件 ==========
|
||||
RULE_MAIN = RULES / "老板分身-索引.mdc"
|
||||
@@ -81,9 +80,6 @@ ROLE_TO_AGENT = {
|
||||
"软件测试": "软件测试",
|
||||
"测试": "软件测试",
|
||||
"测试人员": "软件测试",
|
||||
# 安全
|
||||
"安全工程师": "安全工程师",
|
||||
"安全": "安全工程师",
|
||||
# 通用
|
||||
"团队": "团队",
|
||||
}
|
||||
|
||||
156
.cursor/docs/cursor规则与架构分析及优化建议.md
Normal file
156
.cursor/docs/cursor规则与架构分析及优化建议.md
Normal file
@@ -0,0 +1,156 @@
|
||||
# Soul 创业派对 · .cursor 规则与架构分析及优化建议
|
||||
|
||||
> 分析日期:2026-03-19
|
||||
> 范围:`.cursor/` 下 rules、skills、agent、config、meeting、scripts
|
||||
> **2026-03-20**:已批量将 `e:\Gongsi\...` 改为仓库相对路径 `.cursor/...`;`party-ai-dev.mdc` 已补充与 `.cursor` 的优先级;根目录 `.gitignore` 已忽略 `karuo-party/credentials/`;新增 `.cursor/README.md`、`.cursorignore`(db-exec node_modules)。
|
||||
|
||||
---
|
||||
|
||||
## 整体架构图
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 一、整体架构总览
|
||||
|
||||
### 1.1 项目与 .cursor 的关系
|
||||
|
||||
```
|
||||
项目根(一场soul的创业实验-永平)
|
||||
├── miniprogram/ # 微信原生小程序 C 端 → /api/miniprogram/*
|
||||
├── soul-admin/ # React 管理后台(主用)→ /api/admin/*、/api/db/*
|
||||
├── soul-api/ # Go + Gin + GORM 接口服务
|
||||
├── next-project/ # 仅预览,非线上
|
||||
├── new-soul/soul-admin/ # 新版参考,迁移时对照
|
||||
└── .cursor/ # Cursor AI 规则与智能体配置
|
||||
├── rules/ # 全局/场景规则(alwaysApply 或 globs)
|
||||
├── skills/ # 按角色/场景的 Skill(写作、上传、开发、会议等)
|
||||
├── agent/ # 角色经验与项目索引(evolution、项目索引)
|
||||
├── config/ # paths.py、workspace 等
|
||||
├── meeting/ # 会议纪要
|
||||
├── scripts/ # 进化脚本、Gitea 同步、db-exec 等
|
||||
└── docs/ # 本分析等文档
|
||||
```
|
||||
|
||||
### 1.2 规则层(Rules)与技能层(Skills)关系
|
||||
|
||||
| 类型 | 作用 | 典型文件 |
|
||||
|------|------|----------|
|
||||
| **Rules** | 会话自检、项目边界、谁调哪组 API、何时加载哪个 Skill | soul-project-boundary.mdc、老板分身-索引.mdc、soul-meeting.mdc、soul-change-checklist.mdc、party-ai-dev.mdc |
|
||||
| **Skills** | 具体执行规范:怎么写代码、怎么开会、怎么检查变更 | miniprogram-dev、admin-dev、api-dev、team-meeting、change-checklist、assistant-doc-sync |
|
||||
|
||||
- **角色推断**:按「当前编辑目录」或「用户触发词」→ 确定角色 → **必须 Read 对应 Skill 文件**后执行。
|
||||
- **老板分身**:权限最高,可调度所有角色;开会时由乘风按 team-meeting 主持;经验自动收集写各角色 evolution。
|
||||
|
||||
### 1.3 三端与 API 路由(核心原则)
|
||||
|
||||
| 端 | 目录 | 允许调用的 API | 禁止 |
|
||||
|----|------|----------------|------|
|
||||
| 小程序 | miniprogram/ | `/api/miniprogram/*` | admin、db |
|
||||
| 管理端 | soul-admin/ | `/api/admin/*`、`/api/db/*` | miniprogram 混用 |
|
||||
| 后端 | soul-api/ | 按使用方挂 miniprogram / admin / db 分组 | 通用路径混用 |
|
||||
|
||||
---
|
||||
|
||||
## 二、优化与迭代建议
|
||||
|
||||
### 2.1 路径可移植性(高优先级)✅ 已落地
|
||||
|
||||
**原问题**:rules 与部分 skills 中曾写死 **Windows 绝对路径** `e:\Gongsi\Mycontent\.cursor\skills\...`,在 macOS/Linux 或不同机器上会失效。**当前**:已统一为仓库根相对路径 `.cursor/skills/...` 等,详见 `rules/soul-project-boundary.mdc` 的「路径约定」。
|
||||
|
||||
**涉及文件**:
|
||||
|
||||
- `rules/老板分身-索引.mdc`:team-meeting SKILL 路径
|
||||
- `rules/soul-project-boundary.mdc`:所有「必须 Read 的主 Skill 文件」表格(按编辑目录、按语义触发词、按场景触发词)
|
||||
- `rules/soul-meeting.mdc`:team-meeting、assistant-doc-sync 路径
|
||||
- `rules/soul-change-checklist.mdc`:change-checklist SKILL 路径
|
||||
- `skills/assistant-doc-sync/SKILL.md`:项目索引路径
|
||||
- `skills/mysql-direct/SKILL.md`:`cd e:\Gongsi\Mycontent`
|
||||
|
||||
**建议**:
|
||||
|
||||
1. **统一改为相对项目根的路径**
|
||||
例如:`项目根/.cursor/skills/team-meeting/SKILL.md`,或在规则中明确写:
|
||||
「以当前项目根为基准,Read `.cursor/skills/{skill-name}/SKILL.md`」。
|
||||
2. 若 Cursor 支持「工作区根」变量,可写成占位符(如 `{workspace}/.cursor/skills/...`),在文档中说明各系统下的解析方式。
|
||||
3. **config/paths.py** 已定义 `SKILLS = CURSOR / "skills"`,可在 `.cursor/README.md` 或 rules 中说明:**所有 Skill 路径以 `paths.py` 的 SKILLS 为准,规则中仅写相对 SKILLS 的路径**(如 `skills/team-meeting/SKILL.md`),由 AI 结合当前项目根解析。
|
||||
|
||||
### 2.2 跨平台脚本与入口
|
||||
|
||||
**问题**:老板分身规则里「若无法写文件则输出 JSON,并提示用户双击 `agent/开发助理/script/一键-添加经验.bat`」。`.bat` 仅适用于 Windows,Mac/Linux 用户无法使用。
|
||||
|
||||
**建议**:
|
||||
|
||||
1. 增加 **Shell 版**:`一键-添加经验.sh`,实现相同逻辑(或调用同一份 Python/Node 脚本)。
|
||||
2. 在规则中改为:「提示用户执行 `agent/开发助理/script/一键-添加经验.bat`(Windows)或 `一键-添加经验.sh`(Mac/Linux),或根据环境说明」。
|
||||
|
||||
### 2.3 party-ai-dev.mdc 与 老板分身 的优先级
|
||||
|
||||
**问题**:`party-ai-dev.mdc` 要求「优先使用派对 AI(派对AI/BOOTSTRAP.md、SKILL_REGISTRY.md)」,而老板分身等规则在 `.cursor/rules` 下,若同时生效可能产生「先读卡若还是先读派对」的冲突。
|
||||
|
||||
**建议**:
|
||||
|
||||
1. 在 **party-ai-dev.mdc** 或 **老板分身-索引.mdc** 中明确写清:
|
||||
「当本仓库为 Soul 派对项目且存在 派对AI/ 目录时,优先按 party-ai-dev 启动顺序;否则按 .cursor/rules 与 skills 执行。」
|
||||
2. 或约定:**派对AI 仅用于「在派对AI 目录下开发」的会话**;**在 miniprogram/soul-admin/soul-api 等目录下开发时,仅用 .cursor 的 rules+skills**,避免双重入口。
|
||||
|
||||
### 2.4 soul-change-checklist 与 change-checklist Skill 的引用方式
|
||||
|
||||
**问题**:soul-change-checklist.mdc 第三十条要求 Read 的路径仍是 Windows 绝对路径。
|
||||
|
||||
**建议**:与 2.1 一致,改为「项目根/.cursor/skills/change-checklist/SKILL.md」或相对路径说明,并在 checklist 规则末尾加一句:「Skill 详细流程见 `.cursor/skills/change-checklist/SKILL.md`」。
|
||||
|
||||
### 2.5 会议纪要与收尾路径
|
||||
|
||||
**问题**:soul-meeting.mdc 中会议纪要、项目索引、会议记录索引等路径未写死 Windows,但 assistant-doc-sync SKILL 里项目索引写的是 `e:\Gongsi\Mycontent\.cursor\agent\...`。
|
||||
|
||||
**建议**:assistant-doc-sync 内所有路径改为「项目根/.cursor/agent/...」或相对路径,与 config/paths.py 中的 AGENT、PROJECT_INDEX 等保持一致表述。
|
||||
|
||||
### 2.6 角色与 Skill 的集中索引
|
||||
|
||||
**现状**:角色→Skill 的映射分散在 soul-project-boundary(按目录、按触发词、按场景)和 paths.py(ROLE_TO_AGENT)。
|
||||
|
||||
**建议**:在 `.cursor/README.md` 或 `docs/` 下维护一份「角色 ↔ Skill 一览表」,便于新人/新 Agent 快速查阅;rules 中可写「详见 .cursor/README.md#角色与Skill映射」。
|
||||
|
||||
### 2.7 经验自动收集的脚本与 Mac 兼容
|
||||
|
||||
**现状**:evolution 写入由 scripts/evolution.py 等完成,paths 来自 config/paths.py,已跨平台;仅「一键-添加经验」的入口是 .bat。
|
||||
|
||||
**建议**:同 2.2,补充 .sh 或统一用 Python 脚本入口,在规则中同时给出 Windows 与 Mac/Linux 的说明。
|
||||
|
||||
---
|
||||
|
||||
## 三、规则与 Skill 清单速查
|
||||
|
||||
| 名称 | 类型 | 作用 |
|
||||
|------|------|------|
|
||||
| soul-project-boundary.mdc | Rule | 项目边界、三端 API 约定、角色推断与 Skill 加载 |
|
||||
| 老板分身-索引.mdc | Rule | 老板分身权限、经验自动收集、编码习惯、三端分工 |
|
||||
| soul-meeting.mdc | Rule | 开会/散会触发、会议纪要路径、收尾流程 |
|
||||
| soul-change-checklist.mdc | Rule | 变更后关联检查清单(防漏改) |
|
||||
| party-ai-dev.mdc | Rule | 优先派对 AI、飞书复盘、小程序上传约定 |
|
||||
| miniprogram-dev | Skill | 小程序开发规范 |
|
||||
| admin-dev | Skill | 管理端开发规范 |
|
||||
| api-dev | Skill | 后端 API 规范 |
|
||||
| product-manager | Skill | 产品需求与验收 |
|
||||
| testing | Skill | 测试与回归 |
|
||||
| team-meeting | Skill | 多角色会议流程 |
|
||||
| assistant-doc-sync | Skill | 小橙/文档同步/经验入库/会议收尾 |
|
||||
| change-checklist | Skill | 变更关联检查详细流程 |
|
||||
| role-flow-control | Skill | 跨端协同与角色流程 |
|
||||
| three-tier-arch | Skill | 三端架构与框架分析 |
|
||||
| new-version-analyze | Skill | 新版分析、迁移对比 |
|
||||
| next-preview / next-split | Skill | next-project 仅预览、拆解指引 |
|
||||
| mysql-direct | Skill | MySQL 直接操作、db-exec |
|
||||
|
||||
---
|
||||
|
||||
## 四、总结
|
||||
|
||||
- **架构**:项目为三端(小程序 + 管理端 + soul-api),.cursor 通过 rules 定边界与触发、skills 定执行细节、agent 存经验与项目索引,**config/paths.py** 为路径与角色映射中心。
|
||||
- **优先迭代**:
|
||||
1)所有 **Skill/agent 路径** 改为可移植(相对项目根或相对 .cursor);
|
||||
2)**一键-添加经验** 增加 Mac/Linux 入口;
|
||||
3)**party-ai 与 .cursor** 的适用场景或优先级写清楚。
|
||||
- 按上述调整后,在不同系统和不同克隆路径下都能一致生效,且便于后续扩展角色或 Skill。
|
||||
BIN
.cursor/docs/soul-project-cursor-architecture.png
Normal file
BIN
.cursor/docs/soul-project-cursor-architecture.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.0 MiB |
@@ -23,7 +23,8 @@
|
||||
|
||||
```powershell
|
||||
# 在 soul-api 目录下执行
|
||||
cd e:\Gongsi\Mycontent\soul-api
|
||||
# 在仓库根目录下执行(与 miniprogram、soul-api 同级)
|
||||
cd soul-api
|
||||
.\scripts\test-p0-endpoints.ps1
|
||||
```
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@ alwaysApply: false
|
||||
|
||||
当用户提及**小橙、橙子、橙橙、🍊**,或说**「讨论完毕」「记录一下」「同步到开发文档」「更新文档」「吸收经验」「升级 skills」「记录经验」「保存开发进度」「更新项目索引」「记录开发进度」「任务完成」「搞定了」「完成了」「会议结束」「散会」「会开完了」**时:
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` 的完整内容**,然后严格按其流程执行。
|
||||
**必须使用 Read 工具读取 `.cursor/skills/assistant-doc-sync/SKILL.md` 的完整内容**,然后严格按其流程执行。
|
||||
|
||||
### 行为摘要(供模型快速理解,完整流程以 SKILL 文件为准)
|
||||
|
||||
1. **文档同步**:从对话中提炼结论/待办/变更 → 写入 `开发文档/1、需求/YYYY-MM-DD-需求.md`(当日文件,以日期最新为主)、`开发文档/10、项目管理/运营与变更.md`、`临时需求池/` 等对应文档
|
||||
1. **文档同步**:从对话中提炼结论/待办/变更 → 写入 `开发文档/1、需求/需求汇总.md`、`开发文档/10、项目管理/运营与变更.md`、`临时需求池/` 等对应文档
|
||||
2. **经验入库**:提炼经验 → 写入 `agent/{角色}/evolution/YYYY-MM-DD.md` → 更新 `agent/开发助理/项目索引/{索引名}.md`(写日期)→ 更新 `agent/开发助理/经验清单.md` → 升级对应 SKILL
|
||||
|
||||
@@ -1,8 +1,14 @@
|
||||
# 派对 AI 开发规则
|
||||
|
||||
## 强制:使用派对 AI 进行开发
|
||||
## 与本仓库 `.cursor` 的优先级(避免入口打架)
|
||||
|
||||
所有开发操作**优先使用派对 AI**(路径:`/Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/派对AI/`),派对 AI 优先于卡若 AI 读取使用。
|
||||
- **三端编码与接口**:以本仓库 `.cursor/rules`(如 `soul-project-boundary.mdc`)与 `.cursor/skills` 为准——小程序/管理端/soul-api 路由隔离、变更检查、角色 Skill 加载等**不因派对 AI 而绕过**。
|
||||
- **派对 AI 目录**:若仓库根下存在 `派对AI/`,开发前可补充读取其 `BOOTSTRAP.md`、`SKILL_REGISTRY.md`,用于派对域身份、运营与流程;与 `.cursor` 冲突时,**代码与 API 约定以 `.cursor` 为准**。
|
||||
- **卡若 AI 全局规则**:仅在本会话需要时参考;本仓库会话自检仍以 **本仓库 `.cursor/`** 为主。
|
||||
|
||||
## 强制:使用派对 AI 进行开发(当 `派对AI/` 存在时)
|
||||
|
||||
所有开发操作**优先结合派对 AI**(路径:**仓库根下的** `派对AI/`,与 `miniprogram/` 同级)。若本仓库无 `派对AI/` 目录,则跳过本节启动顺序,仅按 `.cursor` 执行。
|
||||
|
||||
### 启动顺序
|
||||
|
||||
|
||||
@@ -8,4 +8,4 @@ alwaysApply: false
|
||||
|
||||
当编辑 **开发文档/1、需求/**、**临时需求池/**、**开发文档/10、项目管理/** 时,推断当前角色为**产品经理**。
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\product-manager\SKILL.md` 的完整内容**,然后按其规范执行需求分析、文档编写、验收标准制定。
|
||||
**必须使用 Read 工具读取 `.cursor/skills/product-manager/SKILL.md` 的完整内容**,然后按其规范执行需求分析、文档编写、验收标准制定。
|
||||
|
||||
@@ -26,8 +26,8 @@ alwaysApply: false
|
||||
|
||||
## Skill 加载(必须执行)
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\admin-dev\SKILL.md` 的完整内容**,按其规范进行开发。该 Skill 包含代码风格、业务逻辑、API 对接细节等完整约定。
|
||||
**必须使用 Read 工具读取 `.cursor/skills/admin-dev/SKILL.md` 的完整内容**,按其规范进行开发。该 Skill 包含代码风格、业务逻辑、API 对接细节等完整约定。
|
||||
|
||||
接口实现与路由分组的规范在 `e:\Gongsi\Mycontent\.cursor\rules\soul-api.mdc`(编辑 soul-api 时自动加载)。
|
||||
接口实现与路由分组的规范在 `.cursor/rules/soul-api.mdc`(编辑 soul-api 时自动加载)。
|
||||
|
||||
违反上述路径或职责边界即视为「互窜」,需纠正后再提交。
|
||||
|
||||
@@ -6,7 +6,7 @@ alwaysApply: false
|
||||
|
||||
# soul-api 开发规范
|
||||
|
||||
> **Skill 加载**:编辑 soul-api 代码时,**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\api-dev\SKILL.md` 的完整内容**,该 Skill 包含业务对接、与前端边界协同等补充约定。本规则侧重编码规范与路由边界。
|
||||
> **Skill 加载**:编辑 soul-api 代码时,**必须使用 Read 工具读取 `.cursor/skills/api-dev/SKILL.md` 的完整内容**,该 Skill 包含业务对接、与前端边界协同等补充约定。本规则侧重编码规范与路由边界。
|
||||
|
||||
## 1. 路由按使用方归类(强制)
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ alwaysApply: false
|
||||
|
||||
- **每次**在 miniprogram、soul-admin、soul-api 内完成一轮修改后,**先过一遍上表 + 二**,再视为本次变更完成。
|
||||
- 若本次变更涉及多端(例如小程序新功能 + 管理端配置页),应在同一次任务内一并完成或明确记录未做项,避免漏改。
|
||||
- 更详细的检查流程:**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\change-checklist\SKILL.md` 的完整内容**,按其「以领域为单位思考」的方法逐项确认。
|
||||
- 更详细的检查流程:**必须使用 Read 工具读取 `.cursor/skills/change-checklist/SKILL.md` 的完整内容**(相对本仓库根),按其「以领域为单位思考」的方法逐项确认。
|
||||
|
||||
## 四、聊天中触发变更检查
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ alwaysApply: true
|
||||
|
||||
# Soul 创业派对 - 会议触发器
|
||||
|
||||
当用户表达**开会意图**时(包括但不限于以下触发词),**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md` 的完整内容**,然后严格按其流程主持会议。
|
||||
当用户表达**开会意图**时(包括但不限于以下触发词),**必须使用 Read 工具读取 `.cursor/skills/team-meeting/SKILL.md` 的完整内容**(相对本仓库根),然后严格按其流程主持会议。
|
||||
|
||||
## 语义化触发词(理解意图,不必完全匹配)
|
||||
|
||||
@@ -24,9 +24,9 @@ alwaysApply: true
|
||||
当用户说**「会议结束」「散会」「会开完了」「结束会议」**时:
|
||||
|
||||
1. 助理橙子立即执行收尾流程
|
||||
2. **生成会议纪要**:`e:\Gongsi\Mycontent\.cursor\meeting\YYYY-MM-DD_主题.md`
|
||||
3. **各角色经验入库**:`e:\Gongsi\Mycontent\.cursor\agent\{角色}\evolution\YYYY-MM-DD.md`
|
||||
4. **更新项目索引**:`agent/开发助理/项目索引/{索引名}.md` 开发进度表追加一行
|
||||
5. **更新会议记录索引**:`e:\Gongsi\Mycontent\.cursor\meeting\README.md`
|
||||
2. **生成会议纪要**:`.cursor/meeting/YYYY-MM-DD_主题.md`
|
||||
3. **各角色经验入库**:`.cursor/agent/{角色}/evolution/YYYY-MM-DD.md`
|
||||
4. **更新项目索引**:`.cursor/agent/开发助理/项目索引/{索引名}.md` 开发进度表追加一行
|
||||
5. **更新会议记录索引**:`.cursor/meeting/README.md`
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` 执行收尾。**
|
||||
**必须使用 Read 工具读取 `.cursor/skills/assistant-doc-sync/SKILL.md` 执行收尾。**
|
||||
|
||||
@@ -23,8 +23,8 @@ alwaysApply: false
|
||||
|
||||
## Skill 加载(必须执行)
|
||||
|
||||
**必须使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\miniprogram-dev\SKILL.md` 的完整内容**,按其规范进行开发。该 Skill 包含代码风格、业务逻辑、API 对接细节等完整约定。
|
||||
**必须使用 Read 工具读取 `.cursor/skills/miniprogram-dev/SKILL.md` 的完整内容**,按其规范进行开发。该 Skill 包含代码风格、业务逻辑、API 对接细节等完整约定。
|
||||
|
||||
接口实现与路由分组的规范在 `e:\Gongsi\Mycontent\.cursor\rules\soul-api.mdc`(编辑 soul-api 时自动加载)。
|
||||
接口实现与路由分组的规范在 `.cursor/rules/soul-api.mdc`(编辑 soul-api 时自动加载)。
|
||||
|
||||
违反上述路径或职责边界即视为「互窜」,需纠正后再提交。
|
||||
|
||||
@@ -20,31 +20,30 @@ alwaysApply: true
|
||||
| 预览/参考 | next-project/ | 仅预览,非线上 | 不依赖 |
|
||||
| **新版管理端** | **new-soul/soul-admin/** | 新版参考实现,迁移时对照 | soul-api |
|
||||
|
||||
## 需求目录与命名约定
|
||||
|
||||
- **需求目录**:`开发文档/1、需求/`
|
||||
- **命名**:`YYYY-MM-DD-需求.md` 或 `YYYY-MM-DD-简短描述.md`
|
||||
- **主需求**:以日期最新的需求文件为主;同步需求时新建/更新当日文件,并更新 `1、需求/索引.md`
|
||||
- **基准**:`以界面定需求.md` 为界面级需求基准,新增/改版界面或业务规则时先更新该文档
|
||||
|
||||
## 核心原则
|
||||
|
||||
- 小程序只调 `/api/miniprogram/*`;管理端只调 `/api/admin/*`、`/api/db/*`;禁止混用。
|
||||
- 变更完成必过 soul-change-checklist.mdc;聊天中说「变更完成」「检查一下」「准备提交」时主动触发检查。
|
||||
|
||||
## 路径约定(Skill / agent / meeting)
|
||||
|
||||
- 下表及本仓库 Skill 中的路径均以 **本 Git 仓库根目录** 为基准(与 `miniprogram/`、`soul-api/` 同级),**不使用盘符或另一台机器上的绝对路径**。
|
||||
- 使用 Read / Write 工具时:填写 **`仓库根/.cursor/...`**,例如 `.cursor/skills/api-dev/SKILL.md`(与规则中的写法一致即可)。
|
||||
- 脚本中的物理路径以 `config/paths.py` 的 `ROOT`、`SKILLS`、`AGENT`、`MEETING` 为准。
|
||||
|
||||
## 角色推断与 Skill 加载(必须执行)
|
||||
|
||||
根据**当前编辑目录**或**语义触发词**,**必须使用 Read 工具读取对应的主 Skill 文件完整内容**,然后按其规范执行开发:
|
||||
|
||||
### 按编辑目录
|
||||
|
||||
| 编辑目录 | 推断角色 | 必须 Read 的主 Skill 文件(绝对路径) |
|
||||
|----------|----------|---------------------------------------|
|
||||
| miniprogram/ | 小程序开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\miniprogram-dev\SKILL.md` |
|
||||
| soul-admin/ | 管理端开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\admin-dev\SKILL.md` |
|
||||
| soul-api/ | 后端开发 | `e:\Gongsi\Mycontent\.cursor\skills\api-dev\SKILL.md` |
|
||||
| 开发文档/1、需求/、临时需求池/ | 产品经理 | `e:\Gongsi\Mycontent\.cursor\skills\product-manager\SKILL.md` |
|
||||
| .cursor/ | 助理橙子 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` |
|
||||
| 编辑目录 | 推断角色 | 必须 Read 的主 Skill 文件(相对仓库根) |
|
||||
|----------|----------|----------------------------------------|
|
||||
| miniprogram/ | 小程序开发工程师 | `.cursor/skills/miniprogram-dev/SKILL.md` |
|
||||
| soul-admin/ | 管理端开发工程师 | `.cursor/skills/admin-dev/SKILL.md` |
|
||||
| soul-api/ | 后端开发 | `.cursor/skills/api-dev/SKILL.md` |
|
||||
| 开发文档/1、需求/、临时需求池/ | 产品经理 | `.cursor/skills/product-manager/SKILL.md` |
|
||||
| .cursor/ | 助理橙子 | `.cursor/skills/assistant-doc-sync/SKILL.md` |
|
||||
|
||||
### 按语义触发词(说啥切角色,无需编辑文件)
|
||||
|
||||
@@ -52,26 +51,23 @@ alwaysApply: true
|
||||
|
||||
| 触发词 | 推断角色 | 必须 Read 的 Skill 文件 |
|
||||
|--------|----------|-------------------------|
|
||||
| 后端、API、soul-api、接口、Go、GORM | 后端开发 | `e:\Gongsi\Mycontent\.cursor\skills\api-dev\SKILL.md` |
|
||||
| 管理端、soul-admin、React、后台管理 | 管理端开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\admin-dev\SKILL.md` |
|
||||
| 小程序、miniprogram、C 端、微信小程序 | 小程序开发工程师 | `e:\Gongsi\Mycontent\.cursor\skills\miniprogram-dev\SKILL.md` |
|
||||
| 产品、需求、验收、排期、需求文档 | 产品经理 | `e:\Gongsi\Mycontent\.cursor\skills\product-manager\SKILL.md` |
|
||||
| 测试、测试用例、回归测试、功能测试、QA | 测试人员 | `e:\Gongsi\Mycontent\.cursor\skills\testing\SKILL.md` |
|
||||
| 挖矿、安全、服务器操作、部署、miner_guard、xmrig、入侵排查 | 安全工程师 | `e:\Gongsi\Mycontent\.cursor\skills\security-miner-guard\SKILL.md`、`e:\Gongsi\Mycontent\.cursor\skills\security-server-ops\SKILL.md` |
|
||||
| 后端、API、soul-api、接口、Go、GORM | 后端开发 | `.cursor/skills/api-dev/SKILL.md` |
|
||||
| 管理端、soul-admin、React、后台管理 | 管理端开发工程师 | `.cursor/skills/admin-dev/SKILL.md` |
|
||||
| 小程序、miniprogram、C 端、微信小程序 | 小程序开发工程师 | `.cursor/skills/miniprogram-dev/SKILL.md` |
|
||||
| 产品、需求、验收、排期、需求文档 | 产品经理 | `.cursor/skills/product-manager/SKILL.md` |
|
||||
| 测试、测试用例、回归测试、功能测试、QA | 测试人员 | `.cursor/skills/testing/SKILL.md` |
|
||||
|
||||
### 按场景触发词
|
||||
|
||||
| 场景触发词 | 必须 Read 的 Skill 文件(绝对路径) |
|
||||
|------------|-------------------------------------|
|
||||
| 小橙、橙子、橙橙、🍊、讨论完毕、记录一下、记录、同步文档 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` |
|
||||
| 吸收经验、升级 skills、记录经验、保存开发进度、更新项目索引、记录开发进度、任务完成、搞定了、完成了 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md` |
|
||||
| 跨端功能开发 | `e:\Gongsi\Mycontent\.cursor\skills\role-flow-control\SKILL.md` |
|
||||
| 变更完成、检查一下、准备提交 | `e:\Gongsi\Mycontent\.cursor\skills\change-checklist\SKILL.md` |
|
||||
| 开个会、开会、团队会议、乘风开会、需求评审、方案讨论、大家一起讨论 | `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md`(老板分身/乘风主持) |
|
||||
| 会议结束、散会、会开完了 | `e:\Gongsi\Mycontent\.cursor\skills\assistant-doc-sync\SKILL.md`(会议收尾) |
|
||||
| **加个需求**、加个需求:xxx | `e:\Gongsi\Mycontent\.cursor\skills\product-manager\SKILL.md`(产品经理三端分析 → 功能规划 → 指派) |
|
||||
| **新版分析**、版本对比、迁移分析、甲方代码分析、快速分析新版、抽取需求 | `e:\Gongsi\Mycontent\.cursor\skills\new-version-analyze\SKILL.md`(新版快速分析 → 差异清单 → 接口冲突 → 迁移迭代) |
|
||||
| **帮我部署api到线上** | `e:\Gongsi\Mycontent\.cursor\skills\security-server-ops\SKILL.md`(安全工程师 → 执行 soul-api/master.py) |
|
||||
| **管理端帮我部署到xx环境** | `e:\Gongsi\Mycontent\.cursor\skills\security-server-ops\SKILL.md`(安全工程师 → 语义化解析 xx:正式/线上/生产→master.py,测试/dev→deploy.py) |
|
||||
| 场景触发词 | 必须 Read 的 Skill 文件(相对仓库根) |
|
||||
|------------|----------------------------------------|
|
||||
| 小橙、橙子、橙橙、🍊、讨论完毕、记录一下、记录、同步文档 | `.cursor/skills/assistant-doc-sync/SKILL.md` |
|
||||
| 吸收经验、升级 skills、记录经验、保存开发进度、更新项目索引、记录开发进度、任务完成、搞定了、完成了 | `.cursor/skills/assistant-doc-sync/SKILL.md` |
|
||||
| 跨端功能开发 | `.cursor/skills/role-flow-control/SKILL.md` |
|
||||
| 变更完成、检查一下、准备提交 | `.cursor/skills/change-checklist/SKILL.md` |
|
||||
| 开个会、开会、团队会议、乘风开会、需求评审、方案讨论、大家一起讨论 | `.cursor/skills/team-meeting/SKILL.md`(老板分身/乘风主持) |
|
||||
| 会议结束、散会、会开完了 | `.cursor/skills/assistant-doc-sync/SKILL.md`(会议收尾) |
|
||||
| **加个需求**、加个需求:xxx | `.cursor/skills/product-manager/SKILL.md`(产品经理三端分析 → 功能规划 → 指派) |
|
||||
| **新版分析**、版本对比、迁移分析、甲方代码分析、快速分析新版、抽取需求 | `.cursor/skills/new-version-analyze/SKILL.md`(新版快速分析 → 差异清单 → 接口冲突 → 迁移迭代) |
|
||||
|
||||
**注意**:「必须 Read」= 使用 Read 工具读取**绝对路径**的完整文件内容后执行,不可跳过或仅凭记忆。
|
||||
**注意**:「必须 Read」= 使用 Read 工具读取上述路径相对于**当前工作区仓库根**的完整文件内容后执行,不可跳过或仅凭记忆。
|
||||
|
||||
@@ -6,7 +6,7 @@ alwaysApply: true
|
||||
# 老板分身 - 能力与约束(Soul 创业派对)
|
||||
|
||||
> **老板分身权限最高**:协调所有智能体(小程序开发工程师、管理端开发工程师、后端工程师、产品经理、开发助理等)。其他 agent 执行任务时遵循本规则;老板分身可调度、协调、指派任一角色。
|
||||
> **激活方式**:用户说「老板」「分身」「乘风」「架构」「帮我协调」时,从旁观者转为主动参与。**开会时**:用户说「开会」「开个会」「团队会议」「乘风开会」「需求评审」「方案讨论」等表达开会意图时,**必须先**用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md` 完整内容,然后由老板分身(乘风)按该协议主持多角色会议,不可仅回复而不执行流程。
|
||||
> **激活方式**:用户说「老板」「分身」「乘风」「架构」「帮我协调」时,从旁观者转为主动参与。**开会时**:用户说「开会」「开个会」「团队会议」「乘风开会」「需求评审」「方案讨论」等表达开会意图时,**必须先**用 Read 工具读取 `.cursor/skills/team-meeting/SKILL.md` 完整内容(相对本仓库根),然后由老板分身(乘风)按该协议主持多角色会议,不可仅回复而不执行流程。
|
||||
> **会话自检**:仅沿用本项目 `.cursor/` 下的 rules、skills、agent;忽略与本项目无关的全局 rules/skills。
|
||||
> **角色驱动**:Soul 角色与 agent 映射见 `config/paths.py` 的 ROLE_TO_AGENT。
|
||||
|
||||
@@ -39,12 +39,11 @@ alwaysApply: true
|
||||
- 产品/需求/config→**产品经理**
|
||||
- 测试/自检/QA→**软件测试**
|
||||
- 架构/选型/路由约定/三端协同→**团队**
|
||||
- 挖矿/安全/服务器操作/部署/入侵排查→**安全工程师**
|
||||
- 无法判断→**通用**(写入开发助理)
|
||||
3. **若可写文件**:
|
||||
- **有明确目标角色**:写入 `.cursor/agent/{角色}/evolution/YYYY-MM-DD-简短描述.md`,并更新该目录下的 `索引.md`
|
||||
- **无法判断角色**:写入 `.cursor/agent/开发助理/evolution/`
|
||||
4. **若无法写文件**:输出 JSON,并提示用户双击 `agent/开发助理/script/一键-添加经验.bat`
|
||||
4. **若无法写文件**:输出 JSON,并提示用户在仓库根执行:`.cursor/agent/开发助理/script/一键-添加经验.bat`(Windows)或同目录下的 `.sh` / Python 入口(macOS/Linux,若已提供)
|
||||
|
||||
### Soul 目标角色与 target_roles 取值
|
||||
|
||||
|
||||
55
.cursor/scripts/README-gitea-sync.md
Normal file
55
.cursor/scripts/README-gitea-sync.md
Normal file
@@ -0,0 +1,55 @@
|
||||
# 与 Gitea(192.168.1.201)同步
|
||||
|
||||
## 远程
|
||||
|
||||
- **gitea-local**:`http://192.168.1.201:3000/fnvtk/soul-yongping.git`(拉取 + 推送)
|
||||
|
||||
## 手动同步
|
||||
|
||||
```bash
|
||||
./.cursor/scripts/gitea-sync.sh
|
||||
```
|
||||
|
||||
## 每 10 分钟自动同步(macOS launchd)
|
||||
|
||||
- 已安装:`~/Library/LaunchAgents/com.soul.yongping.gitea-sync.plist`
|
||||
- 每 10 分钟执行一次,登录后自动加载
|
||||
|
||||
**启用:**
|
||||
|
||||
```bash
|
||||
launchctl load ~/Library/LaunchAgents/com.soul.yongping.gitea-sync.plist
|
||||
```
|
||||
|
||||
**停用:**
|
||||
|
||||
```bash
|
||||
launchctl unload ~/Library/LaunchAgents/com.soul.yongping.gitea-sync.plist
|
||||
```
|
||||
|
||||
**查看是否在跑:**
|
||||
|
||||
```bash
|
||||
launchctl list | grep com.soul.yongping.gitea-sync
|
||||
```
|
||||
|
||||
## 认证(192.168.1.201 需登录时)
|
||||
|
||||
若 push/pull 需要账号密码,定时任务无法弹窗,请把凭证写进 remote URL(勿提交到仓库):
|
||||
|
||||
```bash
|
||||
git remote set-url gitea-local 'http://用户名:token或密码@192.168.1.201:3000/fnvtk/soul-yongping.git'
|
||||
```
|
||||
|
||||
或用系统钥匙串:
|
||||
|
||||
```bash
|
||||
git config --global credential.helper osxkeychain
|
||||
# 然后手动执行一次 gitea-sync.sh,输入一次账号密码,之后由钥匙串记住
|
||||
```
|
||||
|
||||
## 日志
|
||||
|
||||
- 脚本内部:`.cursor/scripts/gitea-sync.log`
|
||||
- launchd 标准输出:`.cursor/scripts/gitea-sync-launchd.log`
|
||||
- launchd 错误:`.cursor/scripts/gitea-sync-launchd.err.log`
|
||||
163
.cursor/scripts/gitea-sync-launchd.err.log
Normal file
163
.cursor/scripts/gitea-sync-launchd.err.log
Normal file
@@ -0,0 +1,163 @@
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
/bin/bash: /Users/karuo/Documents/开发/3、自营项目/一场soul的创业实验-永平/.cursor/scripts/gitea-sync.sh: Operation not permitted
|
||||
0
.cursor/scripts/gitea-sync-launchd.log
Normal file
0
.cursor/scripts/gitea-sync-launchd.log
Normal file
48
.cursor/scripts/gitea-sync.log
Normal file
48
.cursor/scripts/gitea-sync.log
Normal file
@@ -0,0 +1,48 @@
|
||||
[2026-03-19 14:54:01] --- sync start (branch=devlop, remote=gitea-local) ---
|
||||
From http://192.168.1.201:3000/fnvtk/soul-yongping
|
||||
* [new branch] devlop -> gitea-local/devlop
|
||||
* [new branch] main -> gitea-local/main
|
||||
error: cannot pull with rebase: You have unstaged changes.
|
||||
error: Please commit or stash them.
|
||||
[devlop 28a69cbc] sync: 2026-03-19 14:54
|
||||
Committer: 卡若 <karuo@MacBook-Pro.local>
|
||||
Your name and email address were configured automatically based
|
||||
on your username and hostname. Please check that they are accurate.
|
||||
You can suppress this message by setting them explicitly:
|
||||
|
||||
git config --global user.name "Your Name"
|
||||
git config --global user.email you@example.com
|
||||
|
||||
After doing this, you may fix the identity used for this commit with:
|
||||
|
||||
git commit --amend --reset-author
|
||||
|
||||
26 files changed, 164 insertions(+), 2133 deletions(-)
|
||||
create mode 100644 .cursor/scripts/README-gitea-sync.md
|
||||
create mode 100644 .cursor/scripts/gitea-sync-launchd.err.log
|
||||
create mode 100644 .cursor/scripts/gitea-sync-launchd.log
|
||||
create mode 100644 .cursor/scripts/gitea-sync.log
|
||||
create mode 100755 .cursor/scripts/gitea-sync.sh
|
||||
create mode 100644 project.config.json
|
||||
delete mode 100644 开发文档/1、需求/文章详情-阅读页线框图.md
|
||||
delete mode 100644 开发文档/1、需求/链接人与事-所有同步需求.md
|
||||
delete mode 100644 开发文档/代付功能-美团式方案与场景清单.md
|
||||
delete mode 100644 开发文档/全站测试报告_20260315.md
|
||||
delete mode 100644 开发文档/存客宝对接逻辑图.md
|
||||
delete mode 100644 开发文档/小程序管理/scripts/reports/体验版二维码_soul-party_20260315_2344.png
|
||||
delete mode 100644 开发文档/小程序管理/scripts/reports/体验版二维码_soul-party_20260316_0221.png
|
||||
delete mode 100644 开发文档/小程序管理/scripts/reports/体验版二维码_soul-party_20260316_1804.png
|
||||
delete mode 100644 开发文档/找朋友代付-流程与配置.md
|
||||
delete mode 100644 开发文档/新版管理端迁移到稳定版-需求评估.md
|
||||
delete mode 100644 开发文档/新版迁移-开发方案与清单.md
|
||||
delete mode 100644 开发文档/稳定版-小程序与API对比.md
|
||||
delete mode 100644 开发文档/稳定版-源码质量分析报告.md
|
||||
delete mode 100644 开发文档/稳定版-管理端与小程序对接分析.md
|
||||
delete mode 100644 开发文档/稳定版适配新界面-调整清单.md
|
||||
delete mode 100644 开发文档/管理端两版界面差异-新需求参考.md
|
||||
delete mode 100644 开发文档/管理端迁移分析-基于小程序功能.md
|
||||
delete mode 100644 开发文档/规则引擎迁移-影响分析.md
|
||||
delete mode 100644 开发文档/迁移完成度与待办清单.md
|
||||
remote: Failed to authenticate user
|
||||
fatal: Authentication failed for 'http://192.168.1.201:3000/fnvtk/soul-yongping.git/'
|
||||
[2026-03-19 14:54:02] --- sync end ---
|
||||
46
.cursor/scripts/gitea-sync.sh
Executable file
46
.cursor/scripts/gitea-sync.sh
Executable file
@@ -0,0 +1,46 @@
|
||||
#!/usr/bin/env bash
|
||||
# 与 Gitea(192.168.1.201)双向同步:先拉取,有本地变更则提交并推送
|
||||
# 可手动执行,也可由 launchd 每 10 分钟执行
|
||||
|
||||
set -e
|
||||
REPO_ROOT="$(cd "$(dirname "$0")/../.." && pwd)"
|
||||
REMOTE="gitea"
|
||||
LOG_FILE="$REPO_ROOT/.cursor/scripts/gitea-sync.log"
|
||||
|
||||
cd "$REPO_ROOT"
|
||||
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||
|
||||
log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" | tee -a "$LOG_FILE"; }
|
||||
|
||||
log "--- sync start (branch=$BRANCH, remote=$REMOTE) ---"
|
||||
|
||||
# 1. 拉取远程更新(若有未提交变更则先 stash,pull 后再 pop)
|
||||
STASHED=""
|
||||
if [ -n "$(git status -s)" ]; then
|
||||
git stash push -u -m "gitea-sync $(date +%s)" 2>/dev/null && STASHED=1 || true
|
||||
fi
|
||||
git fetch "$REMOTE" 2>&1 | tee -a "$LOG_FILE" || true
|
||||
if git ls-remote --exit-code --heads "$REMOTE" "$BRANCH" &>/dev/null; then
|
||||
git pull "$REMOTE" "$BRANCH" --no-edit 2>&1 | tee -a "$LOG_FILE" || log "pull 失败或冲突,继续尝试推送本地变更"
|
||||
fi
|
||||
[ -n "$STASHED" ] && git stash pop 2>/dev/null || true
|
||||
|
||||
# 2. 若有本地未提交变更,则提交并推送
|
||||
STATUS=$(git status -s)
|
||||
if [ -n "$STATUS" ]; then
|
||||
git add -A
|
||||
git commit -m "sync: $(date '+%Y-%m-%d %H:%M')" 2>&1 | tee -a "$LOG_FILE" || log "commit failed (nothing to commit or conflict)"
|
||||
git push "$REMOTE" "$BRANCH" 2>&1 | tee -a "$LOG_FILE" || log "push failed"
|
||||
else
|
||||
# 若有已提交但未推送的提交,也推送(仅当远程有此分支且本地比远程多提交时)
|
||||
if git ls-remote --exit-code --heads "$REMOTE" "$BRANCH" &>/dev/null; then
|
||||
AHEAD=$(git rev-list "refs/remotes/${REMOTE}/${BRANCH}"..HEAD --count 2>/dev/null || echo 0)
|
||||
if [ "${AHEAD:-0}" -gt 0 ]; then
|
||||
git push "$REMOTE" "$BRANCH" 2>&1 | tee -a "$LOG_FILE" || log "push failed"
|
||||
fi
|
||||
else
|
||||
git push -u "$REMOTE" "$BRANCH" 2>&1 | tee -a "$LOG_FILE" || log "push (new branch) failed"
|
||||
fi
|
||||
fi
|
||||
|
||||
log "--- sync end ---"
|
||||
@@ -30,7 +30,7 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
|
||||
| 要点类型 | 写入位置 | 示例 |
|
||||
|----------|----------|------|
|
||||
| 需求清单项 | `开发文档/1、需求/YYYY-MM-DD-需求.md`(当日文件,以日期最新为主) | 会员分润差异化、VIP 手动设置;同步后更新 `1、需求/索引.md` |
|
||||
| 需求清单项 | `开发文档/1、需求/需求汇总.md` 需求清单表 | 会员分润差异化、VIP 手动设置 |
|
||||
| 近期讨论 | `开发文档/10、项目管理/运营与变更.md` | 第五部分或新增节 |
|
||||
| 技术分析 | `临时需求池/` 或 `开发文档/8、部署/` | 分润需求-技术分析.md |
|
||||
| 项目推进 | `开发文档/10、项目管理/项目落地推进表.md` | 第十二节永平落地表 |
|
||||
@@ -53,7 +53,7 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
|
||||
1. **确定角色**:根据本次对话涉及目录(miniprogram/soul-admin/soul-api/需求文档)推断对应角色
|
||||
2. **提炼进度**:从对话中提取本次开发完成的内容、当前阶段、待续项
|
||||
3. **更新项目索引**:打开 `e:\Gongsi\Mycontent\.cursor\agent\开发助理\项目索引\{索引文件名}.md`(索引文件名见步骤 5.1 映射表)
|
||||
3. **更新项目索引**:打开 `.cursor\agent\开发助理\项目索引\{索引文件名}.md`(索引文件名见步骤 5.1 映射表)
|
||||
- 在「开发进度」表追加一行,**必须写日期**(YYYY-MM-DD)
|
||||
- 视需要更新「项目总结」段落
|
||||
- 文末「最后更新」改为当前日期
|
||||
@@ -61,12 +61,12 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
|
||||
### 4.6 会议收尾(会议结束、散会、会开完了时)
|
||||
|
||||
当用户说**「会议结束」「散会」「会开完了」**时,执行会议收尾流程(完整流程见 `e:\Gongsi\Mycontent\.cursor\skills\team-meeting\SKILL.md` 第 4 节):
|
||||
当用户说**「会议结束」「散会」「会开完了」**时,执行会议收尾流程(完整流程见 `.cursor\skills\team-meeting\SKILL.md` 第 4 节):
|
||||
|
||||
1. **生成会议纪要**:`e:\Gongsi\Mycontent\.cursor\meeting\YYYY-MM-DD_主题.md`,按 `_模板.md` 填写;**必须包含「问题与作答区」**,将待确认/待澄清项列出为问题表,作答列留空
|
||||
2. **各角色经验入库**:追加到 `e:\Gongsi\Mycontent\.cursor\agent\{角色目录}\evolution\YYYY-MM-DD.md`(角色→目录见步骤 5.1 映射表)
|
||||
1. **生成会议纪要**:`.cursor\meeting\YYYY-MM-DD_主题.md`,按 `_模板.md` 填写;**必须包含「问题与作答区」**,将待确认/待澄清项列出为问题表,作答列留空
|
||||
2. **各角色经验入库**:追加到 `.cursor\agent\{角色目录}\evolution\YYYY-MM-DD.md`(角色→目录见步骤 5.1 映射表)
|
||||
3. **更新项目索引**:各参会角色对应的 `agent/开发助理/项目索引/{索引名}.md` 开发进度表追加一行,写日期
|
||||
4. **更新会议记录索引**:`e:\Gongsi\Mycontent\.cursor\meeting\README.md` 索引表追加
|
||||
4. **更新会议记录索引**:`.cursor\meeting\README.md` 索引表追加
|
||||
5. **Skill 升级**(若有影响开发规范的决议):更新对应 SKILL-xxx.md
|
||||
6. **回复**:会议收尾已完成,纪要见 `meeting/YYYY-MM-DD_主题.md`
|
||||
|
||||
@@ -83,7 +83,6 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
| 后端开发 | `agent/后端工程师/evolution/` | `agent/开发助理/项目索引/后端.md` |
|
||||
| 产品经理 | `agent/产品经理/evolution/` | `agent/开发助理/项目索引/产品.md` |
|
||||
| 测试人员 | `agent/软件测试/evolution/` | `agent/开发助理/项目索引/测试.md` |
|
||||
| 安全工程师 | `agent/安全工程师/evolution/` | `agent/开发助理/项目索引/团队.md` |
|
||||
| 助理橙子 | `agent/开发助理/evolution/` | `agent/开发助理/项目索引/助理橙子.md` |
|
||||
| 跨角色/团队 | `agent/团队/evolution/` | `agent/开发助理/项目索引/团队.md` |
|
||||
|
||||
@@ -107,16 +106,16 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
- 应升级的 Skill
|
||||
|
||||
2. **写入经验文件**(绝对路径):
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\agent\{角色目录}\evolution\YYYY-MM-DD.md`
|
||||
- 路径:`.cursor\agent\{角色目录}\evolution\YYYY-MM-DD.md`
|
||||
- 当天文件不存在则新建;文件名用日期,经验按天存储
|
||||
|
||||
3. **更新项目索引**(绝对路径):
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\agent\开发助理\项目索引\{索引名}.md`(见 5.1 映射)
|
||||
- 路径:`.cursor\agent\开发助理\项目索引\{索引名}.md`(见 5.1 映射)
|
||||
- 在「开发进度」表追加一行,**必须写日期**(YYYY-MM-DD)
|
||||
- 更新文末「最后更新」为当前日期
|
||||
|
||||
4. **更新经验清单**:
|
||||
- 路径:`e:\Gongsi\Mycontent\.cursor\agent\开发助理\经验清单.md`
|
||||
- 路径:`.cursor\agent\开发助理\经验清单.md`
|
||||
- 在索引表追加一行
|
||||
|
||||
5. **升级 Skill**:根据经验类型,更新对应 `.cursor/skills/{skill}/SKILL.md`
|
||||
@@ -130,10 +129,7 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
|
||||
```
|
||||
开发文档/
|
||||
├── 1、需求/
|
||||
│ ├── 索引.md # 主需求 = 日期最新的需求文件
|
||||
│ ├── YYYY-MM-DD-需求.md # 需求文件按日期命名,以最新为主
|
||||
│ └── 以界面定需求.md # 界面级需求基准
|
||||
├── 1、需求/需求汇总.md # 需求清单、业务需求
|
||||
├── 8、部署/ # 技术方案、部署说明
|
||||
├── 10、项目管理/
|
||||
│ ├── 项目落地推进表.md # 里程碑、永平落地
|
||||
@@ -156,7 +152,7 @@ description: 开发团队文档同步与经验升级。小橙、橙子、讨论
|
||||
**小橙**执行:
|
||||
|
||||
1. 提炼:VIP 手动设置已完成;会员分润差异化待实现;好友优惠仅针对文章
|
||||
2. 更新 `1、需求/YYYY-MM-DD-需求.md`(当日文件):新增「需求清单」行;同步后更新 `1、需求/索引.md`
|
||||
2. 更新 `需求汇总.md`:新增「需求清单」行
|
||||
3. 更新 `运营与变更.md`:第五部分追加近期讨论
|
||||
4. 回复:已记录并更新开发文档,详见 xxx
|
||||
|
||||
|
||||
159
.cursor/skills/karuo-party/README.md
Normal file
159
.cursor/skills/karuo-party/README.md
Normal file
@@ -0,0 +1,159 @@
|
||||
# 卡若创业派对运营技能包
|
||||
|
||||
> **打包日期**:2026-03-20
|
||||
> **项目**:一场soul的创业实验-永平
|
||||
> **技能包路径**:`.cursor/skills/karuo-party/`
|
||||
|
||||
---
|
||||
|
||||
## 📦 打包内容
|
||||
|
||||
本技能包整合了卡若创业派对的 4 大核心运营技能:
|
||||
|
||||
1. **运营报表**:Soul派对运营数据全自动写入飞书表格
|
||||
2. **飞书视频文字下载**:从飞书妙记下载视频和文字
|
||||
3. **视频切片**:视频转录、高光识别、批量切片、成片输出
|
||||
4. **多平台分发**:一键分发到抖音/B站/视频号/小红书/快手
|
||||
|
||||
---
|
||||
|
||||
## 🔐 凭证管理
|
||||
|
||||
所有凭证统一存储在 `credentials/` 目录:
|
||||
|
||||
### 飞书凭证
|
||||
|
||||
- **`.feishu_tokens.json`**:飞书访问令牌(自动刷新)
|
||||
|
||||
### 视频平台 Cookies
|
||||
|
||||
- **视频号**:`cookies/视频号_cookies.json`(有效期 ~24-48h)
|
||||
- **B站**:`cookies/B站_cookies.json`(有效期 ~6个月)
|
||||
- **小红书**:`cookies/小红书_cookies.json`(有效期 ~1-3天)
|
||||
- **快手**:`cookies/快手_cookies.json`(有效期 ~7-30天)
|
||||
- **抖音**:`cookies/抖音_cookies.json`(账号封禁中)
|
||||
|
||||
---
|
||||
|
||||
## 📁 目录结构
|
||||
|
||||
```
|
||||
.cursor/skills/karuo-party/
|
||||
├── SKILL.md # 主技能入口
|
||||
├── README.md # 本文件
|
||||
├── credentials/ # 凭证目录
|
||||
│ ├── .feishu_tokens.json # 飞书Token
|
||||
│ └── cookies/ # 平台Cookies
|
||||
│ ├── 视频号_cookies.json
|
||||
│ ├── B站_cookies.json
|
||||
│ ├── 小红书_cookies.json
|
||||
│ ├── 快手_cookies.json
|
||||
│ └── 抖音_cookies.json
|
||||
└── skills/ # 子技能文档
|
||||
├── 运营报表_SKILL.md
|
||||
├── 飞书视频文字下载_SKILL.md
|
||||
├── 视频切片_SKILL.md
|
||||
└── 多平台分发_SKILL.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 1. 运营报表
|
||||
|
||||
```bash
|
||||
FEISHU_SCRIPT="/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本"
|
||||
cd "$FEISHU_SCRIPT"
|
||||
python3 soul_party_to_feishu_sheet.py 115
|
||||
```
|
||||
|
||||
### 2. 飞书视频文字下载
|
||||
|
||||
```bash
|
||||
JIYAO_SCRIPT="/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/脚本"
|
||||
python3 "$JIYAO_SCRIPT/feishu_minutes_export_github.py" "<妙记链接>"
|
||||
python3 "$JIYAO_SCRIPT/feishu_minutes_download_video.py" "<妙记链接>"
|
||||
```
|
||||
|
||||
### 3. 视频切片
|
||||
|
||||
```bash
|
||||
VIDEO_SCRIPT="/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本"
|
||||
conda activate mlx-whisper
|
||||
python3 "$VIDEO_SCRIPT/soul_slice_pipeline.py" --video "<原视频.mp4>" --clips 8
|
||||
```
|
||||
|
||||
### 4. 多平台分发
|
||||
|
||||
```bash
|
||||
DIST_SCRIPT="/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/多平台分发/脚本"
|
||||
python3 "$DIST_SCRIPT/distribute_all.py" --video-dir "<成片目录>"
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📝 使用说明
|
||||
|
||||
### 激活方式
|
||||
|
||||
当用户提到以下触发词时,自动激活本技能包:
|
||||
|
||||
- **运营报表**、**派对填表**、**派对截图**
|
||||
- **飞书视频下载**、**妙记下载**、**飞书妙记**
|
||||
- **视频剪辑**、**切片发布**、**视频切片**
|
||||
- **多平台分发**、**一键分发**、**全平台发布**
|
||||
- **卡若创业派对**、**派对运营**
|
||||
|
||||
### 执行流程
|
||||
|
||||
1. **读取对应子技能**:根据用户需求,读取 `skills/` 目录下对应的 SKILL.md
|
||||
2. **检查凭证**:确认 `credentials/` 目录下相关凭证文件存在且有效
|
||||
3. **执行命令**:按子技能文档中的命令执行(路径指向卡若AI原始脚本目录)
|
||||
4. **结果反馈**:执行完成后反馈结果
|
||||
|
||||
---
|
||||
|
||||
## ⚠️ 注意事项
|
||||
|
||||
1. **脚本路径**:所有脚本仍在卡若AI原始目录,本技能包仅提供技能文档和凭证管理
|
||||
2. **凭证同步**:凭证更新后需手动复制到本技能包的 `credentials/` 目录
|
||||
3. **跨平台兼容**:macOS 用 `python3`,Windows 用 `python`
|
||||
|
||||
---
|
||||
|
||||
## 🔄 凭证更新
|
||||
|
||||
### 飞书 Token
|
||||
|
||||
```bash
|
||||
cd "/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本"
|
||||
python3 auto_log.py
|
||||
# 更新后,将 .feishu_tokens.json 复制到本技能包的 credentials/ 目录
|
||||
```
|
||||
|
||||
### 平台 Cookies
|
||||
|
||||
各平台 Cookie 文件位于 `credentials/cookies/` 目录。更新方式:
|
||||
|
||||
- **视频号**:浏览器登录后,使用 `cookie_manager.py` 提取
|
||||
- **B站**:使用 `bilibili-api-python` 自动获取
|
||||
- **小红书/快手**:Playwright 自动化登录后提取
|
||||
|
||||
---
|
||||
|
||||
## 📚 相关文档
|
||||
|
||||
- **主技能入口**:`SKILL.md`
|
||||
- **卡若创业派对项目**:`/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md`
|
||||
- **运营报表脚本**:`/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本/`
|
||||
- **视频切片脚本**:`/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/`
|
||||
- **多平台分发脚本**:`/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/多平台分发/脚本/`
|
||||
|
||||
---
|
||||
|
||||
## 📋 版本记录
|
||||
|
||||
| 版本 | 日期 | 说明 |
|
||||
|:---|:---|:---|
|
||||
| 1.0 | 2026-03-20 | 初版:整合运营报表、视频切片、多平台分发、飞书视频文字下载 4 大技能,统一凭证管理 |
|
||||
233
.cursor/skills/karuo-party/SKILL.md
Normal file
233
.cursor/skills/karuo-party/SKILL.md
Normal file
@@ -0,0 +1,233 @@
|
||||
---
|
||||
name: 卡若创业派对运营
|
||||
description: >
|
||||
卡若创业派对全链路运营技能包。包含运营报表、视频切片、多平台分发、飞书视频文字下载等核心能力。
|
||||
所有凭证(飞书TOKEN、各平台Cookies)统一管理在 credentials/ 目录。
|
||||
当用户提到 运营报表、视频切片、多平台分发、飞书视频下载、派对运营、卡若创业派对 时自动激活。
|
||||
triggers: 运营报表、视频切片、多平台分发、飞书视频下载、派对运营、卡若创业派对、派对填表、视频剪辑、一键分发、妙记下载
|
||||
owner: 水岸
|
||||
group: 运营
|
||||
version: "1.0"
|
||||
updated: "2026-03-20"
|
||||
---
|
||||
|
||||
# 卡若创业派对运营 Skill 包
|
||||
|
||||
> **项目定位**:Soul 创业派对全链路——从派对结束到内容变现
|
||||
> **技能包路径**:`.cursor/skills/karuo-party/`
|
||||
> **凭证目录**:`credentials/`(飞书TOKEN、各平台Cookies)
|
||||
|
||||
---
|
||||
|
||||
## 一、技能包组成
|
||||
|
||||
本技能包包含以下 4 个核心子技能:
|
||||
|
||||
| # | 技能名 | 文件路径 | 触发词 | 用途 |
|
||||
|:--|:---|:---|:---|:---|
|
||||
| ① | Soul派对运营报表 | `skills/运营报表_SKILL.md` | 运营报表、派对填表、派对截图 | 截图→飞书表格→发群 |
|
||||
| ② | 飞书视频文字下载 | `skills/飞书视频文字下载_SKILL.md` | 妙记下载、飞书视频、飞书妙记 | 文字+视频→本地 |
|
||||
| ③ | 视频切片 | `skills/视频切片_SKILL.md` | 视频剪辑、切片发布 | 原视频→转录→高光→成片 |
|
||||
| ④ | 多平台分发 | `skills/多平台分发_SKILL.md` | 一键分发、全平台发布 | 成片→抖音/B站/视频号/小红书/快手 |
|
||||
|
||||
---
|
||||
|
||||
## 二、凭证管理
|
||||
|
||||
所有凭证统一存储在 `credentials/` 目录:
|
||||
|
||||
### 2.1 飞书凭证
|
||||
|
||||
| 文件 | 说明 | 用途 |
|
||||
|:---|:---|:---|
|
||||
| `.feishu_tokens.json` | 飞书访问令牌 | 运营报表、智能纪要、素材库 |
|
||||
|
||||
**Token 自动刷新**:所有脚本遇 401 自动用 refresh_token 刷新,无需手动。
|
||||
|
||||
### 2.2 视频平台 Cookies
|
||||
|
||||
| 平台 | Cookie 文件 | 有效期 | 状态 |
|
||||
|:---|:---|:---|:---|
|
||||
| 视频号 | `cookies/视频号_cookies.json` | ~24-48h | ✅ 可用 |
|
||||
| B站 | `cookies/B站_cookies.json` | ~6个月 | ✅ 可用 |
|
||||
| 小红书 | `cookies/小红书_cookies.json` | ~1-3天 | ✅ 可用 |
|
||||
| 快手 | `cookies/快手_cookies.json` | ~7-30天 | ⚠️ 需检查 |
|
||||
| 抖音 | `cookies/抖音_cookies.json` | ~2-4h | ❌ 账号封禁 |
|
||||
|
||||
**Cookie 管理**:`cookie_manager.py` 统一管理,自动迁移、API 预检、防重复登录。
|
||||
|
||||
---
|
||||
|
||||
## 三、快速使用
|
||||
|
||||
### 3.1 运营报表(派对结束后)
|
||||
|
||||
```bash
|
||||
# 路径指向卡若AI原始脚本目录
|
||||
FEISHU_SCRIPT="/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本"
|
||||
|
||||
cd "$FEISHU_SCRIPT"
|
||||
python3 auto_log.py # 刷新Token(首次或过期时)
|
||||
python3 soul_party_to_feishu_sheet.py 115 # 填表+发群
|
||||
```
|
||||
|
||||
**详细流程**:见 `skills/运营报表_SKILL.md`
|
||||
|
||||
### 3.2 飞书视频文字下载
|
||||
|
||||
```bash
|
||||
JIYAO_SCRIPT="/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/脚本"
|
||||
|
||||
# 导出文字
|
||||
python3 "$JIYAO_SCRIPT/feishu_minutes_export_github.py" "<妙记链接>" -o "/Users/karuo/Documents/聊天记录/soul"
|
||||
|
||||
# 下载视频
|
||||
python3 "$JIYAO_SCRIPT/feishu_minutes_download_video.py" "<妙记链接>" -o "/Users/karuo/Movies/soul视频/原视频"
|
||||
```
|
||||
|
||||
**详细流程**:见 `skills/飞书视频文字下载_SKILL.md`
|
||||
|
||||
### 3.3 视频切片
|
||||
|
||||
```bash
|
||||
VIDEO_SCRIPT="/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本"
|
||||
|
||||
eval "$(~/miniforge3/bin/conda shell.zsh hook)"
|
||||
conda activate mlx-whisper
|
||||
python3 "$VIDEO_SCRIPT/soul_slice_pipeline.py" --video "<原视频.mp4>" --clips 8 --two-folders
|
||||
```
|
||||
|
||||
**详细流程**:见 `skills/视频切片_SKILL.md`
|
||||
|
||||
### 3.4 多平台分发
|
||||
|
||||
```bash
|
||||
DIST_SCRIPT="/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/多平台分发/脚本"
|
||||
|
||||
# 定时排期:第1条立即,后续 30-120min 随机间隔
|
||||
python3 "$DIST_SCRIPT/distribute_all.py" --video-dir "<成片目录>"
|
||||
|
||||
# 立即全部发布
|
||||
python3 "$DIST_SCRIPT/distribute_all.py" --now
|
||||
```
|
||||
|
||||
**详细流程**:见 `skills/多平台分发_SKILL.md`
|
||||
|
||||
---
|
||||
|
||||
## 四、完整流程(派对结束后)
|
||||
|
||||
### Phase 1:数据入库
|
||||
|
||||
1. **运营报表**:提取效果数据 → 填表 → 发群
|
||||
2. **飞书妙记**:导出文字 → 下载视频
|
||||
|
||||
### Phase 2:智能纪要
|
||||
|
||||
1. 提炼纪要 JSON
|
||||
2. 生成纪要 HTML→PNG
|
||||
3. 纪要图入报表
|
||||
4. 纪要图发群
|
||||
|
||||
### Phase 3:视频生产
|
||||
|
||||
1. **视频切片**:转录 → 高光识别 → 批量切片 → 增强
|
||||
2. **多平台分发**:成片 → 5平台发布(定时排期)
|
||||
|
||||
### Phase 4:文章内容
|
||||
|
||||
1. 写第9章文章
|
||||
2. 上传小程序
|
||||
3. 推送飞书群
|
||||
|
||||
**详细流程**:见卡若AI项目 `02_卡人(水)/水岸_项目管理/卡若创业派对/README.md`
|
||||
|
||||
---
|
||||
|
||||
## 五、凭证更新
|
||||
|
||||
### 5.1 飞书 Token 更新
|
||||
|
||||
```bash
|
||||
cd "/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本"
|
||||
python3 auto_log.py
|
||||
```
|
||||
|
||||
更新后,将 `.feishu_tokens.json` 复制到本技能包的 `credentials/` 目录。
|
||||
|
||||
### 5.2 平台 Cookie 更新
|
||||
|
||||
各平台 Cookie 文件位于 `credentials/cookies/` 目录。更新方式:
|
||||
|
||||
1. **视频号**:浏览器登录后,使用 `cookie_manager.py` 提取
|
||||
2. **B站**:使用 `bilibili-api-python` 自动获取
|
||||
3. **小红书/快手**:Playwright 自动化登录后提取
|
||||
|
||||
更新后,Cookie 文件会自动同步到本技能包。
|
||||
|
||||
---
|
||||
|
||||
## 六、目录结构
|
||||
|
||||
```
|
||||
.cursor/skills/karuo-party/
|
||||
├── SKILL.md # 本文件(主入口)
|
||||
├── README.md # 说明文档
|
||||
├── credentials/ # 凭证目录
|
||||
│ ├── .feishu_tokens.json # 飞书Token
|
||||
│ └── cookies/ # 平台Cookies
|
||||
│ ├── 视频号_cookies.json
|
||||
│ ├── B站_cookies.json
|
||||
│ ├── 小红书_cookies.json
|
||||
│ ├── 快手_cookies.json
|
||||
│ └── 抖音_cookies.json
|
||||
└── skills/ # 子技能文件
|
||||
├── 运营报表_SKILL.md
|
||||
├── 飞书视频文字下载_SKILL.md
|
||||
├── 视频切片_SKILL.md
|
||||
└── 多平台分发_SKILL.md
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 七、使用说明
|
||||
|
||||
### 7.1 激活方式
|
||||
|
||||
当用户提到以下触发词时,自动激活本技能包:
|
||||
|
||||
- **运营报表**、**派对填表**、**派对截图**
|
||||
- **飞书视频下载**、**妙记下载**、**飞书妙记**
|
||||
- **视频剪辑**、**切片发布**、**视频切片**
|
||||
- **多平台分发**、**一键分发**、**全平台发布**
|
||||
- **卡若创业派对**、**派对运营**
|
||||
|
||||
### 7.2 执行流程
|
||||
|
||||
1. **读取对应子技能**:根据用户需求,读取 `skills/` 目录下对应的 SKILL.md
|
||||
2. **检查凭证**:确认 `credentials/` 目录下相关凭证文件存在且有效
|
||||
3. **执行命令**:按子技能文档中的命令执行(路径指向卡若AI原始脚本目录)
|
||||
4. **结果反馈**:执行完成后反馈结果
|
||||
|
||||
### 7.3 注意事项
|
||||
|
||||
- **脚本路径**:所有脚本仍在卡若AI原始目录,本技能包仅提供技能文档和凭证管理
|
||||
- **凭证同步**:凭证更新后需手动复制到本技能包的 `credentials/` 目录
|
||||
- **跨平台兼容**:macOS 用 `python3`,Windows 用 `python`
|
||||
|
||||
---
|
||||
|
||||
## 八、相关文档
|
||||
|
||||
- **卡若创业派对项目**:`/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水岸_项目管理/卡若创业派对/README.md`
|
||||
- **运营报表脚本**:`/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本/`
|
||||
- **视频切片脚本**:`/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/视频切片/脚本/`
|
||||
- **多平台分发脚本**:`/Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/多平台分发/脚本/`
|
||||
|
||||
---
|
||||
|
||||
## 版本记录
|
||||
|
||||
| 版本 | 日期 | 说明 |
|
||||
|:---|:---|:---|
|
||||
| 1.0 | 2026-03-20 | 初版:整合运营报表、视频切片、多平台分发、飞书视频文字下载 4 大技能,统一凭证管理 |
|
||||
6
.cursor/skills/karuo-party/credentials/README.md
Normal file
6
.cursor/skills/karuo-party/credentials/README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# 本机凭证目录
|
||||
|
||||
将飞书 token、各平台 cookies 等**仅放在本机**,文件名与结构见上级 `karuo-party` 的 SKILL / README。
|
||||
|
||||
- 本目录已在仓库根 `.gitignore` 中忽略,**不要**把真实密钥提交到 Git。
|
||||
- 若目录为空,按 `skills/karuo-party` 文档从模板复制并重命名即可。
|
||||
170
.cursor/skills/karuo-party/skills/多平台分发_SKILL.md
Normal file
170
.cursor/skills/karuo-party/skills/多平台分发_SKILL.md
Normal file
@@ -0,0 +1,170 @@
|
||||
---
|
||||
name: 多平台分发
|
||||
description: >
|
||||
一键将视频分发到 5 个平台(抖音、B站、视频号、小红书、快手)。
|
||||
API 优先策略:视频号纯 API、B站 bilibili-api-python、抖音纯 API。
|
||||
支持定时排期(第1条立即发,后续 30-120 分钟随机间隔)、并行分发、去重、失败自动重试。
|
||||
triggers: 多平台分发、一键分发、全平台发布、批量分发、视频分发
|
||||
owner: 木叶
|
||||
group: 木
|
||||
version: "4.0"
|
||||
updated: "2026-03-11"
|
||||
---
|
||||
|
||||
# 多平台分发 Skill(v4.0)
|
||||
|
||||
> **核心原则**:API 发布为主,Playwright 为辅。确保确定性地分发到各平台。
|
||||
> **v4.0 变更**:视频号已切换为纯 API、统一元数据生成器、定时排期优化、简介/标签/分区自动填充。
|
||||
|
||||
---
|
||||
|
||||
## 一、平台与实现方式
|
||||
|
||||
| 平台 | 实现方式 | 定时发布 | Cookie 有效期 | 120 场实测 |
|
||||
|------|----------|----------|---------------|------------|
|
||||
| **视频号** | **纯 API**(DFS 上传 + post_create) | API 原生支持 | ~24-48h | 12/12 成功 |
|
||||
| **B站** | **bilibili-api-python** API 优先 → Playwright 兜底 | API `dtime` | ~6 个月 | 12/12 成功 |
|
||||
| **小红书** | Playwright headless 自动化 | UI 定时(降级立即) | ~1-3 天 | 12/12 成功 |
|
||||
| **快手** | Playwright headless 自动化 | UI 定时 | ~7-30 天 | Cookie 过期 |
|
||||
| **抖音** | 纯 API(VOD + bd-ticket-guard) | API `timing_ts` | ~2-4h | 账号封禁中 |
|
||||
|
||||
> **关于视频号官方 API 边界**:
|
||||
> 按《视频号与腾讯相关 API 整理》结论,微信官方目前**没有开放「短视频上传/发布」接口**;本 Skill 中的视频号发布能力,属于对 `https://channels.weixin.qq.com` 视频号助手网页协议的逆向封装(DFS 上传 + `post_create`),仅在你本机使用,需自行承担协议变更与合规风险。
|
||||
> 官方可控能力(直播记录、橱窗、留资、罗盘数据、本地生活等)的服务端 API 入口为:`https://developers.weixin.qq.com/doc/channels/api/`,如需做直播/橱窗/留资集成,可基于该文档在单独 Skill 中扩展。
|
||||
|
||||
---
|
||||
|
||||
## 二、一键命令
|
||||
|
||||
```bash
|
||||
cd /Users/karuo/Documents/个人/卡若AI/03_卡木(木)/木叶_视频内容/多平台分发/脚本
|
||||
|
||||
# 定时排期:第1条立即,后续 30-120min 随机间隔
|
||||
python3 distribute_all.py
|
||||
|
||||
# 立即全部发布
|
||||
python3 distribute_all.py --now
|
||||
|
||||
# 只发指定平台
|
||||
python3 distribute_all.py --platforms 视频号 B站
|
||||
|
||||
# 自定义视频目录
|
||||
python3 distribute_all.py --video-dir "/path/to/videos/"
|
||||
|
||||
# 检查 Cookie / 重试失败
|
||||
python3 distribute_all.py --check
|
||||
python3 distribute_all.py --retry
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 三、定时排期(v4.0 优化)
|
||||
|
||||
### 3.1 排期规则
|
||||
- **第 1 条**:立即发布(`first_delay=0`)
|
||||
- **第 2 条起**:前一条 + random(30, 120) 分钟
|
||||
- 若总跨度 > 24h,自动按比例压缩
|
||||
- 12 条视频典型跨度 ~10-14h
|
||||
|
||||
### 3.2 各平台定时实现
|
||||
|
||||
| 平台 | 定时方式 | 参数 |
|
||||
|------|----------|------|
|
||||
| B站 | API `meta.dtime` | Unix 时间戳(秒) |
|
||||
| 视频号 | API 暂不支持原生定时 | 描述中标注时间/手动设置 |
|
||||
| 抖音 | API `timing_ts` | Unix 时间戳 |
|
||||
| 快手 | Playwright UI | `schedule_helper.py` |
|
||||
| 小红书 | Playwright UI | `schedule_helper.py` |
|
||||
|
||||
---
|
||||
|
||||
## 四、元数据自动生成(v4.0 新增)
|
||||
|
||||
`video_metadata.py` 根据文件名自动生成各平台差异化内容:
|
||||
|
||||
```python
|
||||
from video_metadata import VideoMeta
|
||||
meta = VideoMeta.from_filename("AI最大的缺点是上下文太短.mp4")
|
||||
|
||||
meta.title("B站") # 优化后的标题
|
||||
meta.description("B站") # 标题 + 标签 + 品牌标记
|
||||
meta.tags_str("B站") # AI工具,效率提升,Soul派对,...
|
||||
meta.bilibili_meta() # B站投稿完整 meta(含 tid/tag/desc)
|
||||
meta.title_short() # 小红书短标题(≤20字)
|
||||
meta.hashtags("视频号") # #AI工具 #效率提升 ... #小程序 卡若创业派对
|
||||
```
|
||||
|
||||
### 4.1 内容结构
|
||||
- **标题**:手工优化标题库优先,否则从文件名智能提取
|
||||
- **简介**:标题 + 换行 + 话题标签 + `#小程序 卡若创业派对`
|
||||
- **标签**:基于关键词匹配(AI/创业/副业/Soul 等 12 类)+ 通用标签
|
||||
- **分区**:B站 tid=160(生活>日常)
|
||||
- **风控过滤**:`content_filter.py` 自动替换敏感词(70+ 映射,严格/宽松分级)
|
||||
|
||||
---
|
||||
|
||||
## 五、商品链接/小黄车(调研结果)
|
||||
|
||||
| 平台 | 功能 | 实现方式 | 状态 |
|
||||
|------|------|----------|------|
|
||||
| B站 | 花火计划商品链接 | 需企业认证 + 品牌合作授权 | 需手动配置 |
|
||||
| 视频号 | 挂小程序 | 视频号主页 > 设置 > 服务菜单 > 小程序 | 需手动配置 |
|
||||
| 抖音 | 小黄车 | 需开通橱窗(粉丝 ≥1000) | 账号封禁 |
|
||||
| 快手 | 商品卡片 | 需开通快手小店 | 需手动配置 |
|
||||
| 小红书 | 商品笔记 | 需开通小红书店铺 | 需手动配置 |
|
||||
|
||||
**当前做法**:在描述中统一添加 `#小程序 卡若创业派对` 引导用户搜索。
|
||||
|
||||
---
|
||||
|
||||
## 六、Cookie 管理
|
||||
|
||||
`cookie_manager.py` 统一管理:
|
||||
- 中央存储:`多平台分发/cookies/{平台}_cookies.json`
|
||||
- 自动迁移:旧路径 → 中央存储(首次使用时)
|
||||
- API 预检:5 平台各自 auth API 校验有效性
|
||||
- 防重复登录:有效 Cookie 不触发重新获取
|
||||
|
||||
---
|
||||
|
||||
## 七、去重机制
|
||||
|
||||
- 日志:`publish_log.json`(JSON Lines)
|
||||
- 去重键:`(平台名, 视频文件名)`
|
||||
- 双保险:调度器层 + 平台层
|
||||
- `--no-dedup` 跳过,`--retry` 重跑失败
|
||||
|
||||
---
|
||||
|
||||
## 八、目录结构
|
||||
|
||||
```
|
||||
木叶_视频内容/
|
||||
├── 多平台分发/ ← 本 Skill(调度器 + 共享工具)
|
||||
│ ├── SKILL.md
|
||||
│ └── 脚本/
|
||||
│ ├── distribute_all.py # 主调度器 v4
|
||||
│ ├── video_metadata.py # 统一元数据生成器(v4 新增)
|
||||
│ ├── schedule_generator.py # 定时排期(v4: 第1条立即发)
|
||||
│ ├── schedule_helper.py # Playwright 定时 UI 辅助
|
||||
│ ├── publish_result.py # 统一 PublishResult + 去重
|
||||
│ ├── title_generator.py # 标题生成(被 video_metadata 取代)
|
||||
│ ├── content_filter.py # 敏感词过滤(70+ 映射)
|
||||
│ ├── cookie_manager.py # Cookie 统一管理(5 平台 API 预检)
|
||||
│ ├── video_utils.py # 视频处理(封面、元数据)
|
||||
│ └── publish_log.json # 发布日志
|
||||
├── 抖音发布/ ← 纯 API(账号封禁中)
|
||||
├── B站发布/ ← bilibili-api-python API
|
||||
├── 视频号发布/ ← 纯 API(DFS 协议,v5)
|
||||
├── 小红书发布/ ← Playwright headless
|
||||
└── 快手发布/ ← Playwright headless
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 九、依赖
|
||||
|
||||
- Python 3.10+
|
||||
- httpx, bilibili-api-python, playwright, Pillow
|
||||
- ffmpeg/ffprobe(系统已安装)
|
||||
- `playwright install chromium`
|
||||
583
.cursor/skills/karuo-party/skills/视频切片_SKILL.md
Normal file
583
.cursor/skills/karuo-party/skills/视频切片_SKILL.md
Normal file
@@ -0,0 +1,583 @@
|
||||
---
|
||||
name: 视频切片
|
||||
description: Soul派对视频切片 + 快速混剪 + 切片动效包装(片头/片尾/程序化)+ 剪映思路借鉴(智能剪口播/镜头分割)。触发词含视频剪辑、切片发布、快速混剪、切片动效包装、程序化包装、片头片尾。
|
||||
group: 木
|
||||
triggers: 视频剪辑、切片发布、字幕烧录、**快速混剪、混剪预告、快剪串联、切片动效包装、程序化包装、片头片尾、批量封面、视频包装**、镜头切分、场景检测
|
||||
owner: 木叶
|
||||
version: "1.3"
|
||||
updated: "2026-03-03"
|
||||
---
|
||||
|
||||
# 视频切片
|
||||
|
||||
> **语言**:所有文档、字幕、封面文案统一使用**简体中文**。soul_enhance 自动繁转简。
|
||||
|
||||
> **Soul 视频输出**:Soul 剪辑的成片统一导出到 `/Users/karuo/Movies/soul视频/最终版/`,原视频在 `原视频/`,中间产物在 `其他/`。
|
||||
|
||||
> **联动规则**:每次执行视频切片时,自动检查是否需要「切片动效包装」或「快速混剪」。若用户提到片头/片尾/程序化包装/批量封面,则联动调用 `切片动效包装/10秒视频` 模板渲染,再与切片合成。若用户提到快速混剪/混剪预告/快剪串联,则在切片或成片生成后再调用 `脚本/quick_montage.py` 输出一条节奏版预告。
|
||||
|
||||
## ⭐ Soul派对切片流程(默认)
|
||||
|
||||
```
|
||||
原始视频 → MLX转录 → 字幕转简体 → 高光识别(API 优先/最佳模型,失败则 Ollama→规则) → 批量切片 → soul_enhance → 输出成片
|
||||
↑ ↓
|
||||
提取后立即繁转简+修正错误 封面+字幕(已简体)+加速10%+去语气词
|
||||
```
|
||||
|
||||
**切片时长**:每段为**完整的一个片段**,时长 **30 秒~300 秒**,由该完整片段起止时间决定。**标题**用一句**刺激性观点**(见 `Soul竖屏切片_SKILL.md`)。
|
||||
|
||||
**提问→回答 结构**:若片段内有人提问,前3秒优先展示**提问问题**,再播回答;高光识别填 `question` 且 `hook_3sec` 与之一致,成片整条去语助词。详见 `参考资料/视频结构_提问回答与高光.md`、`参考资料/高光识别提示词.md`。
|
||||
|
||||
**Soul 竖屏专用**:抖音/首页用竖屏成片、完整参数与流程见 → **`Soul竖屏切片_SKILL.md`**(竖屏 498×1080、crop 参数、批量命令)。
|
||||
|
||||
### 最新切片风格(当前默认)
|
||||
|
||||
以后默认按这套风格出切片与成片:
|
||||
|
||||
| 项 | 当前默认风格 |
|
||||
|------|------|
|
||||
| **封面** | **Soul 绿 + 半透明质感 + 深色渐变** |
|
||||
| **前3秒** | **优先提问→回答**,有提问时 Hook = `question` |
|
||||
| **标题** | **一句刺激性观点**,文件名 = 封面标题 = `highlights.title` |
|
||||
| **字幕** | 居中、白字黑描边、关键词亮金黄高亮 |
|
||||
| **节奏** | 去语助词 + 整体加速 10% |
|
||||
| **成片尺寸** | 竖屏 **498×1080** |
|
||||
|
||||
这套风格与 `参考资料/高光识别提示词.md`、`参考资料/热点切片_标准流程.md`、`Soul竖屏切片_SKILL.md` 保持一致。
|
||||
|
||||
### 一键命令(Soul派对专用)
|
||||
|
||||
#### 一体化流水线(推荐)
|
||||
|
||||
```bash
|
||||
cd 03_卡木(木)/木叶_视频内容/视频切片/脚本
|
||||
conda activate mlx-whisper
|
||||
python3 soul_slice_pipeline.py --video "/path/to/soul派对会议第57场.mp4" --clips 6
|
||||
|
||||
# 仅重新烧录(字幕转简体后重跑增强)
|
||||
python3 soul_slice_pipeline.py -v "视频.mp4" -n 6 --skip-transcribe --skip-highlights --skip-clips
|
||||
|
||||
# 切片+成片后,额外生成一条快速混剪
|
||||
python3 soul_slice_pipeline.py -v "视频.mp4" -n 8 --two-folders --quick-montage
|
||||
```
|
||||
|
||||
流程:**转录 → 字幕转简体 → 高光识别 → 批量切片 → 增强**
|
||||
|
||||
#### 分步命令
|
||||
|
||||
```bash
|
||||
# 1. 转录(MLX Whisper,约3分钟/2.5小时视频)
|
||||
eval "$(~/miniforge3/bin/conda shell.zsh hook)"
|
||||
conda activate mlx-whisper
|
||||
mlx_whisper audio.wav --model mlx-community/whisper-small-mlx --language zh --output-format all
|
||||
|
||||
# 2. 高光识别(API 优先,未配置则 Ollama → 规则;流水线会在读取 transcript 前自动转简体)
|
||||
python3 identify_highlights.py -t transcript.srt -o highlights.json -n 6
|
||||
# 需配置 OPENAI_API_KEY 或 OPENAI_API_BASES/KEYS/MODELS,默认模型 gpt-4o
|
||||
|
||||
# 3. 切片
|
||||
python3 batch_clip.py -i 视频.mp4 -l highlights.json -o clips/ -p soul
|
||||
|
||||
# 4. 增强处理(封面+字幕+加速,soul_enhance)
|
||||
python3 soul_enhance.py -c clips/ -l highlights.json -t transcript.srt -o clips_enhanced/
|
||||
```
|
||||
|
||||
### 快速混剪(新增)
|
||||
|
||||
适用场景:已经有 `切片/` 或 `成片/`,需要快速出一条 20~40 秒节奏版预告、招商预热视频、短视频串联版。
|
||||
|
||||
**默认策略**:
|
||||
|
||||
| 项 | 规则 |
|
||||
|------|------|
|
||||
| **顺序** | 优先按 `virality_score` / `rank` 排序;无分数时按序号 |
|
||||
| **取样** | 每条默认截取 **4 秒**高密度片段 |
|
||||
| **成片目录输入** | 自动跳过前 **2.6 秒**封面,避免混剪里全是封面 |
|
||||
| **输出** | 统一分辨率、统一节奏后拼成一条 `快速混剪.mp4` |
|
||||
|
||||
```bash
|
||||
# 从成片目录生成快速混剪(推荐)
|
||||
python3 脚本/quick_montage.py \
|
||||
-i "/path/to/成片" \
|
||||
-o "/path/to/快速混剪.mp4" \
|
||||
-l "/path/to/highlights.json" \
|
||||
--source-kind final \
|
||||
-n 8 \
|
||||
-s 4
|
||||
|
||||
# 一体化流水线里直接附带生成
|
||||
python3 脚本/soul_slice_pipeline.py \
|
||||
-v "/path/to/原视频.mp4" \
|
||||
--two-folders \
|
||||
--quick-montage \
|
||||
--montage-source finals \
|
||||
--montage-max-clips 8 \
|
||||
--montage-seconds 4
|
||||
```
|
||||
|
||||
#### 按章节主题提取(推荐:第9章单场成片)
|
||||
|
||||
以**章节 .md 正文**为来源提取核心主题,再在转录稿中匹配时间,不限于 5 分钟、片段数与章节结构一致。详见 `参考资料/主题片段提取规则.md`。
|
||||
|
||||
```bash
|
||||
# 从章节生成 highlights,再走 batch_clip + soul_enhance
|
||||
python3 chapter_themes_to_highlights.py -c "第112场.md" -t transcript.srt -o highlights_from_chapter.json
|
||||
python3 batch_clip.py -i 视频.mp4 -l highlights_from_chapter.json -o clips/ -p soul112
|
||||
python3 soul_enhance.py -c clips/ -l highlights_from_chapter.json -t transcript.srt -o clips_enhanced/
|
||||
```
|
||||
|
||||
- **主题来源**:章节 .md 按 `---` 分块,每块一个主题;文件名由 batch_clip 按 `前缀_序号_标题` 生成(标题仅保留中文与安全字符)。
|
||||
|
||||
### Soul 竖屏成片(横版源 → 竖屏中段去白边)
|
||||
|
||||
**约定**:以后剪辑 Soul 视频,成片统一做「竖屏中段」裁剪:横版 1920×1080 只保留中间竖条并去掉左右白边,输出 498×1080 竖屏。
|
||||
|
||||
| 步骤 | 说明 |
|
||||
|------|------|
|
||||
| 源 | 横版 1920×1080(soul_enhance 输出) |
|
||||
| 1 | 取竖条 608×1080,起点 **x=483**(相对画面左) |
|
||||
| 2 | 裁掉左侧白边 60px、右侧白边 50px → 内容区宽 498 |
|
||||
| 输出 | **498×1080** 竖屏,仅内容窗口 |
|
||||
|
||||
**FFmpeg 一条命令(固定参数):**
|
||||
|
||||
```bash
|
||||
# 单文件。输入为 1920×1080 的 enhanced 成片
|
||||
ffmpeg -y -i "输入_enhanced.mp4" -vf "crop=608:1080:483:0,crop=498:1080:60:0" -c:a copy "输出_竖屏中段.mp4"
|
||||
```
|
||||
|
||||
**批量对某目录下所有 \*_enhanced.mp4 做竖屏中段:**
|
||||
|
||||
```bash
|
||||
# 脚本目录下执行,或直接调用
|
||||
python3 脚本/soul_vertical_crop.py --dir "/path/to/clips_enhanced" --suffix "_竖屏中段"
|
||||
```
|
||||
|
||||
参数说明见:`参考资料/竖屏中段裁剪参数说明.md`。
|
||||
|
||||
### 增强功能说明
|
||||
|
||||
| 功能 | 说明 |
|
||||
|------|------|
|
||||
| **封面贴片** | 前2.5秒 Hook,苹方/思源黑体 |
|
||||
| **字幕烧录** | 关键词加粗加大亮金黄突出,去语助词+去空格 |
|
||||
| **加速10%** | 节奏更紧凑,适合短视频 |
|
||||
|
||||
### 时间预估
|
||||
|
||||
| 步骤 | 2.5小时视频 |
|
||||
|------|------------|
|
||||
| MLX转录 | 3分钟 |
|
||||
| 切片10个 | 2分钟 |
|
||||
| 增强处理 | 8分钟 |
|
||||
| **总计** | **约13分钟** |
|
||||
|
||||
---
|
||||
|
||||
## AI 生成与 LTX 可选集成
|
||||
|
||||
在「已有录播 → 转录→高光→切片→成片」主流程外,可选用 **LTX**(GitHub: Lightricks/LTX-Video、LTX-2、LTX-Desktop-MPS)实现:
|
||||
|
||||
| 能力 | 用途 |
|
||||
|------|------|
|
||||
| **Retake**(LTX-2 / LTX Desktop) | 对已有视频**某段时间**重生成,替换口误/补拍,再走成片流程 |
|
||||
| **Text/Image/Audio to video** | AI 生成口播替代、片头片尾、插播片段,生成 mp4 后进 `切片/` 或成片流程 |
|
||||
| **Video extension** | 片段前后自然延长,衔接切片 |
|
||||
| **自动 Prompt 增强** | 高光/标题文案 → 更易被生成模型理解,便于 I2V/Retake |
|
||||
|
||||
**详细能力表与 API/本地/Desktop 接入**:见 `参考资料/LTX_能力与集成说明.md`。
|
||||
**Soul 竖屏场景**:见 `Soul竖屏切片_SKILL.md` 第九节「AI 生成与 LTX 可选集成」。
|
||||
**约定**:LTX 生成的片段统一经 soul_enhance(封面+字幕+竖屏)输出,与录播成片一致。
|
||||
|
||||
---
|
||||
|
||||
## 📹 通用视频处理
|
||||
|
||||
一键处理视频:转录 → 字幕清洗 → 视频增强 → 烧录字幕 → **输出单个成片**
|
||||
|
||||
---
|
||||
|
||||
## ⚡ 一键命令
|
||||
|
||||
```bash
|
||||
# 最简用法 - 输出: 视频名_带字幕.mp4
|
||||
python3 /Users/karuo/Documents/个人/卡若AI/04_效率工具/视频切片/scripts/one_video.py -i "视频.mp4"
|
||||
|
||||
# 指定输出路径
|
||||
python3 scripts/one_video.py -i "视频.mp4" -o "成片.mp4"
|
||||
```
|
||||
|
||||
### 处理流程
|
||||
|
||||
```
|
||||
┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐
|
||||
│ 提取音频 │──▶│MLX转录 │──▶│字幕清洗 │──▶│视频增强 │──▶│烧录字幕 │
|
||||
│ (5秒) │ │(1-3分钟)│ │繁转简 │ │降噪美颜 │ │ │
|
||||
└─────────┘ └─────────┘ └─────────┘ └─────────┘ └─────────┘
|
||||
│
|
||||
▼
|
||||
┌────────────────┐
|
||||
│ 单个带字幕成片 │
|
||||
│ 可直接发布 │
|
||||
└────────────────┘
|
||||
```
|
||||
|
||||
### 时间预估
|
||||
|
||||
| 视频时长 | 处理时间 |
|
||||
|---------|---------|
|
||||
| 5分钟 | 1-2分钟 |
|
||||
| 30分钟 | 5-8分钟 |
|
||||
| 1小时 | 10-15分钟 |
|
||||
|
||||
---
|
||||
|
||||
## 🎯 自动优化项
|
||||
|
||||
脚本自动完成以下优化,无需手动操作:
|
||||
|
||||
| 优化项 | 说明 |
|
||||
|--------|------|
|
||||
| 繁转简 | 自动将繁体字幕转为简体 |
|
||||
| 去语气词 | 删除"嗯"、"啊"、"那个"等 |
|
||||
| 修正错误 | 自动修正常见转录错误 |
|
||||
| 音频降噪 | FFT降噪+高低频过滤 |
|
||||
| 画面美颜 | 亮度+饱和度微调 |
|
||||
| 音量标准化 | 统一音量级别 |
|
||||
|
||||
---
|
||||
|
||||
## 📝 手动分步操作
|
||||
|
||||
如需更精细控制,可分步执行:
|
||||
|
||||
### 1. 转录
|
||||
|
||||
```bash
|
||||
# 激活环境
|
||||
eval "$(~/miniforge3/bin/conda shell.zsh hook)"
|
||||
conda activate mlx-whisper
|
||||
|
||||
# 提取音频
|
||||
ffmpeg -y -i "视频.mp4" -vn -ar 16000 -ac 1 audio.wav
|
||||
|
||||
# MLX Whisper转录
|
||||
mlx_whisper audio.wav --model mlx-community/whisper-small-mlx --language zh --output-format srt
|
||||
```
|
||||
|
||||
### 2. 字幕清洗
|
||||
|
||||
```bash
|
||||
# 繁转简+修正错误
|
||||
python3 scripts/fix_subtitles.py --input transcript.srt --output clean.srt
|
||||
```
|
||||
|
||||
### 3. 视频增强
|
||||
|
||||
```bash
|
||||
# 降噪+美颜
|
||||
ffmpeg -y -i "视频.mp4" \
|
||||
-vf "eq=brightness=0.05:saturation=1.1" \
|
||||
-af "afftdn=nf=-25:nr=10:nt=w,highpass=f=80,lowpass=f=8000,volume=1.2" \
|
||||
-c:v h264_videotoolbox -b:v 5M \
|
||||
-c:a aac -b:a 128k \
|
||||
enhanced.mp4
|
||||
```
|
||||
|
||||
### 4. 烧录字幕
|
||||
|
||||
```bash
|
||||
# Clean版(推荐)
|
||||
python3 scripts/burn_subtitles_clean.py -i enhanced.mp4 -s clean.srt -o 成片.mp4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎨 字幕样式
|
||||
|
||||
### 默认样式(Clean版)
|
||||
|
||||
| 元素 | 字号 | 颜色 | 效果 |
|
||||
|------|------|------|------|
|
||||
| 内容字幕 | 42px(竖屏)/ 36px(横屏) | 白色 | 黑色描边,无阴影 |
|
||||
| 关键词 | 同上 | 金黄色 | 自动高亮 |
|
||||
|
||||
### 关键词高亮列表
|
||||
|
||||
自动高亮的关键词(金黄色):
|
||||
- 数字:100万、30万、10万、5万、1万
|
||||
- 概念:私域、AI、自动化、矩阵、IP、获客、变现、转化
|
||||
- 平台:抖音、公众号、微信、存客宝
|
||||
|
||||
---
|
||||
|
||||
## 🔊 音频处理参数
|
||||
|
||||
| 滤镜 | 作用 | 参数 |
|
||||
|------|------|------|
|
||||
| highpass | 去低频杂音 | f=80Hz |
|
||||
| lowpass | 去高频噪音 | f=8000Hz |
|
||||
| afftdn | FFT降噪 | nf=-25, nr=10 |
|
||||
| volume | 音量调整 | 1.2倍 |
|
||||
|
||||
---
|
||||
|
||||
## 📁 脚本列表
|
||||
|
||||
| 脚本 | 功能 | 使用频率 |
|
||||
|------|------|---------|
|
||||
| **soul_slice_pipeline.py** | Soul 切片一体化流水线 | ⭐⭐⭐ 最常用 |
|
||||
| **soul_enhance.py** | 封面+字幕(简体)+加速+去语气词 | ⭐⭐⭐ |
|
||||
| **soul_vertical_crop.py** | Soul 竖屏中段批量裁剪(横版→498×1080 去白边) | ⭐⭐⭐ |
|
||||
| **kill_ffmpeg_when_clip_done.py** | 剪辑结束后自动关掉 ffmpeg(监视剪映/PID 或立即杀) | ⭐ 按需 |
|
||||
| **scene_detect_to_highlights.py** | 镜头/场景检测 → highlights.json(PySceneDetect,可接 batch_clip) | ⭐⭐ |
|
||||
| chapter_themes_to_highlights.py | 按章节 .md 主题提取片段(本地模型→highlights.json) | ⭐⭐⭐ |
|
||||
| identify_highlights.py | 高光识别(API 优先→Ollama→规则,默认 gpt-4o) | ⭐⭐ |
|
||||
| batch_clip.py | 批量切片 | ⭐⭐ |
|
||||
| one_video.py | 单视频一键成片 | ⭐⭐ |
|
||||
| burn_subtitles_clean.py | 字幕烧录(无阴影) | ⭐ |
|
||||
| fix_subtitles.py | 字幕清洗(繁转简) | ⭐ |
|
||||
|
||||
---
|
||||
|
||||
## 🛠 环境配置
|
||||
|
||||
### 已安装(默认使用MLX Whisper)
|
||||
|
||||
- **MLX Whisper**: `~/miniforge3/envs/mlx-whisper` ⭐ **默认转录引擎**
|
||||
- Apple Silicon优化,比CPU Whisper快10倍+
|
||||
- 2.5小时视频转录仅需3分钟
|
||||
- **字体**: `03_卡木(木)/木叶_视频内容/视频切片/fonts/`(优先)
|
||||
- **字幕**: 统一简体中文(soul_enhance 自动繁转简)
|
||||
|
||||
### 转录命令(默认)
|
||||
|
||||
```bash
|
||||
# 激活MLX环境
|
||||
eval "$(~/miniforge3/bin/conda shell.zsh hook)"
|
||||
conda activate mlx-whisper
|
||||
|
||||
# MLX Whisper转录(推荐)
|
||||
mlx_whisper audio.wav --model mlx-community/whisper-small-mlx --language zh --output-format all
|
||||
```
|
||||
|
||||
### 高光识别模型(API 优先)
|
||||
|
||||
高光识别默认使用**当前可用最佳模型**:优先走 **OpenAI 兼容 API**(见下),未配置或失败时再用本地 Ollama,最后规则兜底。
|
||||
|
||||
- **单接口**:`OPENAI_API_BASE`、`OPENAI_API_KEY`、`OPENAI_MODEL`(默认 `gpt-4o`)。
|
||||
- **多接口故障切换**:`OPENAI_API_BASES`、`OPENAI_API_KEYS`、`OPENAI_MODELS`(逗号分隔,按顺序尝试)。
|
||||
- 不写死密钥,从环境变量读取;详见 `运营中枢/参考资料/卡若AI异常处理与红线.md` 与 API 稳定性规则。
|
||||
|
||||
### 依赖检查
|
||||
|
||||
```bash
|
||||
# FFmpeg
|
||||
ffmpeg -version
|
||||
|
||||
# MLX环境
|
||||
eval "$(~/miniforge3/bin/conda shell.zsh hook)"
|
||||
conda activate mlx-whisper
|
||||
python -c "import mlx_whisper; print('OK')"
|
||||
|
||||
# Python库
|
||||
pip3 list | grep -E "moviepy|Pillow|opencc|openai"
|
||||
```
|
||||
|
||||
### 安装依赖
|
||||
|
||||
```bash
|
||||
pip3 install --break-system-packages moviepy Pillow opencc-python-reimplemented
|
||||
|
||||
# 镜头切分(可选):PySceneDetect
|
||||
pip3 install 'scenedetect[opencv]'
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 剪辑结束后自动关 ffmpeg
|
||||
|
||||
脚本 **soul_enhance**、**batch_clip**、**soul_slice_pipeline** 在退出时(含 Ctrl+C)会自动结束本进程启动的 ffmpeg 子进程,避免剪辑结束后仍占用 CPU。
|
||||
|
||||
若使用 **剪映/VideoFusion** 等 GUI 剪辑,可先运行监视脚本,剪辑应用退出后自动杀 ffmpeg:
|
||||
|
||||
```bash
|
||||
# 先启动监视,再打开剪映;关掉剪映后会自动结束 ffmpeg
|
||||
python3 脚本/kill_ffmpeg_when_clip_done.py --app VideoFusion
|
||||
|
||||
# 或监视指定 PID
|
||||
python3 脚本/kill_ffmpeg_when_clip_done.py --pid 12345
|
||||
|
||||
# 仅立即杀掉当前所有 ffmpeg
|
||||
python3 脚本/kill_ffmpeg_when_clip_done.py --kill-now
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ❓ 常见问题
|
||||
|
||||
### Q: 转录不准确?
|
||||
A: 使用medium模型:将脚本中的`whisper-small-mlx`改为`whisper-medium-mlx`
|
||||
|
||||
### Q: 字幕太小/太大?
|
||||
A: 修改`one_video.py`第142行的`font_size`值
|
||||
|
||||
### Q: 处理太慢?
|
||||
A:
|
||||
1. 视频已自动使用VideoToolbox GPU加速
|
||||
2. 字幕默认限制80条以内
|
||||
|
||||
### Q: 输出文件太大?
|
||||
A: 降低码率:将`-b:v 5M`改为`-b:v 3M`
|
||||
|
||||
---
|
||||
|
||||
## 🎬 切片动效包装(联动能力)
|
||||
|
||||
用 React 程序化生成片头/片尾/封面,与切片产出一键合成。**每次执行视频切片时,若用户提到片头/片尾/包装/批量封面,则联动本能力**。
|
||||
|
||||
### 联动规则(必守)
|
||||
|
||||
| 场景 | 是否联动 | 操作 |
|
||||
|:---|:---|:---|
|
||||
| 用户说片头/片尾/程序化包装/批量封面 | ✓ | 先执行切片 → 渲染动效模板 → 合成 |
|
||||
| 默认 Soul 切片、单视频成片 | 可选 | 执行后提示可选用切片动效包装 |
|
||||
|
||||
### 10秒视频模板(卡若AI 品牌)
|
||||
|
||||
路径:`视频切片/切片动效包装/10秒视频/`
|
||||
|
||||
| Composition | 说明 |
|
||||
|:---|:---|
|
||||
| Video10s | 简洁版:渐变 + 标题 + 副标题 |
|
||||
| Video10sRich | 内容丰富版:粒子 + 极限环 + 流动线条 |
|
||||
|
||||
规格:竖屏 1080×1920,10 秒,30fps。
|
||||
|
||||
### 一键命令(动效包装)
|
||||
|
||||
```bash
|
||||
cd 03_卡木(木)/木叶_视频内容/视频切片/切片动效包装/10秒视频
|
||||
|
||||
# 预览
|
||||
npm run dev
|
||||
|
||||
# 渲染片头(简洁版)
|
||||
npx remotion render src/index.ts Video10s /Users/karuo/Documents/卡若Ai的文件夹/导出/程序化视频/片头.mp4
|
||||
|
||||
# 渲染片头(丰富版)
|
||||
npx remotion render src/index.ts Video10sRich /Users/karuo/Documents/卡若Ai的文件夹/导出/程序化视频/片头_丰富.mp4
|
||||
```
|
||||
|
||||
### 与切片合成流程
|
||||
|
||||
```
|
||||
切片产出(clips_enhanced/)
|
||||
↓
|
||||
【联动】渲染片头/片尾
|
||||
↓
|
||||
ffmpeg 合成:片头 + 切片 + 片尾
|
||||
```
|
||||
|
||||
### 参考资料
|
||||
|
||||
- 速查:`视频切片/切片动效包装/参考资料/切片动效包装速查.md`
|
||||
- 官方:https://www.remotion.dev/docs
|
||||
|
||||
---
|
||||
|
||||
## 🎞 剪映思路借鉴与自实现(可选能力)
|
||||
|
||||
> 参考 **剪映专业版**(`/Applications/VideoFusion-macOS.app`)内可读配置与流程,用开源方案自实现「智能剪口播」与「智能镜头分割」,不依赖剪映二进制。详见:`参考资料/剪映_智能剪口播与智能片段分割_逆向分析.md`。
|
||||
|
||||
### 智能剪口播(口播稿 → 按文案/时间轴切片段)
|
||||
|
||||
| 剪映逻辑 | 本技能对应实现 |
|
||||
|----------|----------------|
|
||||
| 语音→文字 + 时间戳 | **MLX Whisper** 转录 → `transcript.srt` |
|
||||
| 按文案智能剪、口播稿↔时间轴对齐 | **高光识别**(`identify_highlights` / `chapter_themes_to_highlights`)→ `highlights.json` → `batch_clip` |
|
||||
| 前端配置键 | `script_ai_cut_config`、`transcript_options`(仅作对照,不读写剪映) |
|
||||
|
||||
**结论**:现有流程「转录 → 字幕转简 → 高光识别 → 批量切片 → soul_enhance」已覆盖「智能剪口播」能力;按句/按段细切可与 `transcript.srt` 时间戳结合,在 `highlights.json` 中按句生成条目即可。
|
||||
|
||||
### 智能镜头分割(按镜头/场景切分)
|
||||
|
||||
剪映 **SceneEditDetection** 思路(仅借鉴思路与参数,算法用开源实现):
|
||||
|
||||
- **输入**:帧序列;剪映内部为 96×96 小图 + 数组缓冲。
|
||||
- **算法思路**:图像特征 + 滑动窗口 + 后处理阈值 → 输出镜头边界。
|
||||
- **剪映可读参数**(`SceneEditDetection/config.json`):
|
||||
`sliding_window_size: 7`、`img_feat_dims: 128`、`post_process_threshold: 0.35`、backbone/predhead 模型名(内部用,不引用)。
|
||||
|
||||
**自实现方案**:使用 **PySceneDetect**(ContentDetector/AdaptiveDetector),按阈值与最小场景长度得到切点,再转为与 `batch_clip` 兼容的 `highlights.json`。
|
||||
|
||||
**一键:镜头检测 → highlights → 批量切片 → 增强**
|
||||
|
||||
```bash
|
||||
cd 03_卡木(木)/木叶_视频内容/视频切片/脚本
|
||||
pip install 'scenedetect[opencv]' # 仅首次
|
||||
|
||||
# 镜头检测 → 生成 highlights.json
|
||||
python3 scene_detect_to_highlights.py -i "原视频.mp4" -o "输出目录/highlights_from_scenes.json" -t 27 --min-scene-len 15
|
||||
|
||||
# 用生成的 highlights 做切片 + 增强(与现有流水线一致)
|
||||
python3 batch_clip.py -i "原视频.mp4" -l "输出目录/highlights_from_scenes.json" -o "输出目录/clips/" -p scene
|
||||
python3 soul_enhance.py -c "输出目录/clips/" -l "输出目录/highlights_from_scenes.json" -t "输出目录/transcript.srt" -o "输出目录/clips_enhanced/"
|
||||
```
|
||||
|
||||
**参数速查**:
|
||||
|
||||
| 参数 | 说明 | 建议 |
|
||||
|------|------|------|
|
||||
| `--threshold` / `-t` | 内容变化阈值,越大切点越少 | 27(可试 20~35) |
|
||||
| `--min-scene-len` | 最小场景长度(帧) | 15 |
|
||||
| `--min-duration` | 过滤短于 N 秒的片段 | 按需 |
|
||||
| `--max-clips` / `-n` | 最多保留片段数 | 0=不限制 |
|
||||
|
||||
**与「高光切片」二选一**:
|
||||
- **高光切片**:按话题/金句/提问(需转录 + 高光识别),适合口播、访谈。
|
||||
- **镜头切片**:按画面切换切分,适合多机位、快剪、无稿素材;可先跑 `scene_detect_to_highlights` 再走同一套 `batch_clip` + `soul_enhance`。
|
||||
|
||||
### 参考资料(剪映与流程)
|
||||
|
||||
- **剪映逆向分析**:`03_卡木(木)/木叶_视频内容/视频切片/参考资料/剪映_智能剪口播与智能片段分割_逆向分析.md`
|
||||
- 智能剪口播 H5 路径、智能片段分割 config 与参数、自实现建议与合规说明。
|
||||
- **热点切片标准流程**:`参考资料/热点切片_标准流程.md`(五步、两目录、命令速查)。
|
||||
- **高光识别提示词**:`参考资料/高光识别提示词.md`(提问→回答、节奏感、快速混剪优先片段规则)。
|
||||
|
||||
---
|
||||
|
||||
## 📊 输出示例
|
||||
|
||||
```
|
||||
输入: 会议录像.mp4 (500MB, 30分钟)
|
||||
↓
|
||||
输出: 会议录像_带字幕.mp4 (200MB)
|
||||
- 中文字幕已烧录
|
||||
- 音频已降噪
|
||||
- 画面已优化
|
||||
- 可直接发布抖音/视频号
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔗 工作目录
|
||||
|
||||
```
|
||||
03_卡木(木)/木叶_视频内容/视频切片/
|
||||
├── 脚本/
|
||||
│ ├── soul_slice_pipeline.py # ⭐ Soul 一体化
|
||||
│ ├── soul_enhance.py # ⭐ 封面+字幕+加速
|
||||
│ ├── scene_detect_to_highlights.py # 镜头检测→highlights(剪映思路自实现)
|
||||
│ ├── one_video.py # 单视频成片
|
||||
│ └── ...
|
||||
├── 参考资料/
|
||||
│ ├── 剪映_智能剪口播与智能片段分割_逆向分析.md # 剪映思路与参数参考
|
||||
│ ├── 热点切片_标准流程.md
|
||||
│ └── 竖屏中段裁剪参数说明.md
|
||||
├── 切片动效包装/ # 联动能力:片头/片尾/程序化
|
||||
│ ├── 10秒视频/ # React 程序化模板
|
||||
│ └── 参考资料/切片动效包装速查.md
|
||||
├── fonts/
|
||||
└── SKILL.md
|
||||
```
|
||||
522
.cursor/skills/karuo-party/skills/运营报表_SKILL.md
Normal file
522
.cursor/skills/karuo-party/skills/运营报表_SKILL.md
Normal file
@@ -0,0 +1,522 @@
|
||||
---
|
||||
name: Soul派对运营报表
|
||||
description: Soul 派对运营数据全自动写入飞书表格(按月份选 2月/3月 标签)→ 会议纪要图片入表 → 发飞书群(数据+纪要图);与智能纪要联动,一站式可执行。含 Token 自动刷新、写入校验、小程序数据、派对录屏链接。完整流程可复制执行,支持基因胶囊打包。
|
||||
triggers: 运营报表、派对填表、派对截图填表发群、会议纪要上传、本月运营数据、全部月份统计、派对纪要、智能纪要、106场、107场、113场、114场、115场
|
||||
parent: 飞书管理
|
||||
owner: 水桥
|
||||
group: 水
|
||||
version: "3.0"
|
||||
updated: "2026-03-04"
|
||||
---
|
||||
|
||||
# Soul 派对运营报表 · 基因胶囊
|
||||
|
||||
> **一句话**:派对截图 + TXT → 飞书运营报表(按月份选表)→ 填数据 + 填纪要图 + 派对录屏链接 + 发群(文字 + 图片),与**会议纪要**联动,完整流程可复制执行,可打包为基因胶囊。
|
||||
|
||||
---
|
||||
|
||||
## 零、完整流程提取(可复制执行)
|
||||
|
||||
以下为从「派对结束」到「报表+群消息+纪要图」全链路的**逐步清单**与**一键命令**,便于 AI 或人工按序执行。
|
||||
|
||||
### 0.1 流程图
|
||||
|
||||
```mermaid
|
||||
flowchart LR
|
||||
subgraph 输入
|
||||
A1[关闭页截图] --> A2[小助手弹窗]
|
||||
A2 --> A3[派对 TXT]
|
||||
A3 --> A4[飞书妙记链接]
|
||||
end
|
||||
subgraph 步骤
|
||||
B1[1. 注册场次+填数据] --> B2[2. 发群文字]
|
||||
B2 --> B3[3. 生成纪要图]
|
||||
B3 --> B4[4. 纪要图入表]
|
||||
B4 --> B5[5. 纪要图发群]
|
||||
end
|
||||
subgraph 输出
|
||||
C1[飞书运营报表]
|
||||
C2[飞书群消息]
|
||||
end
|
||||
A1 --> B1
|
||||
B1 --> C1
|
||||
B2 --> C2
|
||||
B4 --> C1
|
||||
B5 --> C2
|
||||
```
|
||||
|
||||
### 0.2 前置条件
|
||||
|
||||
| 项 | 说明 |
|
||||
|:---|:---|
|
||||
| Python 3 + requests | `pip3 install requests` |
|
||||
| 飞书 Token | 脚本目录下 `.feishu_tokens.json`,过期时运行 `python3 auto_log.py` |
|
||||
| 场次已注册 | 在 `soul_party_to_feishu_sheet.py` 中已添加 ROWS、SESSION_DATE_COLUMN、SESSION_MONTH、PARTY_VIDEO_LINKS(可选)、MINIPROGRAM_EXTRA / MINIPROGRAM_EXTRA_3(可选) |
|
||||
| 派对 TXT | 如 `soul 派对 115场 20260304.txt`,用于纪要文本/纪要图 |
|
||||
|
||||
### 0.3 逐步命令(以 115 场为例)
|
||||
|
||||
| 步 | 动作 | 输入 | 命令 | 输出/校验 |
|
||||
|:---|:---|:---|:---|:---|
|
||||
| 1 | 填效果数据+小程序+派对录屏+发群 | 场次号 115 | `cd 飞书管理/脚本 && python3 soul_party_to_feishu_sheet.py 115` | 控制台见「已写入」「已同步推送到飞书群」「已写入派对录屏链接」 |
|
||||
| 2 | 纪要文本入表(可选) | TXT 路径、日期列 4 | `python3 write_party_minutes_from_txt.py "/path/to/soul 派对 115场 20260304.txt" 4` | 控制台见「已写入派对智能纪要到今日总结」 |
|
||||
| 3 | 生成纪要图 | 见智能纪要 Skill | JSON→HTML→截图,输出到 `卡若Ai的文件夹/报告/soul_115场_智能纪要_20260304.png` | 得到 PNG 文件 |
|
||||
| 4 | 纪要图入表 | PNG 路径、sheet-id、date-col | `python3 feishu_write_minutes_to_sheet.py --party-image "卡若Ai的文件夹/报告/soul_115场_智能纪要_20260304.png" --sheet-id bJR5sA --date-col 4` | 控制台见「已上传派对智能纪要图片」 |
|
||||
| 5 | 纪要图发群 | PNG 路径 | `cd 智能纪要/脚本 && python3 send_to_feishu.py --image "卡若Ai的文件夹/报告/soul_115场_智能纪要_20260304.png"` | 飞书群收到长图 |
|
||||
|
||||
**路径约定**:飞书管理脚本目录 = `02_卡人(水)/水桥_平台对接/飞书管理/脚本/`;智能纪要脚本 = `02_卡人(水)/水桥_平台对接/智能纪要/脚本/`;报告输出 = `卡若Ai的文件夹/报告/`。
|
||||
|
||||
### 0.4 一键顺序命令块(复制即用)
|
||||
|
||||
```bash
|
||||
# 假设已配置 115 场且 TXT 与报告路径如下,按顺序执行
|
||||
FEISHU_SCRIPT="/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本"
|
||||
JIYAO_SCRIPT="/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/脚本"
|
||||
REPORT="/Users/karuo/Documents/卡若Ai的文件夹/报告"
|
||||
TXT="/Users/karuo/Documents/聊天记录/soul/soul 派对 115场 20260304.txt"
|
||||
|
||||
cd "$FEISHU_SCRIPT"
|
||||
python3 auto_log.py
|
||||
python3 soul_party_to_feishu_sheet.py 115
|
||||
python3 write_party_minutes_from_txt.py "$TXT" 4
|
||||
|
||||
# 纪要图需先按智能纪要 Skill 生成 HTML 再截图得到 PNG,再执行:
|
||||
# python3 feishu_write_minutes_to_sheet.py --party-image "$REPORT/soul_115场_智能纪要_20260304.png" --sheet-id bJR5sA --date-col 4
|
||||
# cd "$JIYAO_SCRIPT" && python3 send_to_feishu.py --image "$REPORT/soul_115场_智能纪要_20260304.png"
|
||||
```
|
||||
|
||||
### 0.5 新场次从零到完成清单
|
||||
|
||||
1. **在 `soul_party_to_feishu_sheet.py` 中**:添加 `ROWS['116']`、`SESSION_DATE_COLUMN['116']`、`SESSION_MONTH['116']`,以及在 `_maybe_send_group` 的 `date_label`、`src_date` 中加 `'116'`;若需派对录屏则填 `PARTY_VIDEO_LINKS['116']`;若需小程序则填 `MINIPROGRAM_EXTRA_3['5']`(3 月 5 日)。
|
||||
2. **执行填表**:`python3 soul_party_to_feishu_sheet.py 116`。
|
||||
3. **可选**:纪要文本 `write_party_minutes_from_txt.py "<txt>" 5`;纪要图按智能纪要生成后 `feishu_write_minutes_to_sheet.py --party-image <png> --sheet-id bJR5sA --date-col 5`,再 `send_to_feishu.py --image <png>`。
|
||||
|
||||
### 0.6 故障排查速查
|
||||
|
||||
| 现象 | 处理 |
|
||||
|:---|:---|
|
||||
| 未找到日期列 | 先 `python3 auto_log.py` 再重试;确认 SESSION_DATE_COLUMN、SESSION_MONTH 与表头一致 |
|
||||
| 90202 wrong range | 单格写入时 range 写成 `E29:E29` 形式 |
|
||||
| 派对录屏未写入 | 检查 PARTY_VIDEO_LINKS 是否非空且格式为完整 URL |
|
||||
| 小程序数据未写入 | 3 月用 MINIPROGRAM_EXTRA_3,键为当月「日期号」如 '4' |
|
||||
| 飞书群未收到 | 检查 Webhook、机器人是否启用 |
|
||||
|
||||
---
|
||||
|
||||
## 一站式完整流程(填数据 → 填图片 → 发群)
|
||||
|
||||
**目标**:同一场派对做完「填运营报表数据 → 把会议纪要图片填进报表 → 把纪要图发到飞书群」,顺序执行、流程清晰。
|
||||
|
||||
| 步骤 | 动作 | 命令 / 说明 |
|
||||
|:---|:---|:---|
|
||||
| **1** | **填数据 + 发群(文字)** | `cd 飞书管理/脚本`<br/>`python3 soul_party_to_feishu_sheet.py 115`<br/>→ 效果数据写入当月表对应日期列,并**自动推送竖状文字到飞书群**(含报表链接) |
|
||||
| **2** | **生成会议纪要图** | 按 **智能纪要 Skill**(`02_卡人(水)/水桥_平台对接/智能纪要/SKILL.md`):txt → JSON → HTML → 截图 PNG,输出到 `卡若Ai的文件夹/报告/` |
|
||||
| **3** | **填图片到报表** | `cd 飞书管理/脚本`<br/>`python3 feishu_write_minutes_to_sheet.py --party-image "<报告路径>/soul_115场_智能纪要_20260304.png" --sheet-id bJR5sA --date-col 4`<br/>→ 纪要图写入运营报表「今日总结」对应列(3 月 115 场 = 第 4 列) |
|
||||
| **4** | **把纪要图发到飞书群** | `cd 智能纪要/脚本`<br/>`python3 send_to_feishu.py --image "<报告路径>/soul_115场_智能纪要_20260304.png"`<br/>→ 默认 Webhook 为**运营报表同一飞书群**,群内会收到纪要长图 |
|
||||
|
||||
**执行顺序**:1 → 2 → 3 → 4,即可完成「数据入表 + 纪要图入表 + 群内先收文字再收纪要图」。
|
||||
|
||||
- **2 月场次**:步骤 3 不传 `--sheet-id`/`--date-col` 时,默认写 2 月表 19/20 列;步骤 4 不变。
|
||||
- **同群**:运营报表发群与纪要图发群使用同一 Webhook(见 1.3),群内先看到场次数据,再看到纪要图。
|
||||
|
||||
---
|
||||
|
||||
## 快速开始(30 秒上手)
|
||||
|
||||
```bash
|
||||
# ❶ 安装依赖(一次性)
|
||||
pip3 install requests
|
||||
|
||||
# ❷ 刷新飞书 Token(每天首次或 Token 过期时)
|
||||
cd 飞书管理/脚本 && python3 auto_log.py
|
||||
|
||||
# ❸ 写入派对效果数据(自动选 2月/3月 工作表 + 发群)
|
||||
python3 soul_party_to_feishu_sheet.py 115
|
||||
|
||||
# ❹ 生成派对智能纪要文本并写入「今日总结」(可选,与纪要图二选一或都做)
|
||||
python3 write_party_minutes_from_txt.py "/path/to/soul 派对 115场 20260304.txt" 4
|
||||
|
||||
# ❺ 批量写入小程序数据(可选)
|
||||
python3 write_miniprogram_batch.py
|
||||
```
|
||||
|
||||
所有脚本路径:飞书管理相关在 `飞书管理/脚本/`,纪要生成与发图在 `智能纪要/脚本/`。**3 月场次**会自动写入 3 月工作表标签,不会误写到 2 月。
|
||||
|
||||
---
|
||||
|
||||
## 一、完整配置清单
|
||||
|
||||
### 1.1 飞书应用
|
||||
|
||||
| 项目 | 值 |
|
||||
|:---|:---|
|
||||
| App ID | `cli_a48818290ef8100d` |
|
||||
| App Secret | `dhjU0qWd5AzicGWTf4cTqhCWJOrnuCk4` |
|
||||
| 授权回调 | `http://localhost:5050/api/auth/callback` |
|
||||
| 权限 | `wiki:wiki` `docx:document` `drive:drive` |
|
||||
|
||||
### 1.2 运营报表(飞书电子表格)
|
||||
|
||||
| 项目 | 值 |
|
||||
|:---|:---|
|
||||
| 表格链接(2月) | https://cunkebao.feishu.cn/wiki/wikcnIgAGSNHo0t36idHJ668Gfd?sheet=7A3Cy9 |
|
||||
| 表格链接(3月) | https://cunkebao.feishu.cn/wiki/wikcnIgAGSNHo0t36idHJ668Gfd?sheet=bJR5sA |
|
||||
| spreadsheet_token | `wikcnIgAGSNHo0t36idHJ668Gfd` |
|
||||
| 2 月 sheet_id | `7A3Cy9` |
|
||||
| 3 月 sheet_id | `bJR5sA` |
|
||||
| 表格结构 | A 列=指标名,第 1 行=日期(1、2…),第 2 行可含「113场」「114场」等,第 3~12 行=效果数据,第 15 行=小程序访问,第 28 行=今日总结,第 29 行=派对录屏(飞书妙记链接) |
|
||||
| 月份选择 | 脚本按 `SESSION_MONTH` 自动选 2 月或 3 月工作表,避免串月 |
|
||||
|
||||
### 1.3 飞书群 Webhook(报表数据 + 纪要图同群)
|
||||
|
||||
| 项目 | 值 |
|
||||
|:---|:---|
|
||||
| Webhook URL | `https://open.feishu.cn/open-apis/bot/v2/hook/34b762fc-5b9b-4abb-a05a-96c8fb9599f1` |
|
||||
| 用途 | ① 填表后自动推送竖状格式消息(场次数据+报表链接);② 会议纪要图片发群(智能纪要 `send_to_feishu.py --image` 默认即此 Webhook) |
|
||||
|
||||
### 1.4 Token 管理
|
||||
|
||||
| 项目 | 说明 |
|
||||
|:---|:---|
|
||||
| Token 文件 | 脚本同目录 `.feishu_tokens.json` |
|
||||
| 含字段 | `access_token`、`refresh_token`、`auth_time` |
|
||||
| 自动刷新 | 所有脚本遇 401 自动用 refresh_token 刷新,无需手动 |
|
||||
| 手动刷新 | `python3 auto_log.py` (静默刷新,不需浏览器) |
|
||||
|
||||
---
|
||||
|
||||
## 二、脚本清单与用途
|
||||
|
||||
### 2.1 核心脚本(日常使用)
|
||||
|
||||
| 脚本 | 功能 | 命令 |
|
||||
|:---|:---|:---|
|
||||
| `soul_party_to_feishu_sheet.py` | 按场次写入效果数据到**当月工作表**对应日期列 + 飞书群推送(2 月/3 月自动选标签) | `python3 soul_party_to_feishu_sheet.py 115` |
|
||||
| `write_party_minutes_from_txt.py` | 从 TXT 生成智能纪要**文本**写入「今日总结」行(需指定日期列号) | `python3 write_party_minutes_from_txt.py "<txt路径>" 4` |
|
||||
| `auto_log.py` | Token 刷新 + 飞书日志写入 | `python3 auto_log.py` |
|
||||
|
||||
### 2.2 辅助脚本
|
||||
|
||||
| 脚本 | 功能 | 命令 |
|
||||
|:---|:---|:---|
|
||||
| `feishu_write_minutes_to_sheet.py` | 会议纪要/派对总结**图片**上传到「今日总结」对应日期列(默认 2 月 19/20 日列);3 月某场需指定 sheet 与日期列;**发群**需另执行智能纪要 `send_to_feishu.py --image` | `python3 feishu_write_minutes_to_sheet.py [内部图] [派对图]`<br/>3 月 115 场:`--party-image <png路径> --sheet-id bJR5sA --date-col 4` |
|
||||
| `feishu_sheet_monthly_stats.py` | 月度运营数据统计 | `python3 feishu_sheet_monthly_stats.py 2` 或 `all` |
|
||||
| `write_miniprogram_to_sheet.py` | **单日**写入小程序三核心数据(访问次数、访客、交易金额) | `python3 write_miniprogram_to_sheet.py 23 55 55 0` |
|
||||
| `write_miniprogram_batch.py` | **批量**将 `MINIPROGRAM_EXTRA` 中所有日期的小程序数据写入报表 | `python3 write_miniprogram_batch.py` |
|
||||
|
||||
### 2.3 派对录屏链接(自动写入)
|
||||
|
||||
填表时若在 `soul_party_to_feishu_sheet.py` 中配置了 `PARTY_VIDEO_LINKS[场次]`(飞书妙记完整 URL),会**自动**写入「派对录屏」行对应列(如 115 场 → E29)。新场次需在脚本中补全链接后重新执行该场次填表。
|
||||
|
||||
### 2.4 小程序运营数据(自动写入)
|
||||
|
||||
每日填表时,若在 `soul_party_to_feishu_sheet.py` 中配置了 **2 月** `MINIPROGRAM_EXTRA` 或 **3 月** `MINIPROGRAM_EXTRA_3`,会**自动**把当日小程序三核心数据写入对应日期列。数据需从 **Soul 小程序 / 微信公众平台 → 小程序 → 统计 → 实时访问、概况** 获取后填入配置:
|
||||
|
||||
| 指标 | 数据来源 | 行(A 列关键词) |
|
||||
|:---|:---|:---|
|
||||
| 访问次数 | 微信公众平台 → 小程序 → 统计 → 实时访问 | 小程序访问 |
|
||||
| 访客 | 同上 | 访客 |
|
||||
| 交易金额 | 同上 | 交易金额 |
|
||||
|
||||
**配置方式**(在 `soul_party_to_feishu_sheet.py` 中):
|
||||
|
||||
```python
|
||||
# 派对录屏(飞书妙记链接),写入「派对录屏」行
|
||||
PARTY_VIDEO_LINKS = {
|
||||
'115': 'https://cunkebao.feishu.cn/minutes/obcnxxxx...', # 从飞书妙记复制
|
||||
}
|
||||
|
||||
# 2 月小程序数据
|
||||
MINIPROGRAM_EXTRA = {
|
||||
'23': {'访问次数': 55, '访客': 55, '交易金额': 0}, # 2月23日
|
||||
}
|
||||
# 3 月小程序数据(113/114/115 场填表时自动写 3 月表)
|
||||
MINIPROGRAM_EXTRA_3 = {
|
||||
'4': {'访问次数': 60, '访客': 60, '交易金额': 0}, # 3月4日 115场,从 Soul 小程序后台获取后填入
|
||||
}
|
||||
```
|
||||
|
||||
- 数据来源:Soul 小程序 / 微信公众平台 → 小程序 → 统计,每日手动查看后填入
|
||||
- 填派对表时自动带出:运行 `soul_party_to_feishu_sheet.py` 某场时,2 月用 `MINIPROGRAM_EXTRA`、3 月用 `MINIPROGRAM_EXTRA_3` 同列写入小程序三项,并若有 `PARTY_VIDEO_LINKS` 则写入派对录屏行
|
||||
- 单日写入(仅 2 月表):`python3 write_miniprogram_to_sheet.py 23 55 55 0`(日期列号 访问次数 访客 交易金额)
|
||||
- 历史补全:在 `MINIPROGRAM_EXTRA` 中配齐多日数据后执行 `python3 write_miniprogram_batch.py`
|
||||
|
||||
---
|
||||
|
||||
## 三、完整操作流程
|
||||
|
||||
**整体顺序**:先执行 **[ 一站式完整流程 ]**(本文件开头)中的 ① 填数据发群 → ② 生成纪要图 → ③ 填图片到报表 → ④ 纪要图发群,再按需做小程序或纪要文本。
|
||||
|
||||
### 3.1 每日派对结束后操作(当前流程)
|
||||
|
||||
```
|
||||
输入:派对关闭页截图 + 小助手弹窗截图 + TXT 聊天记录(+ 可选:小程序当日数据)
|
||||
输出:飞书运营报表(当月标签)写入 + 飞书群推送(文字) + 纪要图入表 + 纪要图发群(与会议纪要联动)
|
||||
```
|
||||
|
||||
**月份与工作表**:脚本根据 `SESSION_MONTH` 自动选择 2 月或 3 月工作表,3 月场次(如 113、114、115)写入 3 月标签,不会写入 2 月。
|
||||
|
||||
#### Step 1:提取数据(从截图)
|
||||
|
||||
从派对关闭页和小助手弹窗提取 10 项数据:
|
||||
|
||||
| 序号 | 指标 | 来源 |
|
||||
|:---|:---|:---|
|
||||
| 1 | 主题 | TXT 提炼 ≤12 字 |
|
||||
| 2 | 时长(分钟) | 关闭页「派对时长」 |
|
||||
| 3 | Soul推流人数 | 关闭页「本场获得额外曝光」 |
|
||||
| 4 | 进房人数 | 关闭页「派对成员」或小助手「进房人数」 |
|
||||
| 5 | 人均时长 | 小助手「人均时长」 |
|
||||
| 6 | 互动数量 | 小助手「互动数量」 |
|
||||
| 7 | 礼物 | 关闭页「本场收到礼物」 |
|
||||
| 8 | 灵魂力 | 关闭页「收获灵魂力」 |
|
||||
| 9 | 增加关注 | 关闭页「新增粉丝」或小助手「增加关注」 |
|
||||
| 10 | 最高在线 | 关闭页「最高在线」 |
|
||||
|
||||
#### Step 2:在脚本中注册新场次
|
||||
|
||||
打开 `soul_party_to_feishu_sheet.py`,在 `ROWS` 字典中添加:
|
||||
|
||||
```python
|
||||
# 格式:'场次号': [主题, 时长, 推流, 进房, 人均, 互动, 礼物, 灵魂力, 关注, 最高在线]
|
||||
'107': ['主题关键词 ≤12字', 140, 35000, 400, 8, 90, 3, 25, 10, 45],
|
||||
```
|
||||
|
||||
在 `SESSION_DATE_COLUMN` 和 `SESSION_MONTH` 中添加映射(**按月份选工作表标签**,3 月填 3 月表):
|
||||
|
||||
```python
|
||||
SESSION_DATE_COLUMN = {'105': '20', '106': '21', '107': '23', '113': '2', '114': '3', '115': '4'}
|
||||
SESSION_MONTH = {'105': 2, '106': 2, '107': 2, '113': 3, '114': 3, '115': 3}
|
||||
```
|
||||
|
||||
并在 `_maybe_send_group` 的 `date_label`、`src_date` 中为该场次加上对应「X月X日」和 TXT 日期(如 `'115': '3月4日'`、`'115': '20260304'`)。
|
||||
|
||||
#### Step 3:执行写入 + 校验
|
||||
|
||||
```bash
|
||||
# 写入效果数据(自动选 2月/3月 表 + 校验 + 发群)
|
||||
python3 soul_party_to_feishu_sheet.py 115
|
||||
|
||||
# 生成智能纪要文本并写入「今日总结」(日期列号 = 当月几号,如 3月4日 填 4)
|
||||
python3 write_party_minutes_from_txt.py "/path/to/soul 派对 115场 20260304.txt" 4
|
||||
```
|
||||
|
||||
成功输出示例(3 月场次):
|
||||
```
|
||||
✅ 已选 3月 工作表(sheet_id=bJR5sA)
|
||||
✅ 已写入飞书表格:115场 效果数据(竖列 E3:E12,共10格),校验通过
|
||||
✅ 已同步推送到飞书群(竖状格式)
|
||||
✅ 已写入派对智能纪要到「今日总结」→ 2月4日列,校验通过
|
||||
```
|
||||
|
||||
若需将**智能纪要图片**放入「今日总结」并**发到飞书群**:见下节「智能纪要图片上传到报表 + 发群」。
|
||||
|
||||
---
|
||||
|
||||
## 3.2 智能纪要图片上传到报表 + 发群(十步清单)
|
||||
|
||||
与 **智能纪要 Skill**(`02_卡人(水)/水桥_平台对接/智能纪要/SKILL.md`)联动:纪要图写入运营报表「今日总结」对应列,并**发到运营报表同一飞书群**。
|
||||
|
||||
| 序号 | 步骤 | 说明 |
|
||||
|:---|:---|:---|
|
||||
| 1 | 准备派对 txt | 如 `soul 派对 115场 20260304.txt`(聊天记录/soul) |
|
||||
| 2 | 智能提炼 JSON | 按智能纪要规范从 txt 提炼分享人、重点片段、干货、行动项,生成 `xxx_meeting.json` |
|
||||
| 3 | 生成 HTML | `智能纪要/脚本/generate_meeting.py --input xxx_meeting.json --output "卡若Ai的文件夹/报告/soul_115场_智能纪要_20260304.html"` |
|
||||
| 4 | 导出目录 | HTML/PNG 一律导出到 `卡若Ai的文件夹/报告/`,不落在 Skill 内 |
|
||||
| 5 | 截图 PNG | `智能纪要/脚本/screenshot.py "<报告路径>.html" --output "<报告路径>.png"` |
|
||||
| 6 | 确认场次与月份 | 115 场 → 3 月表、日期列 4;2 月场次用默认 19/20 列 |
|
||||
| 7 | 上传到报表 | `飞书管理/脚本/feishu_write_minutes_to_sheet.py --party-image "<报告路径>.png" --sheet-id bJR5sA --date-col 4`(3 月) |
|
||||
| 8 | **纪要图发群** | `智能纪要/脚本/send_to_feishu.py --image "<报告路径>.png"`(默认 Webhook = 运营报表群,群内收到纪要长图) |
|
||||
| 9 | 2 月表 | 不指定时默认 `SHEET_ID=7A3Cy9`,派对图→19 列、内部会议→20 列;发群命令同上 |
|
||||
| 10 | 协作 | 纪要内容与样式以智能纪要 Skill 为准;本 Skill 负责写入报表、Token 及与发群流程衔接 |
|
||||
|
||||
**3 月场次参数速查**:`--sheet-id bJR5sA`,`--date-col` = 当月日期(如 4 日填 `4`)。纪要生成与截图命令详见智能纪要 Skill「智能纪要图片上传到运营报表」小节。
|
||||
|
||||
---
|
||||
|
||||
## 四、写入校验机制
|
||||
|
||||
所有写入操作均含**写后读回校验**:
|
||||
|
||||
| 场景 | 校验方式 |
|
||||
|:---|:---|
|
||||
| 效果数据写入 | 写入后读回首格(主题),比对一致才算成功 |
|
||||
| 智能纪要写入 | 写入后读回单元格内容,检查字数 > 0 |
|
||||
| Token 过期 | 自动刷新后重试,不降级为追加行(避免写入错误位置) |
|
||||
| 日期列未找到 | 直接报错退出,不降级为追加行 |
|
||||
|
||||
校验未通过时脚本会打印具体差异信息,方便排查。
|
||||
|
||||
---
|
||||
|
||||
## 五、飞书群推送格式
|
||||
|
||||
**两类推送(同一飞书群)**:① 填表后自动推送竖状文字(场次数据+报表链接);② 纪要图发群需执行智能纪要 `send_to_feishu.py --image <png路径>`,默认即本群 Webhook。一站式顺序见文首「一站式完整流程」。
|
||||
|
||||
写入成功后自动发送到飞书群(竖状格式,每行一项)。链接按当月工作表变化(3 月场次会带 `sheet=bJR5sA`):
|
||||
|
||||
```
|
||||
【Soul 派对运营报表】
|
||||
链接:https://cunkebao.feishu.cn/wiki/wikcnIgAGSNHo0t36idHJ668Gfd?sheet=bJR5sA
|
||||
|
||||
115场(3月4日)已登记:
|
||||
主题:破产两次 家庭先于事业
|
||||
时长(分钟):156
|
||||
Soul推流人数:36974
|
||||
进房人数:484
|
||||
人均时长(分钟):8
|
||||
互动数量:82
|
||||
礼物:1
|
||||
灵魂力:3
|
||||
增加关注:15
|
||||
最高在线:56
|
||||
数据来源:soul 派对 115场 20260304.txt
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 六、智能纪要生成规则
|
||||
|
||||
**文本纪要**:`write_party_minutes_from_txt.py` 从派对 TXT 自动提炼结构化纪要:
|
||||
|
||||
| 板块 | 内容 |
|
||||
|:---|:---|
|
||||
| 关键词 | 从 TXT 头部 `关键词:` 行提取 |
|
||||
| 一、核心内容 | 按关键词匹配提取:退伍军人、AI切入、私域、编导对赌、项目切割等 |
|
||||
| 二、金句 | 从对话中提炼可操作的建议 |
|
||||
| 三、下一步 | 行动建议(联系管理、搜索培训等) |
|
||||
|
||||
纪要**文本**写入运营报表「今日总结」行、对应日期列(需传入日期列号,如 3 月 4 日传 `4`)。**纪要图片**上传到同一格并**发群**:见 **§3.2 智能纪要图片上传到报表 + 发群**;3 月用 `--party-image --sheet-id bJR5sA --date-col <日>`,发群用 `智能纪要/脚本/send_to_feishu.py --image <png>`。
|
||||
|
||||
---
|
||||
|
||||
## 七、跨平台兼容
|
||||
|
||||
### macOS(推荐)
|
||||
|
||||
```bash
|
||||
# 安装依赖
|
||||
pip3 install requests
|
||||
|
||||
# 所有命令直接用 python3
|
||||
python3 soul_party_to_feishu_sheet.py 106
|
||||
```
|
||||
|
||||
### Windows
|
||||
|
||||
```cmd
|
||||
# 安装依赖
|
||||
pip install requests
|
||||
|
||||
# Windows 用 python(不是 python3)
|
||||
python soul_party_to_feishu_sheet.py 106
|
||||
python write_party_minutes_from_txt.py "C:\Downloads\soul 派对 106场 20260221.txt" 21
|
||||
python auto_log.py
|
||||
```
|
||||
|
||||
### 路径差异
|
||||
|
||||
| 项目 | macOS | Windows |
|
||||
|:---|:---|:---|
|
||||
| 脚本目录 | `/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/飞书管理/脚本/` | `C:\Users\用户名\卡若AI\02_卡人(水)\水桥_平台对接\飞书管理\脚本\` |
|
||||
| Python | `python3` | `python` |
|
||||
| TXT 路径 | `/Users/karuo/Downloads/xxx.txt` | `C:\Users\用户名\Downloads\xxx.txt` |
|
||||
| Token 文件 | 脚本同目录 `.feishu_tokens.json`(两个平台一致) | 同左 |
|
||||
|
||||
### 环境变量覆盖(可选)
|
||||
|
||||
所有配置项均可通过环境变量覆盖,无需改脚本:
|
||||
|
||||
```bash
|
||||
export FEISHU_SPREADSHEET_TOKEN=wikcnIgAGSNHo0t36idHJ668Gfd
|
||||
export FEISHU_SHEET_ID=7A3Cy9
|
||||
export FEISHU_GROUP_WEBHOOK=https://open.feishu.cn/open-apis/bot/v2/hook/34b762fc-...
|
||||
export FEISHU_APP_ID=cli_a48818290ef8100d
|
||||
export FEISHU_APP_SECRET=dhjU0qWd5AzicGWTf4cTqhCWJOrnuCk4
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 八、常见问题
|
||||
|
||||
| 问题 | 解决 |
|
||||
|:---|:---|
|
||||
| `❌ 无法获取飞书 Token` | 运行 `python3 auto_log.py` 刷新 Token |
|
||||
| `❌ 未找到日期列` | Token 过期导致读表失败,先 `python3 auto_log.py` 再重试 |
|
||||
| `⚠️ 飞书群推送失败` | 检查 Webhook URL 是否有效、群机器人是否被禁用 |
|
||||
| `❌ 写入失败 401` | Token 过期,脚本会自动刷新并重试;若仍失败则 `python3 auto_log.py` |
|
||||
| Windows 中文路径乱码 | 确保终端编码为 UTF-8:`chcp 65001` |
|
||||
| `pip3 not found` | Windows 用 `pip`;macOS 可能需 `pip3` 或 `python3 -m pip` |
|
||||
|
||||
---
|
||||
|
||||
## 九、表格结构参考
|
||||
|
||||
2 月表(sheet=7A3Cy9)、3 月表(sheet=bJR5sA)结构一致:
|
||||
|
||||
```
|
||||
表头第1行: [空] | 3月 | 1 | 2 | 3 | 4 | 5 | 6 | ...
|
||||
第2行: 一、效果数据 | | 113场 | 114场 | 115场 | 116场 | ...
|
||||
第3行: 主题 | | xx | xx | xx | |
|
||||
第4行: 时长 | | xx | xx | xx | |
|
||||
...
|
||||
第12行: 最高在线 | | xx | xx | xx | |
|
||||
...
|
||||
第15行: 小程序访问| | xx | xx | xx | | ← 访问次数、访客、交易金额
|
||||
...
|
||||
第28行: 今日总结 | | xx | xx | xx | | ← 智能纪要(文本或图片)
|
||||
```
|
||||
|
||||
按 `SESSION_DATE_COLUMN` 与 `SESSION_MONTH` 决定写入哪一列、哪张表。
|
||||
|
||||
---
|
||||
|
||||
## 十、新增场次模板
|
||||
|
||||
每次新增场次,在 `soul_party_to_feishu_sheet.py` 中改以下几处:
|
||||
|
||||
```python
|
||||
# 1. ROWS 字典加一行(主题可带冲击性,≤12 字)
|
||||
'116': ['主题≤12字', 时长, 推流, 进房, 人均, 互动, 礼物, 灵魂力, 关注, 最高在线],
|
||||
|
||||
# 2. SESSION_DATE_COLUMN 加日期映射(当月几号)
|
||||
SESSION_DATE_COLUMN = {..., '116': '5'}
|
||||
|
||||
# 3. SESSION_MONTH 加月份(3 月场次必填 3,否则会写入 2 月表)
|
||||
SESSION_MONTH = {..., '116': 3}
|
||||
|
||||
# 4. _maybe_send_group 内 date_label、src_date 加映射(否则不发群)
|
||||
# date_label = {..., '116': '3月5日'}
|
||||
# src_date = {..., '116': '20260305'}
|
||||
|
||||
# 5. 若当日有小程序数据,在 MINIPROGRAM_EXTRA 中加:
|
||||
# MINIPROGRAM_EXTRA = {..., '5': {'访问次数': 60, '访客': 60, '交易金额': 0}}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 十一、基因胶囊打包入口
|
||||
|
||||
本 Skill 支持打包为基因胶囊,便于继承与分发。打包后产出位于 `卡若Ai的文件夹/导出/基因胶囊/`。
|
||||
|
||||
```bash
|
||||
cd /Users/karuo/Documents/个人/卡若AI
|
||||
python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule.py" pack "02_卡人(水)/水桥_平台对接/飞书管理/运营报表_SKILL.md"
|
||||
# 或按技能名(在 SKILL_REGISTRY 中匹配)
|
||||
python3 "05_卡土(土)/土砖_技能复制/基因胶囊/脚本/gene_capsule.py" pack "Soul派对运营报表"
|
||||
```
|
||||
|
||||
打包后将生成:胶囊 JSON、基因胶囊功能流程图.md、说明文档.md(含解包命令与引用)。
|
||||
|
||||
---
|
||||
|
||||
## 版本记录
|
||||
|
||||
| 版本 | 日期 | 说明 |
|
||||
|:---|:---|:---|
|
||||
| 1.0 | 2026-02-20 | 初版:截图填表发群 |
|
||||
| 2.0 | 2026-02-22 | 基因胶囊:Token 自动刷新、写入校验、智能纪要、跨平台、完整配置清单 |
|
||||
| 2.1 | 2026-03-04 | 月份路由:2月/3月 工作表分离(7A3Cy9 / bJR5sA),SESSION_MONTH 防串月;支持 113~115 场;小程序批量 write_miniprogram_batch;运营报表 SKILL 与当前流程同步 |
|
||||
| 2.2 | 2026-03-04 | **智能纪要上传到报表**:§3.2 十步清单(txt→JSON→HTML→PNG→feishu_write_minutes_to_sheet);与智能纪要 Skill 联动;3 月用 --party-image --sheet-id bJR5sA --date-col |
|
||||
| 2.3 | 2026-03-04 | **会议纪要 + 运营报表 + 发群一站式**:文首新增「一站式完整流程」四步(①填数据发群 ②生成纪要图 ③填图片到报表 ④纪要图发群);飞书群统一:数据推送与纪要图发群同 Webhook,纪要图发群用智能纪要 `send_to_feishu.py --image`;§3.2 增加「发群」步骤与说明 |
|
||||
| 3.0 | 2026-03-04 | **完整流程提取 + 基因胶囊**:新增「零、完整流程提取」:流程图、前置条件、逐步命令表、一键命令块、新场次清单、故障排查;派对录屏链接写入(E29:E29 范围);§十一 基因胶囊打包入口与 pack 命令 |
|
||||
131
.cursor/skills/karuo-party/skills/飞书视频文字下载_SKILL.md
Normal file
131
.cursor/skills/karuo-party/skills/飞书视频文字下载_SKILL.md
Normal file
@@ -0,0 +1,131 @@
|
||||
---
|
||||
name: 飞书视频和文字下载
|
||||
description: 飞书妙记单条/批量下载视频(mp4)与文字(txt),纯 API+Cookie,不打开浏览器。含 Cookie 获取链、默认输出目录、查找最早长视频。
|
||||
triggers: 飞书视频下载、飞书文字下载、妙记下载视频、妙记导出文字、飞书妙记下载、下载飞书视频、下载飞书文字、飞书视频和文字下载
|
||||
owner: 水桥
|
||||
group: 水
|
||||
version: "1.0"
|
||||
updated: "2026-03-12"
|
||||
parent_skill: 智能纪要
|
||||
---
|
||||
|
||||
# 飞书视频和文字下载
|
||||
|
||||
> **基因能力**:从飞书妙记链接或 object_token,命令行下载**视频(mp4)**与**文字(txt)**,无需打开浏览器。
|
||||
> 归属:水桥 · 智能纪要子能力,可独立打包为基因胶囊复用。
|
||||
|
||||
---
|
||||
|
||||
## 一、默认输出目录
|
||||
|
||||
| 类型 | 默认目录 |
|
||||
|:---|:---|
|
||||
| **文字(txt)** | `/Users/karuo/Documents/聊天记录/soul` |
|
||||
| **视频(mp4)** | `/Users/karuo/Movies/soul视频/原视频` |
|
||||
|
||||
脚本未指定 `-o`/`--output` 时使用上表;解包到其他环境时可修改为本地路径。
|
||||
|
||||
---
|
||||
|
||||
## 二、权限:Cookie 获取链(5 级)
|
||||
|
||||
妙记**文字导出**与**视频下载**均依赖 Web Cookie(Open API 的 tenant_token 无法访问妙记正文/视频)。
|
||||
|
||||
1. **cookie_minutes.txt** 第一行(脚本同目录或 `智能纪要/脚本/`)
|
||||
2. **环境变量** `FEISHU_MINUTES_COOKIE`
|
||||
3. **本机浏览器**(browser_cookie3:Safari/Chrome/Firefox/Edge)
|
||||
4. **Cursor 内置浏览器**:SQLite 明文
|
||||
`~/Library/Application Support/Cursor/Partitions/cursor-browser/Cookies`
|
||||
查询 `host_key LIKE '%feishu%' OR host_key LIKE '%cunkebao%'`
|
||||
5. **手动兜底**:浏览器 F12 → 飞书妙记 list 请求 → 复制 Cookie 到 cookie_minutes.txt
|
||||
|
||||
---
|
||||
|
||||
## 三、命令行用法
|
||||
|
||||
### 3.1 脚本根路径(本基因默认)
|
||||
|
||||
```text
|
||||
SCRIPT_DIR="/Users/karuo/Documents/个人/卡若AI/02_卡人(水)/水桥_平台对接/智能纪要/脚本"
|
||||
```
|
||||
|
||||
解包到其他项目时,将上述路径改为本地「智能纪要/脚本」所在路径。
|
||||
|
||||
### 3.2 下载视频(单条)
|
||||
|
||||
```bash
|
||||
# 链接或 object_token 均可
|
||||
python3 "$SCRIPT_DIR/feishu_minutes_download_video.py" "https://cunkebao.feishu.cn/minutes/obcnc53697q9mj6h1go6v25e"
|
||||
python3 "$SCRIPT_DIR/feishu_minutes_download_video.py" obcnc53697q9mj6h1go6v25e -o ~/Downloads/
|
||||
```
|
||||
|
||||
- 输出:默认 `原视频/` 下,文件名含标题与日期。
|
||||
- 依赖:`requests`;Cookie 见第二节。
|
||||
|
||||
### 3.3 导出文字(单条)
|
||||
|
||||
```bash
|
||||
# 导出为 txt(同上,需 Cookie)
|
||||
python3 "$SCRIPT_DIR/feishu_minutes_export_github.py" "https://cunkebao.feishu.cn/minutes/obcnc53697q9mj6h1go6v25e" -o "/Users/karuo/Documents/聊天记录/soul"
|
||||
```
|
||||
|
||||
- 输出:默认 `聊天记录/soul` 下 txt 文件。
|
||||
|
||||
### 3.4 批量文字(按场次范围)
|
||||
|
||||
```bash
|
||||
python3 "$SCRIPT_DIR/download_soul_minutes_101_to_103.py" --from 90 --to 102
|
||||
```
|
||||
|
||||
### 3.5 查找「最早且时长≥1小时且有画面」的妙记
|
||||
|
||||
```bash
|
||||
python3 "$SCRIPT_DIR/find_oldest_long_video_minute.py"
|
||||
python3 "$SCRIPT_DIR/find_oldest_long_video_minute.py" --max-status 200
|
||||
python3 "$SCRIPT_DIR/find_oldest_long_video_minute.py" --list-only
|
||||
```
|
||||
|
||||
- 使用 list API 的 `duration`(毫秒)筛 ≥1 小时,再按 create_time 从早到晚用 status API 筛有 `video_download_url`,输出最早一条的 object_token、标题、日期、时长。
|
||||
|
||||
---
|
||||
|
||||
## 四、核心 API(供二次开发)
|
||||
|
||||
| 能力 | 方法 | 说明 |
|
||||
|:---|:---|:---|
|
||||
| **列表** | `GET /minutes/api/space/list?size=50&space_name=1&last_time={ts}` | 分页用 `last_time` 为上一页最后一条的 create_time |
|
||||
| **文字** | `POST /minutes/api/export` | params: object_token, format=2, add_speaker=true;Header: Cookie + Referer + bv-csrf-token |
|
||||
| **视频** | `GET /minutes/api/status?object_token=xxx` | 返回 `data.video_info.video_download_url`,再 GET 该 URL 流式下载 |
|
||||
|
||||
- 域名:`cunkebao.feishu.cn` 或 `meetings.feishu.cn`(同一套 Cookie)。
|
||||
- list 条目含 `duration`(毫秒)、`create_time`、`topic`、`object_token`。
|
||||
|
||||
---
|
||||
|
||||
## 五、脚本清单(依赖父目录 智能纪要/脚本)
|
||||
|
||||
| 脚本 | 功能 |
|
||||
|:---|:---|
|
||||
| `feishu_minutes_download_video.py` | 单条妙记视频下载(status → mp4) |
|
||||
| `feishu_minutes_export_github.py` | 单条妙记文字导出(export → txt) |
|
||||
| `feishu_auth_helper.py` | tenant_token / Cookie 测试、refresh-cookie |
|
||||
| `cursor_cookie_util.py` | 从 Cursor 浏览器提取 Cookie(feishu/github) |
|
||||
| `download_soul_minutes_101_to_103.py` | 批量场次文字(--from/--to) |
|
||||
| `find_oldest_long_video_minute.py` | 查找最早、时长≥1h、有视频的妙记 |
|
||||
|
||||
---
|
||||
|
||||
## 六、解包后使用(继承本基因)
|
||||
|
||||
1. 将本基因 **unpack** 到目标项目的 `智能纪要/飞书视频文字下载/` 或任意目录。
|
||||
2. 确保目标环境存在「智能纪要/脚本」或等价脚本目录,并安装 `requests`。
|
||||
3. 把本 SKILL 中 `SCRIPT_DIR` 改为目标环境中的脚本路径。
|
||||
4. 配置 Cookie:cookie_minutes.txt 或 FEISHU_MINUTES_COOKIE 或 Cursor Cookie 提取。
|
||||
|
||||
---
|
||||
|
||||
## 七、相关文档
|
||||
|
||||
- 父技能:`02_卡人(水)/水桥_平台对接/智能纪要/SKILL.md`
|
||||
- 权限与排查:`智能纪要/参考资料/飞书妙记下载-权限与排查说明.md`
|
||||
- 账号与 API 索引:`运营中枢/工作台/00_账号与API索引.md`
|
||||
@@ -79,8 +79,6 @@ description: Soul 创业派对小程序开发规范。在 miniprogram/ 下编辑
|
||||
## 8. 平台合规与能力检测(2025 起)
|
||||
|
||||
- **隐私按需授权**:涉及用户信息的接口(登录、手机号、位置等)必须在用户**实际触发功能时**再请求授权,禁止在 `app.onLaunch` 中集中请求。需配置《小程序用户隐私保护指引》,使用 `<button open-type="agreePrivacyAuthorization">` 获取同意。
|
||||
- **getPhoneNumber 必须耦合**:`open-type="getPhoneNumber|agreePrivacyAuthorization"`(基础库 2.32.3+),否则无法弹窗获取手机号。同时需在 app.js 的 `onNeedPrivacyAuthorization` 中将该页面加入支持列表,并提供 `showPrivacyModal` + 同意按钮,否则会 resolve(disagree) 导致失败。
|
||||
- **登录弹窗**:使用公用组件 `components/login-modal`,read/my/gift-pay 等页面引入,避免重复实现。
|
||||
- **能力检测**:使用新 API 前用 `wx.canIUse('api.xxx')` 检测,低版本做降级。
|
||||
- **Skyline(可选)**:性能敏感页面可在 `page.json` 中配置 `"renderer": "skyline"`,仍使用 WXML/WXSS。
|
||||
|
||||
@@ -106,24 +104,7 @@ description: Soul 创业派对小程序开发规范。在 miniprogram/ 下编辑
|
||||
|
||||
---
|
||||
|
||||
## 11. 原生按钮覆盖定位(避免样式干扰)
|
||||
|
||||
- **场景**:在头像、图片等区域需触发 `open-type="chooseAvatar"` 等原生能力时,**禁止用 button 包裹**目标元素,否则会受原生样式影响(灰色矩形、边框等)。
|
||||
- **正确做法**:用 **button 绝对定位覆盖** 在目标区域上方,与展示元素为同级关系。
|
||||
- **结构示例**:
|
||||
```html
|
||||
<view class="avatar-wrap">
|
||||
<view class="avatar-inner">...</view>
|
||||
<view class="vip-badge">VIP</view>
|
||||
<button class="avatar-overlay-btn" open-type="chooseAvatar" bindchooseavatar="onChooseAvatar"></button>
|
||||
</view>
|
||||
```
|
||||
- **样式**:`.avatar-wrap { position: relative; }`;`.avatar-overlay-btn { position: absolute; top: 0; left: 0; width/height 与目标一致; background: transparent; border: none; }`;`::after { border: none; }`。
|
||||
- **口诀**:同级覆盖,绝对定位,透明按钮。
|
||||
|
||||
---
|
||||
|
||||
## 12. 何时使用本 Skill
|
||||
## 11. 何时使用本 Skill
|
||||
|
||||
- 在 **miniprogram/** 下新增或修改页面、组件、utils 时。
|
||||
- 在小程序内新增或修改任何网络请求路径时(必须保持 `/api/miniprogram/...`)。
|
||||
@@ -133,6 +114,5 @@ description: Soul 创业派对小程序开发规范。在 miniprogram/ 下编辑
|
||||
- 做个人中心、设置页布局时(遵循 §7,卡片区边距 16rpx)。
|
||||
- 做阅读、文章等需长按复制的文本时(遵循 §9,text 加 user-select)。
|
||||
- 做编辑资料页分享名片时(遵循 §10)。
|
||||
- 做头像上传、chooseAvatar 等需 button 触发的原生能力时(遵循 §11,用绝对定位覆盖,禁止 button 包裹)。
|
||||
|
||||
遵循本 Skill 可保证小程序只与 soul-api 的 miniprogram 路由组对接,避免与管理端或 next-project 接口混用。
|
||||
|
||||
@@ -39,8 +39,9 @@ cd .cursor/scripts/db-exec && npm install
|
||||
|
||||
### 3.2 执行单条 SQL
|
||||
|
||||
在**本仓库根目录**下执行(与 `miniprogram/`、`soul-api/` 同级):
|
||||
|
||||
```bash
|
||||
cd e:\Gongsi\Mycontent
|
||||
node .cursor/scripts/db-exec/run.js "SELECT 1"
|
||||
node .cursor/scripts/db-exec/run.js "DESCRIBE orders"
|
||||
node .cursor/scripts/db-exec/run.js "ALTER TABLE users ADD COLUMN new_field VARCHAR(64) DEFAULT ''"
|
||||
|
||||
@@ -192,10 +192,10 @@ description: 新版快速分析 Skill。甲方/第三方 AI 写的新版本,
|
||||
2. 排除:技术债、规则不清、与稳定版冲突的部分
|
||||
3. 按**最小功能**拆分,保证每个任务迁移后能完整运行
|
||||
4. 排期顺序:**界面修改优先** → 大逻辑排后;P0(逻辑不通)→ P1(功能缺失)→ P2(优化)
|
||||
5. 写入需求清单(当日需求文件),形成迁移任务清单
|
||||
5. 写入需求汇总,形成迁移任务清单
|
||||
|
||||
**产出**:
|
||||
- `开发文档/1、需求/YYYY-MM-DD-需求.md` 追加需求(当日文件,以日期最新为主;同步后更新 `1、需求/索引.md`)
|
||||
- `开发文档/1、需求/需求汇总.md` 追加需求
|
||||
- `开发文档/新版迁移-开发方案与清单.md` 或等价迁移清单
|
||||
|
||||
---
|
||||
@@ -259,7 +259,7 @@ description: 新版快速分析 Skill。甲方/第三方 AI 写的新版本,
|
||||
4. **逻辑分层**:每个功能过三层(界面/接口/数据)
|
||||
5. **体验评估**:补充空态、错误态、边界处理
|
||||
6. **接口规范与冲突**:产出接口规范与冲突清单
|
||||
7. **抽取需求**:写入需求清单(当日需求文件),形成迁移任务清单
|
||||
7. **抽取需求**:写入需求汇总,形成迁移任务清单
|
||||
8. **需求评审(迁移前必做)**:列出功能点 + 样式变更,逐一确认,产出评审清单
|
||||
9. **回复用户**:给出分析摘要 + 文档路径 + 建议执行顺序;**迁移须在需求评审通过后开始**
|
||||
|
||||
@@ -273,7 +273,7 @@ description: 新版快速分析 Skill。甲方/第三方 AI 写的新版本,
|
||||
| 接口规范与冲突 | `开发文档/新版迁移-接口规范与冲突清单.md` |
|
||||
| 迁移方案/清单 | `开发文档/新版迁移-开发方案与清单.md` 或 `新版功能迁移到稳定版方案.md` |
|
||||
| **需求评审清单** | `开发文档/新版迁移-需求评审清单.md`(功能点 + 样式变更,含确认状态) |
|
||||
| 需求清单 | `开发文档/1、需求/YYYY-MM-DD-需求.md`(以日期最新为主) |
|
||||
| 需求汇总 | `开发文档/1、需求/需求汇总.md` |
|
||||
|
||||
若已有同名文档,在其基础上**追加或更新**,不重复创建。
|
||||
|
||||
|
||||
@@ -42,7 +42,7 @@ description: Soul 创业派对产品经理需求与验收。需求分析、需
|
||||
|
||||
### 0.3 功能规划与协调变更
|
||||
|
||||
1. **输出需求分析**:写入 `临时需求池/YYYY-MM-DD-需求简述.md` 或追加到 `开发文档/1、需求/YYYY-MM-DD-需求.md` 需求清单(以日期最新为主,同步后更新 `1、需求/索引.md`)
|
||||
1. **输出需求分析**:写入 `临时需求池/YYYY-MM-DD-需求简述.md` 或追加到 `需求汇总.md` 需求清单
|
||||
2. **三端任务拆分**:按上表列出「小程序任务」「管理端任务」「后端任务」
|
||||
3. **协调变更**:若需更新《以界面定需求》,同步更新界面清单与业务逻辑
|
||||
4. **指派**:明确各任务对应角色(小程序开发工程师、管理端开发工程师、后端工程师),并给出执行顺序建议(通常:后端 → 小程序;管理端视依赖可并行或后置)
|
||||
@@ -73,7 +73,7 @@ description: Soul 创业派对产品经理需求与验收。需求分析、需
|
||||
| 职责 | 说明 | 产出 |
|
||||
|------|------|------|
|
||||
| 需求分析 | 业务需求拆解、优先级、技术可行性 | 需求分析文档、临时需求池 |
|
||||
| 需求文档 | 需求清单、业务规则、验收标准 | 1、需求/YYYY-MM-DD-需求.md(以最新为主)、运营与变更.md |
|
||||
| 需求文档 | 需求清单、业务规则、验收标准 | 需求汇总.md、运营与变更.md |
|
||||
| 验收 | 功能验收、回归检查 | 验收清单、项目推进表 |
|
||||
| 协调 | 与开发沟通、排期、变更 | 运营与变更、项目落地推进表 |
|
||||
|
||||
@@ -83,7 +83,7 @@ description: Soul 创业派对产品经理需求与验收。需求分析、需
|
||||
|
||||
| 文档 | 说明 |
|
||||
|------|------|
|
||||
| `开发文档/1、需求/` | 需求清单(按日期命名,以最新为主)、业务需求;见 `1、需求/索引.md` |
|
||||
| `开发文档/1、需求/需求汇总.md` | 需求清单、业务需求 |
|
||||
| `临时需求池/` | 需求分析、技术分析 |
|
||||
| `开发文档/10、项目管理/项目落地推进表.md` | 里程碑、永平落地 |
|
||||
| `开发文档/10、项目管理/运营与变更.md` | 近期讨论、变更记录 |
|
||||
|
||||
@@ -25,7 +25,7 @@ description: Soul 创业派对开发团队多角色会议。语义化触发:
|
||||
|
||||
```
|
||||
第零步(可选):回顾历史
|
||||
→ 使用 Read 工具读取 `e:\Gongsi\Mycontent\.cursor\meeting\README.md` 的索引表
|
||||
→ 使用 Read 工具读取 `.cursor\meeting\README.md` 的索引表
|
||||
→ 若议题与近期会议相关,Read 最近 1~2 份纪要(如 YYYY-MM-DD_主题.md)
|
||||
→ 便于延续上次讨论、避免重复决议
|
||||
|
||||
@@ -93,10 +93,10 @@ description: Soul 创业派对开发团队多角色会议。语义化触发:
|
||||
### 4.1 生成会议纪要文件
|
||||
|
||||
1. **确定文件名**:`YYYY-MM-DD_议题关键词.md`(日期为今天)
|
||||
2. **创建文件**:`e:\Gongsi\Mycontent\.cursor\meeting\YYYY-MM-DD_议题关键词.md`
|
||||
3. **内容**:按 `e:\Gongsi\Mycontent\.cursor\meeting\_模板.md` 填写完整纪要
|
||||
2. **创建文件**:`.cursor\meeting\YYYY-MM-DD_议题关键词.md`
|
||||
3. **内容**:按 `.cursor\meeting\_模板.md` 填写完整纪要
|
||||
4. **问题与作答区**(必须):将「待确认项」「待澄清项」列出为问题表,责任角色标明谁负责回答,作答列留空供后续填写
|
||||
5. **更新索引**:在 `e:\Gongsi\Mycontent\.cursor\meeting\README.md` 的索引表中追加一行
|
||||
5. **更新索引**:在 `.cursor\meeting\README.md` 的索引表中追加一行
|
||||
|
||||
### 4.2 各角色经验入库(按日期文件)
|
||||
|
||||
@@ -115,7 +115,7 @@ description: Soul 创业派对开发团队多角色会议。语义化触发:
|
||||
```
|
||||
确定今天日期 YYYY-MM-DD
|
||||
↓
|
||||
检查 e:\Gongsi\Mycontent\.cursor\agent\{角色目录}\evolution\YYYY-MM-DD.md 是否存在
|
||||
检查 `.cursor/agent/{角色目录}/evolution/YYYY-MM-DD.md` 是否存在
|
||||
不存在 → 创建,写入文件头(# {角色名} 经验记录 - YYYY-MM-DD)
|
||||
↓
|
||||
从本次会议讨论中,提炼该角色的经验条目追加进去
|
||||
@@ -123,12 +123,12 @@ description: Soul 创业派对开发团队多角色会议。语义化触发:
|
||||
更新 agent/开发助理/项目索引/{索引名}.md(开发进度表追加一行,写日期)
|
||||
```
|
||||
|
||||
若有跨角色共享的经验(架构决策、业务规则、路由约定),**必须**同时写入 `e:\Gongsi\Mycontent\.cursor\agent\团队\evolution\YYYY-MM-DD.md`,并在对应角色文件中注明「详见 agent/团队/evolution/」。
|
||||
若有跨角色共享的经验(架构决策、业务规则、路由约定),**必须**同时写入 `.cursor/agent/团队/evolution/YYYY-MM-DD.md`,并在对应角色文件中注明「详见 agent/团队/evolution/」。
|
||||
|
||||
### 4.3 Skill 升级(重要决议时)
|
||||
|
||||
若本次会议产生了影响开发规范的决议:
|
||||
- 更新对应 `e:\Gongsi\Mycontent\.cursor\skills\SKILL-xxx.md`
|
||||
- 更新对应 `.cursor\skills\SKILL-xxx.md`
|
||||
- 在会议纪要「各角色经验」节标注「已升级 SKILL-xxx.md」
|
||||
|
||||
---
|
||||
@@ -137,11 +137,11 @@ description: Soul 创业派对开发团队多角色会议。语义化触发:
|
||||
|
||||
| 输出物 | 位置 | 负责人 |
|
||||
|--------|------|--------|
|
||||
| 会议纪要 | `e:\Gongsi\Mycontent\.cursor\meeting\YYYY-MM-DD_主题.md` | 助理橙子 |
|
||||
| 各角色经验 | `e:\Gongsi\Mycontent\.cursor\agent\{角色}\evolution\YYYY-MM-DD.md` | 助理橙子 |
|
||||
| 会议纪要 | `.cursor\meeting\YYYY-MM-DD_主题.md` | 助理橙子 |
|
||||
| 各角色经验 | `.cursor/agent/{角色}/evolution/YYYY-MM-DD.md` | 助理橙子 |
|
||||
| 项目索引更新 | agent/开发助理/项目索引/{角色}.md 的开发进度表 | 助理橙子 |
|
||||
| Skill 升级(按需) | `.cursor/skills/{skill}/SKILL.md` | 助理橙子 |
|
||||
| 会议记录索引更新 | `e:\Gongsi\Mycontent\.cursor\meeting\README.md` | 助理橙子 |
|
||||
| 会议记录索引更新 | `.cursor\meeting\README.md` | 助理橙子 |
|
||||
|
||||
---
|
||||
|
||||
|
||||
9
.gitignore
vendored
9
.gitignore
vendored
@@ -37,3 +37,12 @@ soul-api/soul-api-new
|
||||
|
||||
# 备份文件
|
||||
*.backup
|
||||
|
||||
# 本机运营凭证(karuo-party;保留 credentials/README.md)
|
||||
.cursor/skills/karuo-party/credentials/cookies/
|
||||
.cursor/skills/karuo-party/credentials/.feishu_tokens.json
|
||||
.cursor/skills/karuo-party/credentials/*.json
|
||||
!.cursor/skills/karuo-party/credentials/README.md
|
||||
|
||||
# Cursor 索引减负:db-exec 依赖(仓库根已有 node_modules/ 规则,此处显式强调子路径)
|
||||
.cursor/scripts/db-exec/node_modules/
|
||||
|
||||
Reference in New Issue
Block a user