@wecode-ai/weibo-openclaw-plugin 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/dist/index.d.ts +16 -0
  2. package/dist/index.d.ts.map +1 -0
  3. package/dist/index.js +62 -0
  4. package/dist/index.js.map +1 -0
  5. package/dist/src/accounts.d.ts +10 -0
  6. package/dist/src/accounts.d.ts.map +1 -0
  7. package/dist/src/accounts.js +113 -0
  8. package/dist/src/accounts.js.map +1 -0
  9. package/dist/src/bot.d.ts +26 -0
  10. package/dist/src/bot.d.ts.map +1 -0
  11. package/dist/src/bot.js +385 -0
  12. package/dist/src/bot.js.map +1 -0
  13. package/dist/src/channel.d.ts +4 -0
  14. package/dist/src/channel.d.ts.map +1 -0
  15. package/dist/src/channel.js +317 -0
  16. package/dist/src/channel.js.map +1 -0
  17. package/dist/src/client.d.ts +51 -0
  18. package/dist/src/client.d.ts.map +1 -0
  19. package/dist/src/client.js +336 -0
  20. package/dist/src/client.js.map +1 -0
  21. package/dist/src/config-schema.d.ts +86 -0
  22. package/dist/src/config-schema.d.ts.map +1 -0
  23. package/{src/config-schema.ts → dist/src/config-schema.js} +19 -24
  24. package/dist/src/config-schema.js.map +1 -0
  25. package/dist/src/fingerprint.d.ts +4 -0
  26. package/dist/src/fingerprint.d.ts.map +1 -0
  27. package/dist/src/fingerprint.js +19 -0
  28. package/dist/src/fingerprint.js.map +1 -0
  29. package/dist/src/monitor.d.ts +13 -0
  30. package/dist/src/monitor.d.ts.map +1 -0
  31. package/dist/src/monitor.js +169 -0
  32. package/dist/src/monitor.js.map +1 -0
  33. package/dist/src/outbound-stream.d.ts +32 -0
  34. package/dist/src/outbound-stream.d.ts.map +1 -0
  35. package/dist/src/outbound-stream.js +184 -0
  36. package/dist/src/outbound-stream.js.map +1 -0
  37. package/dist/src/outbound.d.ts +3 -0
  38. package/dist/src/outbound.d.ts.map +1 -0
  39. package/dist/src/outbound.js +38 -0
  40. package/dist/src/outbound.js.map +1 -0
  41. package/dist/src/plugin-sdk-compat.d.ts +21 -0
  42. package/dist/src/plugin-sdk-compat.d.ts.map +1 -0
  43. package/dist/src/plugin-sdk-compat.js +47 -0
  44. package/dist/src/plugin-sdk-compat.js.map +1 -0
  45. package/dist/src/policy.d.ts +5 -0
  46. package/dist/src/policy.d.ts.map +1 -0
  47. package/dist/src/policy.js +6 -0
  48. package/dist/src/policy.js.map +1 -0
  49. package/dist/src/runtime.d.ts +4 -0
  50. package/dist/src/runtime.d.ts.map +1 -0
  51. package/dist/src/runtime.js +11 -0
  52. package/dist/src/runtime.js.map +1 -0
  53. package/dist/src/search-schema.d.ts +6 -0
  54. package/dist/src/search-schema.d.ts.map +1 -0
  55. package/dist/src/search-schema.js +5 -0
  56. package/dist/src/search-schema.js.map +1 -0
  57. package/dist/src/send.d.ts +14 -0
  58. package/dist/src/send.d.ts.map +1 -0
  59. package/dist/src/send.js +58 -0
  60. package/dist/src/send.js.map +1 -0
  61. package/dist/src/sim-page.d.ts +51 -0
  62. package/dist/src/sim-page.d.ts.map +1 -0
  63. package/dist/src/sim-page.js +72 -0
  64. package/dist/src/sim-page.js.map +1 -0
  65. package/dist/src/sim-store.d.ts +54 -0
  66. package/dist/src/sim-store.d.ts.map +1 -0
  67. package/dist/src/sim-store.js +117 -0
  68. package/dist/src/sim-store.js.map +1 -0
  69. package/dist/src/targets.d.ts +4 -0
  70. package/dist/src/targets.d.ts.map +1 -0
  71. package/dist/src/targets.js +15 -0
  72. package/dist/src/targets.js.map +1 -0
  73. package/dist/src/token.d.ts +27 -0
  74. package/dist/src/token.d.ts.map +1 -0
  75. package/dist/src/token.js +144 -0
  76. package/dist/src/token.js.map +1 -0
  77. package/dist/src/tools-config.d.ts +21 -0
  78. package/dist/src/tools-config.d.ts.map +1 -0
  79. package/dist/src/tools-config.js +42 -0
  80. package/dist/src/tools-config.js.map +1 -0
  81. package/dist/src/types.d.ts +76 -0
  82. package/dist/src/types.d.ts.map +1 -0
  83. package/dist/src/types.js +2 -0
  84. package/dist/src/types.js.map +1 -0
  85. package/dist/src/weibo-hot-search.d.ts +44 -0
  86. package/dist/src/weibo-hot-search.d.ts.map +1 -0
  87. package/dist/src/weibo-hot-search.js +215 -0
  88. package/dist/src/weibo-hot-search.js.map +1 -0
  89. package/dist/src/weibo-search.d.ts +71 -0
  90. package/dist/src/weibo-search.d.ts.map +1 -0
  91. package/dist/src/weibo-search.js +182 -0
  92. package/dist/src/weibo-search.js.map +1 -0
  93. package/dist/src/weibo-status.d.ts +61 -0
  94. package/dist/src/weibo-status.d.ts.map +1 -0
  95. package/dist/src/weibo-status.js +194 -0
  96. package/dist/src/weibo-status.js.map +1 -0
  97. package/openclaw.plugin.json +12 -0
  98. package/package.json +4 -5
  99. package/skills/weibo-hot-search/SKILL.md +161 -0
  100. package/skills/weibo-search/SKILL.md +116 -0
  101. package/skills/weibo-status/SKILL.md +97 -0
  102. package/index.ts +0 -67
  103. package/src/accounts.ts +0 -134
  104. package/src/bot.ts +0 -486
  105. package/src/channel.ts +0 -391
  106. package/src/client.ts +0 -435
  107. package/src/fingerprint.ts +0 -25
  108. package/src/monitor.ts +0 -206
  109. package/src/outbound-stream.ts +0 -241
  110. package/src/outbound.ts +0 -49
  111. package/src/plugin-sdk-compat.ts +0 -82
  112. package/src/policy.ts +0 -10
  113. package/src/runtime.ts +0 -14
  114. package/src/search-schema.ts +0 -7
  115. package/src/send.ts +0 -80
  116. package/src/sim-page.ts +0 -140
  117. package/src/sim-store.ts +0 -186
  118. package/src/targets.ts +0 -14
  119. package/src/token.ts +0 -207
  120. package/src/tools-config.ts +0 -55
  121. package/src/types.ts +0 -95
  122. package/src/weibo-hot-search.ts +0 -345
  123. package/src/weibo-search.ts +0 -333
  124. package/src/weibo-status.ts +0 -341
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weibo-search.js","sourceRoot":"","sources":["../../src/weibo-search.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { OpenClawPluginApi } from "openclaw/plugin-sdk";
2
+ import { type Static } from "@sinclair/typebox";
3
+ export declare const WeiboStatusSchema: import("@sinclair/typebox").TObject<{
4
+ count: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TNumber>;
5
+ }>;
6
+ export type WeiboStatusParams = Static<typeof WeiboStatusSchema>;
7
+ /**
8
+ * 用户信息结构(简化版)
9
+ */
10
+ export type WeiboStatusUser = {
11
+ screen_name: string;
12
+ };
13
+ /**
14
+ * 微博状态项结构
15
+ */
16
+ export type WeiboStatusItem = {
17
+ /** 微博 ID */
18
+ id: number;
19
+ /** 微博 MID */
20
+ mid: string;
21
+ /** 微博内容 */
22
+ text: string;
23
+ /** 发布时间 */
24
+ created_at: string;
25
+ /** 是否有图片 */
26
+ has_image: boolean;
27
+ /** 图片列表(图片ID数组) */
28
+ images?: string[];
29
+ /** 图片数量 */
30
+ pic_num?: number;
31
+ /** 评论数 */
32
+ comments_count: number;
33
+ /** 转发数 */
34
+ reposts_count: number;
35
+ /** 点赞数 */
36
+ attitudes_count: number;
37
+ /** 用户信息 */
38
+ user: WeiboStatusUser;
39
+ /** 转发的原微博 */
40
+ repost?: WeiboStatusItem;
41
+ };
42
+ /**
43
+ * 用户微博 API 响应结构
44
+ */
45
+ export type WeiboStatusApiResponse = {
46
+ code: number;
47
+ message: string;
48
+ data: {
49
+ statuses: WeiboStatusItem[];
50
+ total_number: number;
51
+ };
52
+ };
53
+ export type WeiboStatusConfig = {
54
+ weiboStatusEndpoint?: string;
55
+ appId?: string;
56
+ appSecret?: string;
57
+ tokenEndpoint?: string;
58
+ enabled?: boolean;
59
+ };
60
+ export declare function registerWeiboStatusTools(api: OpenClawPluginApi): void;
61
+ //# sourceMappingURL=weibo-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weibo-status.d.ts","sourceRoot":"","sources":["../../src/weibo-status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAQ,KAAK,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAItD,eAAO,MAAM,iBAAiB;;EAQ5B,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAajE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG;IAC5B,YAAY;IACZ,EAAE,EAAE,MAAM,CAAC;IACX,aAAa;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,mBAAmB;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW;IACX,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU;IACV,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU;IACV,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU;IACV,eAAe,EAAE,MAAM,CAAC;IACxB,WAAW;IACX,IAAI,EAAE,eAAe,CAAC;IACtB,aAAa;IACb,MAAM,CAAC,EAAE,eAAe,CAAC;CAC1B,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE;QACJ,QAAQ,EAAE,eAAe,EAAE,CAAC;QAC5B,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC;CACH,CAAC;AAmMF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAeF,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,iBAAiB,QAiD9D"}
@@ -0,0 +1,194 @@
1
+ import { Type } from "@sinclair/typebox";
2
+ // ============ Schema ============
3
+ export const WeiboStatusSchema = Type.Object({
4
+ count: Type.Optional(Type.Number({
5
+ description: "每页数量,最大 100,默认 20",
6
+ minimum: 1,
7
+ maximum: 100,
8
+ })),
9
+ });
10
+ // ============ Helpers ============
11
+ function json(data) {
12
+ return {
13
+ content: [{ type: "text", text: JSON.stringify(data, null, 2) }],
14
+ details: data,
15
+ };
16
+ }
17
+ // ============ Token Management ============
18
+ // Token 过期时间:2小时(7200秒),提前60秒刷新
19
+ const TOKEN_EXPIRE_SECONDS = 7200;
20
+ const TOKEN_REFRESH_BUFFER_SECONDS = 60;
21
+ // 默认 token 端点
22
+ const DEFAULT_TOKEN_ENDPOINT = "http://open-im.api.weibo.com/open/auth/ws_token";
23
+ // 专用的 token 缓存
24
+ let weiboStatusTokenCache = null;
25
+ /**
26
+ * 获取 token
27
+ */
28
+ async function fetchWeiboStatusToken(appId, appSecret, tokenEndpoint) {
29
+ const endpoint = tokenEndpoint || DEFAULT_TOKEN_ENDPOINT;
30
+ const response = await fetch(endpoint, {
31
+ method: "POST",
32
+ headers: {
33
+ "Content-Type": "application/json",
34
+ },
35
+ body: JSON.stringify({
36
+ app_id: appId,
37
+ app_secret: appSecret,
38
+ }),
39
+ });
40
+ if (!response.ok) {
41
+ const errorText = await response.text().catch(() => "");
42
+ throw new Error(`获取 token 失败: ${response.status} ${response.statusText}${errorText ? ` - ${errorText}` : ""}`);
43
+ }
44
+ const result = (await response.json());
45
+ if (!result.data?.token) {
46
+ throw new Error("获取 token 失败: 响应中缺少 token");
47
+ }
48
+ const tokenCache = {
49
+ token: result.data.token,
50
+ acquiredAt: Date.now(),
51
+ expiresIn: result.data.expire_in || TOKEN_EXPIRE_SECONDS,
52
+ };
53
+ weiboStatusTokenCache = tokenCache;
54
+ return tokenCache;
55
+ }
56
+ /**
57
+ * 获取有效的 token
58
+ */
59
+ async function getValidWeiboStatusToken(appId, appSecret, tokenEndpoint) {
60
+ if (weiboStatusTokenCache) {
61
+ const expiresAt = weiboStatusTokenCache.acquiredAt +
62
+ weiboStatusTokenCache.expiresIn * 1000 -
63
+ TOKEN_REFRESH_BUFFER_SECONDS * 1000;
64
+ if (Date.now() < expiresAt) {
65
+ return weiboStatusTokenCache.token;
66
+ }
67
+ }
68
+ const tokenResult = await fetchWeiboStatusToken(appId, appSecret, tokenEndpoint);
69
+ return tokenResult.token;
70
+ }
71
+ // ============ Core Functions ============
72
+ const DEFAULT_WEIBO_STATUS_ENDPOINT = "http://open-im.api.weibo.com/open/weibo/user_status";
73
+ /**
74
+ * 获取用户自己发布的微博
75
+ */
76
+ async function fetchWeiboStatus(options) {
77
+ const apiEndpoint = options.endpoint || DEFAULT_WEIBO_STATUS_ENDPOINT;
78
+ const url = new URL(apiEndpoint);
79
+ url.searchParams.set("token", options.token);
80
+ if (options.count !== undefined) {
81
+ url.searchParams.set("count", String(options.count));
82
+ }
83
+ const response = await fetch(url.toString(), {
84
+ method: "GET",
85
+ headers: {
86
+ "Content-Type": "application/json",
87
+ },
88
+ });
89
+ if (!response.ok) {
90
+ const errorText = await response.text().catch(() => "");
91
+ throw new Error(`获取用户微博失败: ${response.status} ${response.statusText}${errorText ? ` - ${errorText}` : ""}`);
92
+ }
93
+ const result = (await response.json());
94
+ return result;
95
+ }
96
+ /**
97
+ * 格式化单条微博
98
+ */
99
+ function formatStatusItem(status) {
100
+ const formatted = {
101
+ id: status.id,
102
+ mid: status.mid,
103
+ text: status.text,
104
+ createdAt: status.created_at,
105
+ hasImage: status.has_image,
106
+ images: status.images,
107
+ picNum: status.pic_num,
108
+ commentsCount: status.comments_count,
109
+ repostsCount: status.reposts_count,
110
+ attitudesCount: status.attitudes_count,
111
+ user: {
112
+ screenName: status.user.screen_name,
113
+ },
114
+ };
115
+ // 添加转发微博信息
116
+ if (status.repost) {
117
+ formatted.repost = formatStatusItem(status.repost);
118
+ }
119
+ return formatted;
120
+ }
121
+ /**
122
+ * 格式化结果
123
+ */
124
+ function formatWeiboStatusResult(result) {
125
+ if (result.code !== 0) {
126
+ return {
127
+ success: false,
128
+ error: result.message || "获取用户微博失败",
129
+ };
130
+ }
131
+ const data = result.data;
132
+ if (!data.statuses || data.statuses.length === 0) {
133
+ return {
134
+ success: true,
135
+ total: 0,
136
+ statuses: [],
137
+ message: "没有找到微博内容",
138
+ };
139
+ }
140
+ return {
141
+ success: true,
142
+ total: data.total_number,
143
+ statuses: data.statuses.map(formatStatusItem),
144
+ };
145
+ }
146
+ function getWeiboStatusConfig(api) {
147
+ const weiboCfg = api.config?.channels?.weibo;
148
+ return {
149
+ weiboStatusEndpoint: weiboCfg?.weiboStatusEndpoint,
150
+ appId: weiboCfg?.appId,
151
+ appSecret: weiboCfg?.appSecret,
152
+ tokenEndpoint: weiboCfg?.tokenEndpoint,
153
+ enabled: weiboCfg?.weiboStatusEnabled !== false,
154
+ };
155
+ }
156
+ // ============ Tool Registration ============
157
+ export function registerWeiboStatusTools(api) {
158
+ const cfg = getWeiboStatusConfig(api);
159
+ if (!cfg.enabled) {
160
+ api.logger.debug?.("weibo_status: Tool disabled, skipping registration");
161
+ return;
162
+ }
163
+ if (!cfg.appId || !cfg.appSecret) {
164
+ api.logger.warn?.("weibo_status: appId or appSecret not configured, tool disabled");
165
+ return;
166
+ }
167
+ const appId = cfg.appId;
168
+ const appSecret = cfg.appSecret;
169
+ api.registerTool(() => ({
170
+ name: "weibo_status",
171
+ label: "Weibo Status",
172
+ description: "获取用户自己发布的微博列表。返回用户发布的微博内容(包含原博内容)、互动数据等信息。",
173
+ parameters: WeiboStatusSchema,
174
+ async execute(_toolCallId, params) {
175
+ const p = params;
176
+ try {
177
+ const token = await getValidWeiboStatusToken(appId, appSecret, cfg.tokenEndpoint);
178
+ const result = await fetchWeiboStatus({
179
+ token,
180
+ count: p.count,
181
+ endpoint: cfg.weiboStatusEndpoint,
182
+ });
183
+ return json(formatWeiboStatusResult(result));
184
+ }
185
+ catch (err) {
186
+ return json({
187
+ error: err instanceof Error ? err.message : String(err),
188
+ });
189
+ }
190
+ },
191
+ }), { name: "weibo_status" });
192
+ api.logger.info?.("weibo_status: Registered weibo_status tool");
193
+ }
194
+ //# sourceMappingURL=weibo-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"weibo-status.js","sourceRoot":"","sources":["../../src/weibo-status.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ {
2
+ "id": "weibo-openclaw-plugin",
3
+ "channels": [
4
+ "weibo"
5
+ ],
6
+ "skills": ["./skills"],
7
+ "configSchema": {
8
+ "type": "object",
9
+ "additionalProperties": false,
10
+ "properties": {}
11
+ }
12
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@wecode-ai/weibo-openclaw-plugin",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "type": "module",
5
5
  "description": "OpenClaw Weibo DM channel plugin",
