kailian

tapd-api

商業營運v1.0.3
作者:kailian更新於 2026-05-11共 4 個版本 · 最新版本釋出於 2026-03-06@clawhub_kailian/tapd-api
專案管理

據 AlphaMoat 統計,截至 2026-09,tapd-api 累計下載 2,085 次、獲 1 個星標,在全部 5,078 個 AI 技能中排名第 4,370 位,在「商業營運」分類(297 個)中排名第 241 位。

累計安裝
283
累計下載
2085
星標
1
全站排名
#4,370
全站前 87% · 「商業營運」前 82%
平台累計安裝累計下載星標評論
ClawHub ↗2810241-
SkillHub ↗28320851—

各平台的計數口徑不同,統計時間不一致。

這個技能是做什麼的

讀取 tapd.json 的 OAuth 認證資料與工作空間設定,查詢需求、任務、缺陷及迭代。Shell 工具只讀且每次換取 token;Python 用戶端支援寫入並快取重新整理 token。應用需獲目標專案授權,工作空間需有效;未授權可能回傳 403,token 過期可能回傳 401。API 有頻率限制,設定檔不得提交到 Git。

資料釋出於 2026-10-26

可以用來做什麼

  • 查詢專案需求與缺陷

什麼時候用

  • 已有 TAPD 應用權限和工作空間設定時

示例提示詞

以下是根據技能文件生成的示例,不代表實際執行結果。

查詢目標工作空間的高優先順序需求

月度資料趨勢

累計下載2085
410131022092026-03 · 累計下載 5342026-05 · 累計下載 8512026-06 · 累計下載 9312026-07 · 累計下載 11142026-08 · 累計下載 12502026-09 · 累計下載 208526-0326-09
星標1
0122026-03 · 星標 12026-05 · 星標 12026-06 · 星標 12026-07 · 星標 12026-08 · 星標 12026-09 · 星標 126-0326-09

2026-09 起統計方法調整:同名技能按作者分別統計,並覆蓋全部技能。圖中虛線為調整前的月份,與之後的資料不直接比較,也不計算跨越調整的增長。

月份累計下載環比星標
2026-092085—1
2026-081250+12.2%1
2026-071114+19.7%1
2026-06931+9.4%1
2026-05851—1
2026-03534—1

SKILL.md 原文

以下是作者釋出的原始檔案,按純文字顯示,本站未做修改或稽核;其中的連結不可點選,命令請核實後再執行。抓取於 2026-10-23。

12 KB · ClawHub v1.0.3
---
name: tapd-api
description: TAPD API 完整集成。实现 18 个模块、70+ API 方法,支持 OAuth 和 Basic Auth 认证。涵盖需求、任务、缺陷、迭代、测试、Wiki、工时等所有 TAPD 功能。
metadata:
  openclaw:
    emoji: "📋"
    requires:
      bins: ["python3"]
  version: "2.1.0"
  author: "OpenClaw Community"
展開全部(共 449 行)
  license: "MIT"
  tags: ["tapd", "api", "project-management", "sdk"]
---

# TAPD API Skill

