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で、AIスキル全体5,078件中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 原文

作者が公開した元のファイルをテキストのまま表示しています。AlphaMoat による編集や審査はしていません。リンクはクリックできません。コマンドは内容を確認してから実行してください。取得日 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ビジネス運営

Salesforce CRM API integration with managed OAuth. Install only if you need Salesforce CRM administration. Connect with the narrowest Salesforce permissions available, prefer sandbox orgs for destructive or batch work, verify the intended connection ID before each request, etc.

↓ 2.5万★ 8byungkyu

データ月:2026-09 · ダウンロード数、スター数、インストール数は公開スキルレジストリ(ClawHub、SkillHub)から月単位で集計しています。詳しくはデータの方法論をご覧ください。