6
6
  "scripts": {
@@ -12,10 +12,9 @@
12
12
  },
13
13
  "license": "MIT",
14
14
  "files": [
15
- "index.ts",
16
- "src/**/*.ts",
17
- "!src/**/__tests__/**",
18
- "!src/**/*.test.ts"
15
+ "dist",
16
+ "openclaw.plugin.json",
17
+ "skills"
19
18
  ],
20
19
  "openclaw": {
21
20
  "extensions": [
@@ -0,0 +1,161 @@
1
+ ---
2
+ name: weibo-hot-search
3
+ description: |
4
+ 微博热搜榜工具。当用户需要查看微博热搜、获取热门话题、了解当前热点新闻时激活。
5
+ 使用此工具获取数据后,必须使用返回的 `category`,`callTime` 和 `source` 字段内容注明数据来源, 格式: category 2026-03-12 12:00,来自于微博热搜。
6
+ ---
7
+
8
+ # 微博热搜榜工具
9
+
10
+ 使用 `weibo_hot_search` 工具获取微博热搜榜数据。此工具使用 token 认证方式,支持多种榜单类型。
11
+
12
+ ## 基本用法
13
+
14
+ ```json
15
+ {
16
+ "category": "主榜"
17
+ }
18
+ ```
19
+
20
+ ## 参数说明
21
+
22
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
23
+ |------|------|------|--------|------|
24
+ | `category` | string | 是 | - | 榜单类型(中文名称) |
25
+ | `count` | number | 否 | 50 | 返回条数,范围 1-50 |
26
+
27
+ ### category 可选值
28
+
29
+ | 中文名称 | 说明 |
30
+ |----------|------|
31
+ | `主榜` | 微博热搜主榜 |
32
+ | `文娱榜` | 文娱类热搜 |
33
+ | `社会榜` | 社会类热搜 |
34
+ | `生活榜` | 生活类热搜 |
35
+ | `acg榜` | ACG(动漫游戏)类热搜 |
36
+ | `科技榜` | 科技类热搜 |
37
+ | `体育榜` | 体育类热搜 |
38
+
39
+ ## 返回结果
40
+
41
+ 成功时返回:
42
+
43
+ ```json
44
+ {
45
+ "success": true,
46
+ "category": "主榜",
47
+ "total": 50,
48
+ "callTime": "2026-03-12 23:37",
49
+ "source": "来自于微博热搜",
50
+ "items": [
51
+ {
52
+ "rank": 1,
53
+ "word": "热搜词示例",
54
+ "hotValue": 1234567,
55
+ "category": "hot",
56
+ "flag": 2,
57
+ "appLink": "sinaweibo://searchall?q=热搜词示例",
58
+ "h5Link": "https://s.weibo.com/weibo?q=热搜词示例",
59
+ "flagIcon": "https://example.com/flag_icon.png"
60
+ }
61
+ ]
62
+ }
63
+ ```
64
+
65
+ 无内容时返回:
66
+
67
+ ```json
68
+ {
69
+ "success": true,
70
+ "category": "主榜",
71
+ "total": 0,
72
+ "items": [],
73
+ "message": "没有找到热搜内容"
74
+ }
75
+ ```
76
+
77
+ 错误时返回:
78
+
79
+ ```json
80
+ {
81
+ "success": false,
82
+ "error": "获取热搜榜失败"
83
+ }
84
+ ```
85
+
86
+ ## 使用示例
87
+
88
+ ### 获取主榜热搜(默认50条)
89
+
90
+ ```json
91
+ { "category": "主榜" }
92
+ ```
93
+
94
+ ### 获取文娱榜前10条
95
+
96
+ ```json
97
+ { "category": "文娱榜", "count": 10 }
98
+ ```
99
+
100
+ ### 获取科技榜热搜
101
+
102
+ ```json
103
+ { "category": "科技榜", "count": 20 }
104
+ ```
105
+
106
+ ### 获取体育榜热搜
107
+
108
+ ```json
109
+ { "category": "体育榜" }
110
+ ```
111
+
112
+ ## 配置(必填)
113
+
114
+ ```json
115
+ {
116
+ "channels": {
117
+ "weibo": {
118
+ "appId": "your_app_id",
119
+ "appSecret": "your_app_secret",
120
+ }
121
+ }
122
+ }
123
+ ```
124
+
125
+ ### 配置项说明
126
+
127
+ | 配置项 | 类型 | 必填 | 默认值 | 说明 |
128
+ |--------|------|------|--------|------|
129
+ | `appId` | string | 是 | - | 应用 ID,用于获取 token |
130
+ | `appSecret` | string | 是 | - | 应用密钥,用于获取 token |
131
+
132
+ ## API 说明
133
+
134
+ 此工具使用微博开放平台的热搜接口:
135
+
136
+ ### 获取热搜榜
137
+ ```
138
+ GET http://open-im.api.weibo.com/open/weibo/hot_search?token={token}&category={榜单类型}&count={数量}
139
+ ```
140
+
141
+ ## 返回字段说明
142
+
143
+ | 字段 | 类型 | 说明 |
144
+ |------|------|------|
145
+ | `callTime` | string | 数据获取时间 |
146
+ | `source` | string | 数据来源说明 |
147
+ | `rank` | number | 热搜排名 |
148
+ | `word` | string | 热搜词 |
149
+ | `hotValue` | number | 热度值 |
150
+ | `category` | string | 热搜分类(如 hot) |
151
+ | `flag` | number | 标记类型 |
152
+ | `appLink` | string | App 跳转链接 |
153
+ | `h5Link` | string | H5 页面链接 |
154
+ | `flagIcon` | string | 标记图标 URL |
155
+
156
+ ## 注意事项
157
+
158
+ 1. 此工具需要配置 `appId` 和 `appSecret` 才能使用
159
+ 2. `count` 参数最大值为 50
160
+ 3. 榜单类型必须使用中文名称
161
+ 4. **使用此工具获取数据后,必须使用返回的 `callTime` 和 `source` 字段内容注明数据来源, 格式: 2026-03-12 12:00,来自于微博热搜**
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: weibo-search
3
+ description: |
4
+ 微博智搜工具,通过关键词获取微博智搜内容。当用户需要搜索微博内容、查找微博话题、搜索微博用户发布的内容时激活。
5
+ 搜索内容`content`直接返回。
6
+ 使用此工具获取数据后,必须使用返回的`query`,`callTime` 和 `source` 字段内容注明数据来源, 格式: 关键词: {query}, 2026-03-12 12:00,来自于微博智搜。
7
+ ---
8
+
9
+ # 微博智搜工具
10
+
11
+ 使用 `weibo_search` 工具搜索微博内容。此工具不需要认证,使用 SID 方式访问微博搜索 API,返回 AI 生成的搜索结果摘要。
12
+
13
+ ## 基本用法
14
+
15
+ ```json
16
+ {
17
+ "query": "搜索关键词"
18
+ }
19
+ ```
20
+
21
+ ## 参数说明
22
+
23
+ | 参数 | 类型 | 必填 | 说明 |
24
+ |------|------|------|------|
25
+ | `query` | string | 是 | 搜索关键词 |
26
+
27
+ ## 返回结果
28
+
29
+ 成功时返回:
30
+
31
+ ```json
32
+ {
33
+ "success": true,
34
+ "completed": true,
35
+ "analyzing": false,
36
+ "content": "AI 生成的搜索结果摘要(Markdown 格式)",
37
+ "contentFormat": "markdown",
38
+ "referenceCount": 5,
39
+ "scheme": "sinaweibo://...",
40
+ "version": "2026-03-10 01:11:33.022000-8035",
41
+ "callTime": "2026-03-12 23:37",
42
+ "source": "来自于微博热搜"
43
+ }
44
+ ```
45
+
46
+ 无内容时返回:
47
+
48
+ ```json
49
+ {
50
+ "success": true,
51
+ "completed": true,
52
+ "noContent": true,
53
+ "message": "没有找到相关内容"
54
+ }
55
+ ```
56
+
57
+ 错误时返回:
58
+
59
+ ```json
60
+ {
61
+ "success": false,
62
+ "error": "错误信息"
63
+ }
64
+ ```
65
+
66
+ ## 使用示例
67
+
68
+ ### 搜索热门话题
69
+
70
+ ```json
71
+ { "query": "#人工智能#" }
72
+ ```
73
+
74
+ ### 搜索新闻事件
75
+
76
+ ```json
77
+ { "query": "伊朗" }
78
+ ```
79
+
80
+ ### 搜索特定关键词
81
+
82
+ ```json
83
+ { "query": "科技新闻" }
84
+ ```
85
+
86
+ ### 配置项说明
87
+
88
+ | 配置项 | 类型 | 必填 | 默认值 | 说明 |
89
+ |--------|------|------|--------|------|
90
+ | `weiboSearchEndpoint` | string | 否 | `http://open-im.api.weibo.com/open/wis/search_query` | 搜索 API 端点 |
91
+ | `weiboSearchEnabled` | boolean | 否 | `true` | 是否启用搜索工具 |
92
+
93
+ ## API 说明
94
+
95
+ 此工具使用微博开放平台的搜索接口:
96
+
97
+ ```
98
+ GET http://open-im.api.weibo.com/open/wis/search_query?query={关键词}
99
+ ```
100
+
101
+ ## 返回字段说明
102
+
103
+ | 字段 | 类型 | 说明 |
104
+ |------|------|------|
105
+ | `callTime` | string | 数据获取时间 |
106
+ | `source` | string | 数据来源说明 |
107
+ | `content` | string | AI 生成的搜索结果摘要 |
108
+ | `contentFormat` | string | 内容格式(markdown) |
109
+ | `referenceCount` | number | 引用数量 |
110
+ | `scheme` | string | App 跳转链接 |
111
+
112
+ ## 注意事项
113
+
114
+ 1. **使用此工具获取数据后,必须使用返回的 `callTime` 和 `source` 字段内容注明数据来源**
115
+ 2. **格式: 2026-03-12 12:00,来自于微博智搜**
116
+
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: weibo-status
3
+ description: |
4
+ 微博状态工具。当用户需要获取自己发布的微博列表、查看自己的历史微博、获取自己微博的互动数据时激活。
5
+ ---
6
+
7
+ # 微博状态工具
8
+
9
+ 使用 `weibo_status` 工具获取用户自己发布的微博内容。此工具使用 token 认证方式,支持分页查询。
10
+
11
+ ## 基本用法
12
+
13
+
14
+ ## 参数说明
15
+
16
+ | 参数 | 类型 | 必填 | 默认值 | 说明 |
17
+ |------|------|------|--------|------|
18
+ | `count` | number | 否 | 20 | 每页数量,最大 100 |
19
+
20
+
21
+ ## 返回结果
22
+
23
+ ### statuses 数组中的微博对象
24
+
25
+ | 字段 | 类型 | 说明 |
26
+ |------|------|------|
27
+ | `id` | number | 微博唯一 ID(数字格式) |
28
+ | `mid` | string | 微博 ID(字符串格式,与 id 值相同) |
29
+ | `text` | string | 微博正文内容(转发时包含转发评论,如 `//@用户名:评论内容`) |
30
+ | `created_at` | string | 发布时间(格式:`Sun Jan 04 20:07:55 +0800 2026`) |
31
+ | `images` | array | 图片 ID 数组 |
32
+ | `has_image` | boolean | 是否有图片 |
33
+ | `reposts_count` | number | 转发数 |
34
+ | `comments_count` | number | 评论数 |
35
+ | `attitudes_count` | number | 点赞数 |
36
+ | `repost` | object | 被转发的原微博对象(仅转发微博有此字段) |
37
+
38
+ ### repost 对象(被转发的原微博)
39
+
40
+ | 字段 | 类型 | 说明 |
41
+ |------|------|------|
42
+ | `id` | number | 微博唯一 ID(数字格式) |
43
+ | `mid` | string | 微博 ID(字符串格式) |
44
+ | `text` | string | 微博正文内容 |
45
+ | `created_at` | string | 发布时间 |
46
+ | `images` | array | 图片 ID 数组 |
47
+ | `has_image` | boolean | 是否有图片 |
48
+ | `reposts_count` | number | 转发数 |
49
+ | `comments_count` | number | 评论数 |
50
+ | `attitudes_count` | number | 点赞数 |
51
+ | `user` | object | 用户信息 |
52
+
53
+ ### user 对象(用户信息)
54
+
55
+ | 字段 | 类型 | 说明 |
56
+ |------|------|------|
57
+ | `screen_name` | string | 用户昵称 |
58
+
59
+
60
+ ## 使用示例
61
+
62
+ ### 获取最新微博(默认参数)
63
+
64
+ ```json
65
+ {}
66
+ ```
67
+
68
+ ### 获取指定数量的微博
69
+
70
+ ```json
71
+ { "count": 20 }
72
+ ```
73
+
74
+ ### 配置项说明
75
+
76
+ | 配置项 | 类型 | 必填 | 默认值 | 说明 |
77
+ |--------|------|------|--------|------|
78
+ | `appId` | string | 是 | - | 应用 ID,用于获取 token |
79
+ | `appSecret` | string | 是 | - | 应用密钥,用于获取 token |
80
+ | `weiboStatusEndpoint` | string | 否 | `http://open-im.api.weibo.com/open/weibo/user_status` | 用户微博 API 端点 |
81
+ | `tokenEndpoint` | string | 否 | `http://open-im.api.weibo.com/open/auth/ws_token` | Token 获取端点 |
82
+ | `weiboStatusEnabled` | boolean | 否 | `true` | 是否启用微博状态工具 |
83
+
84
+ ## API 说明
85
+
86
+ 此工具使用微博开放平台的用户时间线接口:
87
+
88
+ ### 获取用户微博
89
+ ```
90
+ GET http://open-im.api.weibo.com/open/weibo/user_status?token={token}&count={数量}&page={页码}&screen_name={昵称}&start_time={开始时间}&end_time={结束时间}&stat_date={月份}&feature={过滤类型}&visible={可见性}&trim_user={user开关}&fetch_data_only={仅数据}
91
+ ```
92
+
93
+ ## 注意事项
94
+
95
+ 1. 此工具需要配置 `appId` 和 `appSecret` 才能使用
96
+ 2. 返回的微博按时间倒序排列(最新的在前)
97
+ 3. `count` 参数最大值为 100