{"skill":{"slug":"joke-api","displayName":"Joke Api","summary":"Access diverse jokes by category, language, and type with filters for safe content using the free JokeAPI without requiring registration or an API key.","description":"# JokeAPI Skill\n\n获取各种类型的幽默笑话，支持分类、语言、格式过滤。\n\n## 概述\n\n使用 JokeAPI 免费获取笑话，无需注册或 API 密钥。支持多种分类、语言和响应格式。\n\n## 基本用法\n\n### 获取随机笑话\n\n```bash\njoke random\n```\n\n### 获取指定分类的笑话\n\n```bash\njoke random --category Programming\njoke random --category Misc,Pun\n```\n\n### 获取特定类型的笑话\n\n```bash\njoke random --type single    # 单句笑话\njoke random --type twopart   # 双部分笑话 (setup + delivery)\n```\n\n### 过滤不当内容\n\n```bash\njoke random --safe-mode              # 仅获取安全内容\njoke random --blacklist nsfw,explicit  # 过滤特定类型内容\n```\n\n### 指定语言\n\n```bash\njoke random --lang en    # 英语笑话\njoke random --lang de    # 德语笑话\n```\n\n### 获取多个笑话\n\n```bash\njoke random --amount 5\n```\n\n### 搜索包含特定关键词的笑话\n\n```bash\njoke random --contains \"programmer\"\n```\n\n## API 端点\n\n### 主要端点\n\n- **基础 URL**: `https://v2.jokeapi.dev`\n- **获取笑话**: `GET /joke/{categories}`\n- **获取信息**: `GET /info`\n- **获取分类**: `GET /categories`\n- **获取语言**: `GET /languages`\n\n### 可用分类\n\n- `Any` - 随机分类\n- `Misc` - 杂项\n- `Programming` - 编程\n- `Dark` - 黑暗幽默\n- `Pun` - 双关语\n- `Spooky` - 恐怖\n- `Christmas` - 圣诞\n\n### 过滤标志 (blacklistFlags)\n\n- `nsfw` - 不适宜工作场所\n- `religious` - 宗教\n- `political` - 政治\n- `racist` - 种族主义\n- `sexist` - 性别歧视\n- `explicit` - 露骨内容\n\n### 响应格式\n\n- `json` (默认)\n- `xml`\n- `yaml`\n- `txt` (纯文本)\n\n## 示例代码\n\n### JavaScript/Node.js\n\n```javascript\nconst baseURL = \"https://v2.jokeapi.dev\";\nconst categories = [\"Programming\", \"Misc\"];\nconst params = [\n  \"blacklistFlags=nsfw,religious,racist\",\n  \"type=single\"\n];\n\nfetch(`${baseURL}/joke/${categories.join(\",\")}?${params.join(\"&\")}`)\n  .then(res => res.json())\n  .then(joke => {\n    if(joke.type == \"single\") {\n      console.log(joke.joke);\n    } else {\n      console.log(joke.setup);\n      setTimeout(() => {\n        console.log(joke.delivery);\n      }, 3000);\n    }\n  });\n```\n\n### Python\n\n```python\nimport requests\n\nurl = \"https://v2.jokeapi.dev/joke/Programming,Misc\"\nparams = {\n    \"blacklistFlags\": \"nsfw,religious,racist\",\n    \"type\": \"single\",\n    \"format\": \"json\"\n}\n\nresponse = requests.get(url, params=params)\njoke = response.json()\n\nif joke[\"type\"] == \"single\":\n    print(joke[\"joke\"])\nelse:\n    print(joke[\"setup\"])\n    # 延迟后显示 delivery\n    print(joke[\"delivery\"])\n```\n\n### Bash\n\n```bash\ncurl -s \"https://v2.jokeapi.dev/joke/Programming?format=txt&type=single&blacklistFlags=nsfw,religious,racist\"\n```\n\n## 速率限制\n\n- 每分钟最多 120 次请求\n- 超出限制会返回 HTTP 429 错误\n- 响应头包含速率限制信息：\n  - `Retry-After` - 多少秒后重置\n  - `RateLimit-Limit` - 每分钟最大请求数\n  - `RateLimit-Remaining` - 剩余请求数\n\n## 错误处理\n\nAPI 返回统一格式的错误响应：\n\n```json\n{\n  \"error\": true,\n  \"internalError\": false,\n  \"code\": 106,\n  \"message\": \"No matching joke found\",\n  \"causedBy\": [\"No jokes were found that match your provided filter(s)\"],\n  \"additionalInfo\": \"The specified category is invalid...\",\n  \"timestamp\": 1579170794412\n}\n```\n\n## HTTP 状态码\n\n- `200` - 成功\n- `201` - 提交成功\n- `400` - 请求格式错误\n- `403` - 被黑名单封锁\n- `404` - URL 不存在\n- `429` - 请求过多\n- `500` - 服务器内部错误\n\n## 注意事项\n\n⚠️ JokeAPI 包含多种类型的笑话，有些可能被视为冒犯性内容。建议：\n- 启用 `safe-mode` 参数\n- 使用 `blacklistFlags` 过滤不当内容\n- 根据使用场景选择合适的分类\n\n## 相关链接\n\n- [官方文档](https://jokeapi.dev/)\n- [GitHub 仓库](https://github.com/Sv443-Network/JokeAPI)\n- [状态页面](https://status.sv443.net/)\n- [Discord 服务器](https://sv443.net/discord)\n","tags":{"latest":"1.0.1"},"stats":{"comments":0,"downloads":643,"installsAllTime":24,"installsCurrent":4,"stars":0,"versions":2},"createdAt":1773429931940,"updatedAt":1778491890041},"latestVersion":{"version":"1.0.1","createdAt":1773669585682,"changelog":"- Initial metadata file (_meta.json) added for the skill.\n- No changes to functionality or documentation.","license":"MIT-0"},"metadata":null,"owner":{"handle":"djttt","userId":"s1737v04f3pzcc0b071gjmv0e1842m36","displayName":"Djttt","image":"https://avatars.githubusercontent.com/u/77910823?v=4"},"moderation":null}