完整的 TAPD 开放平台集成,实现所有 TAPD API 模块。基于 [TAPD PHP SDK](https://github.com/ouronghuang/tapd) 用 Python 重新实现。

## 📋 功能特性

- ✅ 从 `tapd.json` 读取 OAuth 配置
- ✅ 自动换取和刷新 access_token
- ✅ 支持多工作空间切换
- ✅ 完整的 API 封装(18 个模块,70+ 方法)
- ✅ 命令行工具 + Python SDK
- ✅ 详细的使用文档和示例

## 🔧 配置

### 配置文件 (tapd.json)

所有配置存储在 `tapd.json` 文件中,支持多工作空间:

```json
{
  "oauth": {
    "clientId": "your-client-id",
    "clientSecret": "your-client-secret"
  },
  "workspaces": [
    {
      "id": "12345678",
      "name": "项目A",
      "default": true
    },
    {
      "id": "87654321",
      "name": "项目B"
    }
  ]
}
```

### 配置项说明

| 参数 | 必需 | 说明 |
|------|------|------|
| `oauth.clientId` | 是 | TAPD OAuth 应用 ID |
| `oauth.clientSecret` | 是 | TAPD OAuth 应用密钥 |
| `workspaces` | 是 | 工作空间列表 |
| `workspaces[].id` | 是 | 工作空间 ID |
| `workspaces[].name` | 否 | 工作空间名称(便于识别) |
| `workspaces[].default` | 否 | 是否为默认工作空间 |

### 获取 OAuth 凭证

1. 登录 TAPD 开放平台: https://open.tapd.cn
2. 创建开放应用
3. 获取 **应用ID** (clientId) 和 **应用密钥** (clientSecret)
4. 配置应用权限(需求、任务、缺陷等)
5. 将应用安装到目标项目

### 获取工作空间 ID

- 打开 TAPD 项目
- URL 中的数字即为 workspace_id
- 例如: `https://www.tapd.cn/12345678/` → workspace_id 是 `12345678`

## 🚀 快速开始

### 1. 创建配置文件

```bash
# 创建 tapd.json
cat > tapd.json << 'EOF'
{
  "oauth": {
    "clientId": "your-client-id",
    "clientSecret": "your-client-secret"
  },
  "workspaces": [
    {
      "id": "12345678",
      "name": "我的项目",
      "default": true
    }
  ]
}
EOF

# 设置权限
chmod 600 tapd.json
```

### 2. Python SDK 使用

```python
from scripts.tapd_client import TapdClient
import json

# 读取配置
with open('tapd.json') as f:
    config = json.load(f)

# 获取默认工作空间
default_workspace = next(
    (ws for ws in config['workspaces'] if ws.get('default')),
    config['workspaces'][0]
)

# 初始化客户端
client = TapdClient(
    auth_type='oauth',
    client_id=config['oauth']['clientId'],
    client_secret=config['oauth']['clientSecret'],
    workspace_id=default_workspace['id']
)

# 获取需求列表
stories = client.story.list(
    workspace_id=default_workspace['id'],
    limit=10
)

print(f"获取到 {len(stories)} 条需求")
```

### 3. 多工作空间切换

```python
# 遍历所有工作空间
for workspace in config['workspaces']:
    print(f"工作空间: {workspace['name']}")
    
    client = TapdClient(
        auth_type='oauth',
        client_id=config['oauth']['clientId'],
        client_secret=config['oauth']['clientSecret'],
        workspace_id=workspace['id']
    )
    
    stories = client.story.list(workspace_id=workspace['id'], limit=5)
    print(f"  需求数: {len(stories)}")
```

### 3. Shell 命令行使用

```bash
# 设置环境变量(从配置文件读取)
export TAPD_CLIENT_ID=$(cat tapd.json | jq -r '.oauth.clientId')
export TAPD_CLIENT_SECRET=$(cat tapd.json | jq -r '.oauth.clientSecret')
export TAPD_WORKSPACE_ID=$(cat tapd.json | jq -r '.workspace_id')

# 使用命令行工具
./scripts/tapd-api.sh story list --limit 10
./scripts/tapd-api.sh story count
./scripts/tapd-api.sh bug list --status new
```

# 获取需求列表
stories = client.get_stories(limit=10)
for story in stories:
    print(f"{story['id']}: {story['name']}")

# 获取需求详情
story_detail = client.get_story(story_id="1112345678001000001")

# 获取任务列表
tasks = client.get_tasks(limit=5)

# 获取缺陷列表
bugs = client.get_bugs(limit=5)
```

## 📖 API 认证流程

### OAuth 流程图

```
┌─────────────────────────────────────────────────────────┐
│ 1. 从 tapd.json 读取 clientId + clientSecret      │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│ 2. POST /tokens/request_token                          │
│    grant_type=client_credentials                       │
│    Authorization: Basic base64(clientId:clientSecret)  │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│ 3. 获取 access_token (有效期 7200 秒 / 2 小时)        │
└─────────────────────────────────────────────────────────┘
                          ↓
┌─────────────────────────────────────────────────────────┐
│ 4. 调用 TAPD API                                       │
│    Authorization: Bearer <access_token>                │
└─────────────────────────────────────────────────────────┘
```

### 认证代码示例

```bash
# Shell 方式
CLIENT_ID="your-client-id"
CLIENT_SECRET="your-client-secret"

# 获取 access_token
ACCESS_TOKEN=$(curl -s -u "$CLIENT_ID:$CLIENT_SECRET" \
  -d "grant_type=client_credentials" \
  "https://api.tapd.cn/tokens/request_token" \
  | python3 -c "import json, sys; print(json.load(sys.stdin)['data']['access_token'])")

# 调用 API
curl -H "Authorization: Bearer $ACCESS_TOKEN" \
  "https://api.tapd.cn/stories?workspace_id=12345678&limit=10"
```

## 🔌 API 端点

### 需求 (Stories)

| 方法 | 端点 | 参数 | 说明 |
|------|------|------|------|
| GET | `/stories` | workspace_id, limit, page, status | 获取需求列表 |
| GET | `/stories/count` | workspace_id, status | 获取需求数量 |
| POST | `/stories` | workspace_id, name, description | 创建需求 |
| POST | `/stories` | workspace_id, id, ... | 更新需求 |

### 任务 (Tasks)

| 方法 | 端点 | 参数 | 说明 |
|------|------|------|------|
| GET | `/tasks` | workspace_id, limit, page | 获取任务列表 |
| POST | `/tasks` | workspace_id, name, ... | 创建/更新任务 |

### 缺陷 (Bugs)

| 方法 | 端点 | 参数 | 说明 |
|------|------|------|------|
| GET | `/bugs` | workspace_id, limit, page, status | 获取缺陷列表 |
| POST | `/bugs` | workspace_id, title, ... | 创建/更新缺陷 |

### 迭代 (Iterations)

| 方法 | 端点 | 参数 | 说明 |
|------|------|------|------|
| GET | `/iterations` | workspace_id, limit, page | 获取迭代列表 |

### 其他

- `/workspaces/projects` - 获取项目列表
- `/releases` - 发布计划
- `/tcases` - 测试用例
- `/comments` - 评论

## 📝 使用示例

### 示例 1: 获取高优先级需求

```bash
# 使用命令行工具(自动过滤)
./scripts/tapd-api.sh stories 50 | python3 -c "
import json, sys
data = json.load(sys.stdin)
for item in data['data']:
    story = item['Story']
    if story.get('priority') == '4':  # High priority
        print(f\"{story['id']}: {story['name']}\")
"
```

### 示例 2: 创建需求

```python
from scripts.tapd_oauth_client import TapdOAuthClient

client = TapdOAuthClient()

new_story = client.create_story(
    name="【新功能】实现用户登录",
    description="需求描述:\n1. 支持邮箱登录\n2. 支持手机号登录",
    priority="4"  # High
)

print(f"创建成功: {new_story['id']}")
```

### 示例 3: 批量更新需求状态

```python
client = TapdOAuthClient()

# 获取所有 planning 状态的需求
stories = client.get_stories(status="planning", limit=100)

# 批量更新为进行中
for story in stories:
    client.update_story(
        story_id=story['id'],
        status="status_3"  # 进行中
    )
```

## 🛠️ 脚本说明

### `scripts/tapd-api.sh`

Shell 命令行工具,支持快速查询。

**优点**:
- 简单易用
- 无需 Python 环境
- 适合快速查询

**限制**:
- 只读操作
- 无状态管理
- 每次都需要获取新 token

### `scripts/tapd_oauth_client.py`

Python 客户端库,支持完整功能。

**优点**:
- 完整 CRUD 支持
- Token 缓存和自动刷新
- 面向对象设计
- 错误处理完善

**推荐用法**:
- 复杂业务逻辑
- 批量操作
- 集成到其他 Python 项目

## 🔐 安全注意事项

### ⚠️ 敏感信息保护

1. **不要提交 tapd.json 到 Git**
   ```bash
   # .gitignore
   tapd.json
   tapd-*.json
   ```

2. **设置文件权限**
   ```bash
   chmod 600 tapd.json
   ```

3. **使用环境变量(可选)**
   ```bash
   export TAPD_CLIENT_ID="your-id"
   export TAPD_CLIENT_SECRET="your-secret"
   export TAPD_WORKSPACE_ID="12345678"
   ```

4. **定期更换密钥**
   - 定期在 TAPD 开放平台重置应用密钥
   - 更新 tapd.json

### 🔒 权限控制

- 只授予必要的应用权限
- 使用安全 IP 白名单(在 TAPD 开放平台设置)
- 监控 API 调用日志

## 📚 参考文档

- [TAPD 开放平台文档](https://open.tapd.cn/document/api-doc/)
- [OAuth 认证流程](https://open.tapd.cn/document/api-doc/API文档/授权凭证/项目态.html)
- [API 使用必读](https://open.tapd.cn/document/api-doc/API文档/使用必读.html)
- [完整 API 列表](https://open.tapd.cn/document/api-doc/API文档/)

## 🐛 故障排除

### 问题 1: 403 Forbidden

**原因**: OAuth 应用未被授权访问项目

**解决**:
1. 在 TAPD 项目设置中安装应用
2. 确认应用权限配置正确
3. 检查安全 IP 白名单

### 问题 2: access_token 过期

**症状**: 返回 401 Unauthorized

**解决**:
- Shell 脚本:每次都会重新获取 token
- Python 客户端:自动检测过期并刷新

### 问题 3: workspace_id 无效

**原因**: 配置的 workspace_id 不存在或无权限

**解决**:
1. 检查 URL 中的 workspace_id
2. 确认 OAuth 应用已安装到该项目
3. 使用 `/workspaces/projects` API 列出可访问的项目

## 📊 性能优化

### Token 缓存

Python 客户端会缓存 access_token:

```python
# Token 缓存到 ~/.tapd_token_cache.json
# 有效期内不会重复请求
```

### 批量请求

```python
# 批量获取(推荐)
stories = client.get_stories(limit=100)

# 逐个获取(不推荐)
for id in story_ids:
    story = client.get_story(id)  # 会触发多次 API 请求
```

### 并发限制

TAPD API 有频率限制,建议:
- 使用 `limit` 参数批量获取
- 添加请求间隔(0.1-0.5 秒)
- 缓存不常变化的数据

## 🔄 更新日志

---

**作者**: OpenClaw Community  
**许可**: MIT  
**支持**: https://github.com/openclaw/skills

「商業營運」分類下的熱門技能

PollyReach商業營運

PollyReach gives every AI agent a phone number and the ability to get things done over the phone — finding contacts, making calls, and completing tasks. Just...

↓ 10.2萬★ 56PollyReach
Trello商業營運

透過 Trello REST API 管理看板、列表與卡片。

↓ 5.3萬★ 165Peter Steinberger
招標中標查詢及分析服務商業營運

全網招中標資料查詢與分析助手。當用戶涉及以下任何場景時,必須使用此SKILL:查詢招標/中標公告、搜尋標訊、查詢臨期/即將到期專案、查詢擬建專案與立項審批階段的早期商機、追蹤某個專案各階段進展與全流程時間線、商機預測、推薦潛在投標供應商、查詢企業工商登記資訊(統一社會信用程式碼/註冊資本/法定代表人/經營範圍/成立日期/登記機關/曾用名)、分析公司主營業務/歷史中標、查詢公司上下游合作客戶與供應商、分析競爭對手/競對企業、查詢Top採購單位/Top中標單位/Top中標品牌、招中標資料統計分析(按月/季/年/省份/品牌等維度)、查詢品牌型號歷史中標單價/價格趨勢、查詢當前帳戶餘額/剩餘積分/累計充值消費、市場分析/行業分析/採購尋源/渠道拓展等採購與投標相關場景。即使使用者沒有提到「知了標訊」,只要涉及招投標、採購、中標、供應商、競爭對手、企業工商資訊、帳戶餘額、剩餘積分等關鍵詞,都應使用本SKILL。

↓ 4.6萬★ 13user_98035bfb
產品經理綜合技能(PM Master)商業營運

需求分析、PRD編寫、產品需求文件、詳細設計、BRD、MRD、PRD模板、使用者故事、使用者訪談、需求挖掘、痛點分析、功能設計、KANO模型、Y模型、5W1H、優先順序排序、需求池管理、寫過需求、寫PRD、做需求分析、產品設計、產品策略、SWOT分析、波特五力、PESTLE、安索夫矩陣、商業模式畫布、價值主張、產品願景、OKR制定、Sprint規劃、回顧會、釋出說明、干係人管理、競品分析、市場調研、使用者研究、機會解決方案樹、指標看板、測試場景、頭腦風暴、假設驗證

↓ 3.4萬★ 343user_dec48685
Calendar商業營運

面向日曆管理與會議排期的技能。

↓ 2.7萬★ 9NDCCCCCC
Market Analysis CN | 市場分析服務商業營運

提供市場趨勢、競品與使用者行為分析的市場分析服務。

↓ 2.7萬★ 32Guohongbin
電商選品商業營運

電商平台爆款產品篩選分析 - 基於資料分析的智慧選品工具,支援淘寶、京東、拼多多、抖音、亞馬遜等平台

↓ 2.6萬★ 77user_c2b88a14
Salesforce商業營運

透過託管 OAuth 與 Salesforce CRM API 整合。僅在需要 Salesforce CRM 管理時才安裝。使用最小許可權連線 Salesforce,破壞性或批次操作首選沙箱組織,每次請求前驗證目標連線 ID,並撤銷未使用的連線。

↓ 2.5萬★ 8byungkyu

資料月份:2026-09 · 下載/星標/安裝數聚合自公開技能註冊庫(ClawHub、SkillHub),按月更新。口徑說明見資料方法。