openboost-cli 0.1.0__py3-none-any.whl
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.
- openboost_cli-0.1.0.dist-info/METADATA +153 -0
- openboost_cli-0.1.0.dist-info/RECORD +76 -0
- openboost_cli-0.1.0.dist-info/WHEEL +5 -0
- openboost_cli-0.1.0.dist-info/entry_points.txt +2 -0
- openboost_cli-0.1.0.dist-info/licenses/LICENSE +21 -0
- openboost_cli-0.1.0.dist-info/top_level.txt +1 -0
- proboost_cli/__init__.py +21 -0
- proboost_cli/cli/__init__.py +1 -0
- proboost_cli/cli/interactive.py +107 -0
- proboost_cli/cli/main.py +566 -0
- proboost_cli/client.py +58 -0
- proboost_cli/coerce_args.py +62 -0
- proboost_cli/config.py +109 -0
- proboost_cli/mcp_client.py +113 -0
- proboost_cli/parse_result.py +53 -0
- proboost_cli/registry.py +112 -0
- proboost_cli/schemas/__init__.py +1 -0
- proboost_cli/schemas/amazon/__init__.py +1 -0
- proboost_cli/schemas/amazon/amz_category_query.json +20 -0
- proboost_cli/schemas/amazon/amz_hot_amz_hot_cat_tree.json +25 -0
- proboost_cli/schemas/amazon/amz_hot_amz_hot_list.json +33 -0
- proboost_cli/schemas/amazon/amz_market_price.json +28 -0
- proboost_cli/schemas/amazon/amz_product_selection.json +140 -0
- proboost_cli/schemas/amazon/amz_review_query.json +28 -0
- proboost_cli/schemas/amazon/amz_sales_query.json +20 -0
- proboost_cli/schemas/amazon/amz_sku_query.json +20 -0
- proboost_cli/schemas/patent/__init__.py +1 -0
- proboost_cli/schemas/patent/patent_abstract_image.json +17 -0
- proboost_cli/schemas/patent/patent_abstract_translated.json +28 -0
- proboost_cli/schemas/patent/patent_bibliography.json +17 -0
- proboost_cli/schemas/patent/patent_claim_data.json +21 -0
- proboost_cli/schemas/patent/patent_claim_translated.json +28 -0
- proboost_cli/schemas/patent/patent_description.json +21 -0
- proboost_cli/schemas/patent/patent_description_translated.json +28 -0
- proboost_cli/schemas/patent/patent_family.json +17 -0
- proboost_cli/schemas/patent/patent_fulltext_image.json +29 -0
- proboost_cli/schemas/patent/patent_image_search_multiple.json +117 -0
- proboost_cli/schemas/patent/patent_image_search_single.json +114 -0
- proboost_cli/schemas/patent/patent_legal_status.json +17 -0
- proboost_cli/schemas/patent/patent_pdf.json +21 -0
- proboost_cli/schemas/patent/patent_query_count.json +36 -0
- proboost_cli/schemas/patent/patent_query_search.json +40 -0
- proboost_cli/schemas/patent/patent_query_search_with_agg.json +55 -0
- proboost_cli/schemas/patent/patent_semantic_search.json +48 -0
- proboost_cli/schemas/tiktok/__init__.py +1 -0
- proboost_cli/schemas/tiktok/tk_expert_sale_show.json +20 -0
- proboost_cli/schemas/tiktok/tt_commodity_detail.json +21 -0
- proboost_cli/schemas/tiktok/tt_commodity_expert_draw_expert_trend.json +20 -0
- proboost_cli/schemas/tiktok/tt_commodity_get_commodity_cat_tree.json +8 -0
- proboost_cli/schemas/tiktok/tt_commodity_info_list.json +180 -0
- proboost_cli/schemas/tiktok/tt_commodity_sales_trend.json +33 -0
- proboost_cli/schemas/tiktok/tt_commodity_statistics_get_category_statistics.json +28 -0
- proboost_cli/schemas/tiktok/tt_commodity_statistics_get_expert_statistics.json +28 -0
- proboost_cli/schemas/tiktok/tt_commodity_statistics_get_price_statistics.json +28 -0
- proboost_cli/schemas/tiktok/tt_commodity_statistics_get_total_statistics.json +28 -0
- proboost_cli/schemas/tiktok/tt_commodity_voice_analyze.json +36 -0
- proboost_cli/schemas/tiktok/tt_expert_basic_analyze.json +24 -0
- proboost_cli/schemas/tiktok/tt_expert_category_analyze.json +29 -0
- proboost_cli/schemas/tiktok/tt_expert_detail.json +20 -0
- proboost_cli/schemas/tiktok/tt_expert_fans_analyze.json +20 -0
- proboost_cli/schemas/tiktok/tt_expert_fans_portrait.json +20 -0
- proboost_cli/schemas/tiktok/tt_expert_info_list.json +180 -0
- proboost_cli/schemas/tiktok/tt_sale_channel_sale_channel.json +26 -0
- proboost_cli/schemas/tiktok/tt_shop_commodity_account_list.json +28 -0
- proboost_cli/schemas/tiktok/tt_shop_detail.json +28 -0
- proboost_cli/schemas/tiktok/tt_shop_info_list.json +108 -0
- proboost_cli/schemas/tiktok/tt_shop_market_info.json +28 -0
- proboost_cli/schemas/tiktok/tt_shop_sales_trend.json +33 -0
- proboost_cli/schemas/tiktok/tt_video_content.json +20 -0
- proboost_cli/schemas/tiktok/tt_video_detail.json +20 -0
- proboost_cli/schemas/tiktok/tt_video_info_list.json +152 -0
- proboost_cli/schemas/tiktok/tt_video_new_video_summary.json +20 -0
- proboost_cli/schemas/tiktok/tt_video_script_diy_query.json +20 -0
- proboost_cli/schemas/tiktok/tt_video_voice_read.json +28 -0
- proboost_cli/schemas/tiktok/tt_video_voice_summary.json +28 -0
- proboost_cli/schemas_loader.py +49 -0
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: openboost-cli
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Unified CLI and Python client for Proboost TikTok, Patent, and Amazon MCP servers.
|
|
5
|
+
Author: Proboost CLI
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Keywords: mcp,cli,openboost,proboost,tiktok,patent,amazon
|
|
8
|
+
Classifier: Development Status :: 4 - Beta
|
|
9
|
+
Classifier: Environment :: Console
|
|
10
|
+
Classifier: Intended Audience :: Developers
|
|
11
|
+
Classifier: Operating System :: OS Independent
|
|
12
|
+
Classifier: Programming Language :: Python :: 3
|
|
13
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
17
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
18
|
+
Classifier: Topic :: Utilities
|
|
19
|
+
Requires-Python: >=3.10
|
|
20
|
+
Description-Content-Type: text/markdown
|
|
21
|
+
License-File: LICENSE
|
|
22
|
+
Requires-Dist: httpx>=0.27
|
|
23
|
+
Requires-Dist: mcp>=1.24
|
|
24
|
+
Requires-Dist: rich>=13.0
|
|
25
|
+
Requires-Dist: typer>=0.12
|
|
26
|
+
Provides-Extra: dev
|
|
27
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
28
|
+
Requires-Dist: build>=1.2; extra == "dev"
|
|
29
|
+
Requires-Dist: twine>=6.0; extra == "dev"
|
|
30
|
+
Dynamic: license-file
|
|
31
|
+
|
|
32
|
+
# openboost-cli
|
|
33
|
+
|
|
34
|
+
统一 Proboost MCP 命令行工具,包含 TikTok、Patent、Amazon 三套 MCP 的交互式菜单、快捷命令、通用调用和 Python 客户端。
|
|
35
|
+
|
|
36
|
+
## 安装
|
|
37
|
+
|
|
38
|
+
从 PyPI 安装:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
pip install openboost-cli
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
开发安装:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
python3.12 -m venv .venv
|
|
48
|
+
source .venv/bin/activate
|
|
49
|
+
pip install --upgrade pip
|
|
50
|
+
pip install -e ".[dev]"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
安装后命令为:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
proboost --help
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
## 配置密钥
|
|
60
|
+
|
|
61
|
+
三套 MCP 共用同一个密钥时:
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
proboost config set --secret-key "你的密钥"
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
也可以只配置某一个 MCP:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
proboost config set --mcp patent --secret-key "你的密钥"
|
|
71
|
+
proboost config set --mcp amazon --base-url "http://mcp.microdata-inc.com/mcp-servers/proboost-amazon-mcp"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
环境变量也支持:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
export PROBOOST_SECRET_KEY="通用密钥"
|
|
78
|
+
export PROBOOST_TIKTOK_SECRET_KEY="TikTok 专用密钥"
|
|
79
|
+
export PROBOOST_PATENT_SECRET_KEY="Patent 专用密钥"
|
|
80
|
+
export PROBOOST_AMAZON_SECRET_KEY="Amazon 专用密钥"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## 通用命令
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
proboost # 交互式菜单
|
|
87
|
+
proboost list # 列出全部 55 个工具
|
|
88
|
+
proboost docs patent patent_query_search
|
|
89
|
+
|
|
90
|
+
proboost call tiktok tt_video_content \
|
|
91
|
+
--set countryRegion=美国 \
|
|
92
|
+
--set videoId=7587942790298979614
|
|
93
|
+
|
|
94
|
+
proboost call patent patent_query_count \
|
|
95
|
+
--set query_text="TACD: virtual reality"
|
|
96
|
+
|
|
97
|
+
proboost call amazon amz_product_selection \
|
|
98
|
+
--set webSiteId=1 \
|
|
99
|
+
--set pages=1 \
|
|
100
|
+
--set pagesSize=10
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## 快捷命令示例
|
|
104
|
+
|
|
105
|
+
TikTok:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
proboost tiktok commodity category-tree
|
|
109
|
+
proboost tiktok video content 7587942790298979614 --country 美国
|
|
110
|
+
proboost tiktok shop list --data-period last30d --country 美国
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Patent:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
proboost patent search count "TACD: virtual reality"
|
|
117
|
+
proboost patent search query "TACD: virtual reality" --limit 10
|
|
118
|
+
proboost patent detail bibliography --patent-number US11205304B2
|
|
119
|
+
proboost patent image-search single "https://example.com/image.jpg" --model 1 --patent-type D
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Amazon:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
proboost amazon product selection --site 1 --pages 1 --pages-size 10
|
|
126
|
+
proboost amazon product sku B0EXAMPLE --site 1
|
|
127
|
+
proboost amazon hot cat-tree --site 1 --rank-type "Best Seller"
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
复杂筛选条件可追加 `key=value`:
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
proboost amazon product selection --site 1 minPrice=10 maxPrice=30 sortField=sku_sales_last_30d sortOrder=desc
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Python 客户端
|
|
137
|
+
|
|
138
|
+
```python
|
|
139
|
+
from proboost_cli import Proboost
|
|
140
|
+
|
|
141
|
+
pb = Proboost()
|
|
142
|
+
content = pb.tiktok.tt_video_content(countryRegion="美国", videoId="7587942790298979614")
|
|
143
|
+
count = pb.patent.patent_query_count(query_text="TACD: virtual reality")
|
|
144
|
+
items = pb.amazon.amz_product_selection(webSiteId="1", pages=1, pagesSize=10)
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## 测试
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
python -m pytest
|
|
151
|
+
proboost --help
|
|
152
|
+
proboost list
|
|
153
|
+
```
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
openboost_cli-0.1.0.dist-info/licenses/LICENSE,sha256=53Wq-O9sqEWz-sSa7mhJ2of-SB9uQIBJxSvt9wIzuBQ,1069
|
|
2
|
+
proboost_cli/__init__.py,sha256=oDc4MygtzDZ2v6zawVtjy8kdE32kIHPTYonyElf14oI,584
|
|
3
|
+
proboost_cli/client.py,sha256=NJzN8zt6Ao3OsmKYLDgBHR4ukEvZizkarfnY9cSzIL4,1692
|
|
4
|
+
proboost_cli/coerce_args.py,sha256=LI0NBfBCTV0noxEGPNsIqXqy6bOIykK3ZvbHxDxHVcI,1854
|
|
5
|
+
proboost_cli/config.py,sha256=10Devzz4mWe9aGYYdMluZz_XDP_XOKnGDdphfIpDUtE,3060
|
|
6
|
+
proboost_cli/mcp_client.py,sha256=PKucGEKsAb_h6STOk3JpvFRbY4ic6PJfzDXzlK3wsHQ,4018
|
|
7
|
+
proboost_cli/parse_result.py,sha256=1vp3nckCmXFtm7U_QO5MQrA4rcBOY1UEgNomnsrcQFI,1426
|
|
8
|
+
proboost_cli/registry.py,sha256=UUHkre5CR1GPqyyO2oCm8jyhEgTwCsmbHi1VN5n8bzI,3278
|
|
9
|
+
proboost_cli/schemas_loader.py,sha256=xtSCiMtQmsbrg1jV3ZV49_0SWGuVQOegPUwT_TrAsvY,1541
|
|
10
|
+
proboost_cli/cli/__init__.py,sha256=koNd1zkPCuCaCz_z7h4DGGAFSMuYYgfUzeb48duaDdg,24
|
|
11
|
+
proboost_cli/cli/interactive.py,sha256=zGN5rMExpY8aVj76Y1TT47GJDrBDHdBNc0_gurw7LFg,4596
|
|
12
|
+
proboost_cli/cli/main.py,sha256=QADMm4q_YJAddCm4S8fQQOo8qgTs5Ij4C60z7fwKfgQ,32610
|
|
13
|
+
proboost_cli/schemas/__init__.py,sha256=t2oIT4kNN0ODf6HNstWu7uLFEVtu4VW_DOlwdU6lI9g,53
|
|
14
|
+
proboost_cli/schemas/amazon/__init__.py,sha256=XiUPtNiA0py0T9P9tT4XFbojhJBXrw-eerHPPTtc34U,33
|
|
15
|
+
proboost_cli/schemas/amazon/amz_category_query.json,sha256=NFjP4JsjgP0J8khbNtqHpG7p7bPRIS_E4oIHb5oF9aQ,523
|
|
16
|
+
proboost_cli/schemas/amazon/amz_hot_amz_hot_cat_tree.json,sha256=nUDwAQYGk8fxpYEP0jNLCIzR3ErlH9l6neiW2GSlXS8,688
|
|
17
|
+
proboost_cli/schemas/amazon/amz_hot_amz_hot_list.json,sha256=-0J0M0w8r-STjOP1YWTgHIRp46kdclTOS3Om9mAJvNQ,916
|
|
18
|
+
proboost_cli/schemas/amazon/amz_market_price.json,sha256=QVmOIOgixKJ9BHYWzhkqq5nCzA_n9zuSXkITaIrvdOA,1071
|
|
19
|
+
proboost_cli/schemas/amazon/amz_product_selection.json,sha256=NLexWGpmBhh1JSM1pSIDkuvA4_vJy_JJvidSF2Uidvw,5691
|
|
20
|
+
proboost_cli/schemas/amazon/amz_review_query.json,sha256=yL3l1hbheqCw7VVn8EO82fW-Rk6bgyfCXRM9tet6Ovc,662
|
|
21
|
+
proboost_cli/schemas/amazon/amz_sales_query.json,sha256=7vEhJjw5IeWxL6RGJBDs5cE-OW5E7e0X55qX8KOwPzg,495
|
|
22
|
+
proboost_cli/schemas/amazon/amz_sku_query.json,sha256=LXE909TBUdm-c6DjnMmbQR36jPDC0_BYFoFM4cKLRs8,484
|
|
23
|
+
proboost_cli/schemas/patent/__init__.py,sha256=Ms5XFPShigpYbbB1EG66XBlC9RFZm8IkmQCDotZkknw,33
|
|
24
|
+
proboost_cli/schemas/patent/patent_abstract_image.json,sha256=1Fy7znJSwDQEUCymihOQq4krW3gELHNf9ZuN032-vMY,638
|
|
25
|
+
proboost_cli/schemas/patent/patent_abstract_translated.json,sha256=Ki237Y-WIc-CEeg3dN7CfIM2Vngpxvm0nTi0X12wOb0,1073
|
|
26
|
+
proboost_cli/schemas/patent/patent_bibliography.json,sha256=9NPArd4Clz28RWxZx-u4NA3-xP5xNEWs1uBweFXd43o,776
|
|
27
|
+
proboost_cli/schemas/patent/patent_claim_data.json,sha256=EKeOMJf7ANIUroCFYihYV_PPo65llFNaa0MXLZ_LMNs,878
|
|
28
|
+
proboost_cli/schemas/patent/patent_claim_translated.json,sha256=hopukS84MTbzTcG5gdkUpFkOcrXILFd72QF_vYaaPH8,1087
|
|
29
|
+
proboost_cli/schemas/patent/patent_description.json,sha256=RO7s0l4V36SEXP4obY8dUWd52gFxhuw8NJBgwb0n00M,869
|
|
30
|
+
proboost_cli/schemas/patent/patent_description_translated.json,sha256=JO4v0vFmiuGViH5wNjy2IAWgd8ui1YnKvzv6VoKayoU,1042
|
|
31
|
+
proboost_cli/schemas/patent/patent_family.json,sha256=sO_gpkSfFkRidPPEy0UszcvcNThqHdKBqTczQMmIwjE,681
|
|
32
|
+
proboost_cli/schemas/patent/patent_fulltext_image.json,sha256=kfVVbuee6A_fQd2cyCTDwygZqQ_ggWpu_rca5prggPg,926
|
|
33
|
+
proboost_cli/schemas/patent/patent_image_search_multiple.json,sha256=6INr9cBoSO-9c0d_De7pXWWfJoe6XCabBaT-tlvS0KQ,4399
|
|
34
|
+
proboost_cli/schemas/patent/patent_image_search_single.json,sha256=X8b3tZQBxNIVvA2knAcuR8tsNe8Mc2EsNxpf-Ymh-XM,4102
|
|
35
|
+
proboost_cli/schemas/patent/patent_legal_status.json,sha256=xdVIgR1GMSbi0lpA-1TQ-Geh27bCP7wciFurg3HP_RY,744
|
|
36
|
+
proboost_cli/schemas/patent/patent_pdf.json,sha256=gfiPNwyT5ZvLe-SsPsRGfaS4j9b6Vafcc8G2G38HUcA,827
|
|
37
|
+
proboost_cli/schemas/patent/patent_query_count.json,sha256=sl_4pMTcCsEHtoWR0CWr1pU449oTlCoygzQ_cja95OQ,1496
|
|
38
|
+
proboost_cli/schemas/patent/patent_query_search.json,sha256=e3mdqXylZ4C1q1aBc-4m9tULEXy-9UcbK6yuX2Rangw,2002
|
|
39
|
+
proboost_cli/schemas/patent/patent_query_search_with_agg.json,sha256=vIKFX5J1CM22f7vKbUD3OhVQPNWZe2HjFGxnJDV2b5g,1994
|
|
40
|
+
proboost_cli/schemas/patent/patent_semantic_search.json,sha256=XZjs_BLnn92fdwrN4J3mgv_uzZ7n9dAnp3bEPo8SL48,1750
|
|
41
|
+
proboost_cli/schemas/tiktok/__init__.py,sha256=TQmAUg3PZP4nlWLXMsgX2BOjXmeLSmGwHTGXAn6oaBQ,33
|
|
42
|
+
proboost_cli/schemas/tiktok/tk_expert_sale_show.json,sha256=eVMh2-nvsLN3c9i7YCW9Uw6hDMpRSUSPgB8AOarhxso,621
|
|
43
|
+
proboost_cli/schemas/tiktok/tt_commodity_detail.json,sha256=16pS0mDTXCQbKGjJk2Ix1MYdJeyGquhL7xHe4pj6VaI,728
|
|
44
|
+
proboost_cli/schemas/tiktok/tt_commodity_expert_draw_expert_trend.json,sha256=ki7QvKLzJV_C6lggBiwbBy16piNlWpVjYcPf7ihhuzY,651
|
|
45
|
+
proboost_cli/schemas/tiktok/tt_commodity_get_commodity_cat_tree.json,sha256=6KGEcLiMAErjO39Dw4V7umsRAc6CNqeJEUmjzK0iGJQ,308
|
|
46
|
+
proboost_cli/schemas/tiktok/tt_commodity_info_list.json,sha256=x0vzkjXgFaTRzmQTA_OO6QCIAGaFo9i7F9BizOcMxFw,6123
|
|
47
|
+
proboost_cli/schemas/tiktok/tt_commodity_sales_trend.json,sha256=ybfYcfJcWnpZtQVLhyNKQXl5Kve6RyJMoXLI0kQp2ZU,1466
|
|
48
|
+
proboost_cli/schemas/tiktok/tt_commodity_statistics_get_category_statistics.json,sha256=97MTB6x2nOVxZK3VpyHZgmy6G18HLKtGZvYQ1O2VTQA,1235
|
|
49
|
+
proboost_cli/schemas/tiktok/tt_commodity_statistics_get_expert_statistics.json,sha256=xbL6y-OSJZlgzwB9ilP1V_NrJvK888XRFJMqnOLP2Qg,1111
|
|
50
|
+
proboost_cli/schemas/tiktok/tt_commodity_statistics_get_price_statistics.json,sha256=4htIIGjwkQWVNWNXTTOp6FHernrsswfojb31c7R3tmo,1151
|
|
51
|
+
proboost_cli/schemas/tiktok/tt_commodity_statistics_get_total_statistics.json,sha256=k_MD8S_IZiWUYniWSZrMCnTrPEYdSv4vDL0X_a8MUqc,1199
|
|
52
|
+
proboost_cli/schemas/tiktok/tt_commodity_voice_analyze.json,sha256=WCAwFSpwdfQhiSls42fBJxBi1M0E8bJVfLxolHoBMbg,1414
|
|
53
|
+
proboost_cli/schemas/tiktok/tt_expert_basic_analyze.json,sha256=bwXGFSOIWQf3LGqcsWXyEt-CTPpxVkbzXQeXVz85Rc4,675
|
|
54
|
+
proboost_cli/schemas/tiktok/tt_expert_category_analyze.json,sha256=NPvRxO5bTl68fAJigb0v9bRR7SkriHwtGgL_MbQVd-Y,1225
|
|
55
|
+
proboost_cli/schemas/tiktok/tt_expert_detail.json,sha256=77f17L-F4RFRj4YBgGSDMwecXAQPohMDiZqXMCfhldM,631
|
|
56
|
+
proboost_cli/schemas/tiktok/tt_expert_fans_analyze.json,sha256=r4TrQYPcanC-ZNS2ccefNjJME3PBzb45Ygf6Dv-wfYM,744
|
|
57
|
+
proboost_cli/schemas/tiktok/tt_expert_fans_portrait.json,sha256=ehIQQ6BXfAccSlXgxPWDTdDDvQMOlbipRbDrWqggUNI,591
|
|
58
|
+
proboost_cli/schemas/tiktok/tt_expert_info_list.json,sha256=0buhDemLnhQ2vXKTA6rg4SZoKCNS50fUMirLDHB0Mng,5766
|
|
59
|
+
proboost_cli/schemas/tiktok/tt_sale_channel_sale_channel.json,sha256=dh1EfvHtl5-w4FEWuLcWLUWal9nsGsrrS2HVcDDjkyc,837
|
|
60
|
+
proboost_cli/schemas/tiktok/tt_shop_commodity_account_list.json,sha256=q5Pfp1_TGbF_GGhdQ4Eb_ZtJg-yeTR0a_wdjKMFXMCM,846
|
|
61
|
+
proboost_cli/schemas/tiktok/tt_shop_detail.json,sha256=DcQrpO_6diEXKGt97ngxcNOgTlyvg4dXc2rIOg523ic,826
|
|
62
|
+
proboost_cli/schemas/tiktok/tt_shop_info_list.json,sha256=tuvBH4WM528hsIVxBgC2A-qn_WQc6DbL-Y1gN2ppIM4,2966
|
|
63
|
+
proboost_cli/schemas/tiktok/tt_shop_market_info.json,sha256=iaxRWGm7HDNAV_foJW7h_0VqR2oY8fhDPlBHE4DLPes,941
|
|
64
|
+
proboost_cli/schemas/tiktok/tt_shop_sales_trend.json,sha256=LVaRA9SuxiittmzTKKuoD2kamzymyQUfq8tFPKYaWzA,1032
|
|
65
|
+
proboost_cli/schemas/tiktok/tt_video_content.json,sha256=-JMviSGSKobCvhxeWksEfWB6jiUFOPxJ7sf0TQvEgik,718
|
|
66
|
+
proboost_cli/schemas/tiktok/tt_video_detail.json,sha256=_Qod_dDhVpiE5V26l0c5JwgPK-ZYpgsM5bPGcDxqkY8,548
|
|
67
|
+
proboost_cli/schemas/tiktok/tt_video_info_list.json,sha256=iiNmoHlYe_iQTt9wRI_9S-nabPuL-lTInULjFnAEHCA,4703
|
|
68
|
+
proboost_cli/schemas/tiktok/tt_video_new_video_summary.json,sha256=SSyYoNVCB_NRvLozRcZ7RHQSdaC8i-0HorZbTscYFuc,595
|
|
69
|
+
proboost_cli/schemas/tiktok/tt_video_script_diy_query.json,sha256=YMpJHAgpCCd9S41ebiwlE0DRZpt5XJQfSfcED1O-Icc,710
|
|
70
|
+
proboost_cli/schemas/tiktok/tt_video_voice_read.json,sha256=yXNUkTIkrU0RWZY3x5Vm2g-SnOpbN0HvqsqJEez6-PU,762
|
|
71
|
+
proboost_cli/schemas/tiktok/tt_video_voice_summary.json,sha256=uHv0My5Kqth4muP8ZjA0l6jxRIi8uQeLfNLg-0y4Euw,866
|
|
72
|
+
openboost_cli-0.1.0.dist-info/METADATA,sha256=oQlM3WlOErGPpPCGqmbdZAgC_K-dhrpZZ86BH7j8RJQ,3908
|
|
73
|
+
openboost_cli-0.1.0.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
74
|
+
openboost_cli-0.1.0.dist-info/entry_points.txt,sha256=HK1KJ8R5Q2OmH-QwHVE57524nuExAvUBRwgp9BBqxYY,56
|
|
75
|
+
openboost_cli-0.1.0.dist-info/top_level.txt,sha256=DTDv4jPJBfjN_alFx1wWZxeBevJx0PDu_CSs0hQokrY,13
|
|
76
|
+
openboost_cli-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Proboost CLI
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
proboost_cli
|
proboost_cli/__init__.py
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"""Unified Proboost MCP CLI and Python client."""
|
|
2
|
+
|
|
3
|
+
__version__ = "0.1.0"
|
|
4
|
+
|
|
5
|
+
DEFAULT_BASE_URLS = {
|
|
6
|
+
"tiktok": "http://mcp.microdata-inc.com/mcp-servers/proboost-tiktok-mcp",
|
|
7
|
+
"patent": "http://mcp.microdata-inc.com/mcp-servers/proboost-patent-mcp",
|
|
8
|
+
"amazon": "http://mcp.microdata-inc.com/mcp-servers/proboost-amazon-mcp",
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
MCP_LABELS = {
|
|
12
|
+
"tiktok": "TikTok",
|
|
13
|
+
"patent": "Patent",
|
|
14
|
+
"amazon": "Amazon",
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
MCP_NAMES = tuple(DEFAULT_BASE_URLS.keys())
|
|
18
|
+
|
|
19
|
+
from .client import Proboost
|
|
20
|
+
|
|
21
|
+
__all__ = ["DEFAULT_BASE_URLS", "MCP_LABELS", "MCP_NAMES", "Proboost", "__version__"]
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"""CLI entry points."""
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
import json
|
|
5
|
+
from typing import Any
|
|
6
|
+
|
|
7
|
+
from rich.console import Console
|
|
8
|
+
from rich.panel import Panel
|
|
9
|
+
from rich.prompt import Prompt
|
|
10
|
+
|
|
11
|
+
from proboost_cli import MCP_LABELS, MCP_NAMES
|
|
12
|
+
from proboost_cli.coerce_args import coerce_argument_value
|
|
13
|
+
from proboost_cli.config import effective_secret_and_base
|
|
14
|
+
from proboost_cli.mcp_client import extract_result_text, invoke_tool_async
|
|
15
|
+
from proboost_cli.parse_result import decode_embedded_payload
|
|
16
|
+
from proboost_cli.registry import DOMAIN_LABELS, DOMAIN_TOOLS, TOOLS
|
|
17
|
+
from proboost_cli.schemas_loader import load_tool_definitions, tool_schema_properties
|
|
18
|
+
|
|
19
|
+
console = Console()
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
def run_interactive(
|
|
23
|
+
*,
|
|
24
|
+
secret_key: str | None = None,
|
|
25
|
+
base_url: str | None = None,
|
|
26
|
+
) -> None:
|
|
27
|
+
console.print(Panel(
|
|
28
|
+
"[bold cyan]Proboost CLI[/bold cyan]\n统一调用 TikTok / Patent / Amazon MCP",
|
|
29
|
+
title="proboost",
|
|
30
|
+
border_style="cyan",
|
|
31
|
+
))
|
|
32
|
+
|
|
33
|
+
mcp_options = list(MCP_NAMES)
|
|
34
|
+
console.print("\n[bold]选择 MCP:[/bold]")
|
|
35
|
+
for idx, mcp in enumerate(mcp_options, 1):
|
|
36
|
+
console.print(f" [cyan]{idx}[/cyan]. {MCP_LABELS[mcp]}")
|
|
37
|
+
console.print(" [cyan]0[/cyan]. 退出")
|
|
38
|
+
mcp_choice = Prompt.ask("请选择", choices=[str(i) for i in range(len(mcp_options) + 1)], default="0")
|
|
39
|
+
if mcp_choice == "0":
|
|
40
|
+
return
|
|
41
|
+
mcp = mcp_options[int(mcp_choice) - 1]
|
|
42
|
+
|
|
43
|
+
domain_keys = [key for key in DOMAIN_LABELS[mcp] if DOMAIN_TOOLS[mcp].get(key)]
|
|
44
|
+
console.print(f"\n[bold]{MCP_LABELS[mcp]} — 选择工具分类:[/bold]")
|
|
45
|
+
for idx, domain in enumerate(domain_keys, 1):
|
|
46
|
+
console.print(f" [cyan]{idx}[/cyan]. {DOMAIN_LABELS[mcp][domain]} ({len(DOMAIN_TOOLS[mcp][domain])} 个工具)")
|
|
47
|
+
console.print(" [cyan]0[/cyan]. 返回")
|
|
48
|
+
domain_choice = Prompt.ask("请选择", choices=[str(i) for i in range(len(domain_keys) + 1)], default="0")
|
|
49
|
+
if domain_choice == "0":
|
|
50
|
+
return run_interactive(secret_key=secret_key, base_url=base_url)
|
|
51
|
+
domain = domain_keys[int(domain_choice) - 1]
|
|
52
|
+
|
|
53
|
+
tool_names = DOMAIN_TOOLS[mcp][domain]
|
|
54
|
+
console.print(f"\n[bold]{DOMAIN_LABELS[mcp][domain]} — 选择工具:[/bold]")
|
|
55
|
+
for idx, tool_name in enumerate(tool_names, 1):
|
|
56
|
+
console.print(f" [cyan]{idx}[/cyan]. {TOOLS[mcp][tool_name].label} [dim]({tool_name})[/dim]")
|
|
57
|
+
console.print(" [cyan]0[/cyan]. 返回")
|
|
58
|
+
tool_choice = Prompt.ask("请选择", choices=[str(i) for i in range(len(tool_names) + 1)], default="0")
|
|
59
|
+
if tool_choice == "0":
|
|
60
|
+
return run_interactive(secret_key=secret_key, base_url=base_url)
|
|
61
|
+
|
|
62
|
+
tool_name = tool_names[int(tool_choice) - 1]
|
|
63
|
+
tool_doc = load_tool_definitions(mcp)[tool_name]
|
|
64
|
+
props = tool_schema_properties(tool_doc)
|
|
65
|
+
kwargs: dict[str, Any] = {}
|
|
66
|
+
|
|
67
|
+
console.print(f"\n[bold]执行: {TOOLS[mcp][tool_name].label}[/bold] [dim]({mcp}.{tool_name})[/dim]")
|
|
68
|
+
for key in TOOLS[mcp][tool_name].required:
|
|
69
|
+
schema = props.get(key) if isinstance(props.get(key), dict) else {}
|
|
70
|
+
hint = f" [dim]{schema.get('description', '')[:80]}[/dim]" if schema else ""
|
|
71
|
+
val = Prompt.ask(f" [yellow]{key}[/yellow] (必填){hint}")
|
|
72
|
+
kwargs[key] = coerce_argument_value(val, schema if isinstance(schema, dict) else None)
|
|
73
|
+
|
|
74
|
+
console.print(" [dim]输入可选参数 key=value,直接回车跳过[/dim]")
|
|
75
|
+
while True:
|
|
76
|
+
extra = Prompt.ask(" 可选参数", default="")
|
|
77
|
+
if not extra:
|
|
78
|
+
break
|
|
79
|
+
if "=" not in extra:
|
|
80
|
+
console.print("[yellow]格式应为 key=value[/yellow]")
|
|
81
|
+
continue
|
|
82
|
+
key, value = extra.split("=", 1)
|
|
83
|
+
schema = props.get(key.strip()) if isinstance(props.get(key.strip()), dict) else {}
|
|
84
|
+
kwargs[key.strip()] = coerce_argument_value(value, schema if isinstance(schema, dict) else None)
|
|
85
|
+
|
|
86
|
+
secret, resolved_base = effective_secret_and_base(mcp, secret_key=secret_key, base_url=base_url)
|
|
87
|
+
if not secret:
|
|
88
|
+
console.print("[red]缺少 secret-key。请运行 proboost config set --secret-key ...[/red]")
|
|
89
|
+
raise SystemExit(1)
|
|
90
|
+
|
|
91
|
+
try:
|
|
92
|
+
result = asyncio.run(invoke_tool_async(resolved_base, secret, tool_name, kwargs))
|
|
93
|
+
except Exception as exc:
|
|
94
|
+
console.print(f"[red]MCP 调用失败: {exc}[/red]")
|
|
95
|
+
raise SystemExit(2) from exc
|
|
96
|
+
|
|
97
|
+
text = extract_result_text(result)
|
|
98
|
+
if result.isError:
|
|
99
|
+
console.print(text or "[red]工具返回错误[/red]")
|
|
100
|
+
raise SystemExit(3)
|
|
101
|
+
|
|
102
|
+
try:
|
|
103
|
+
decoded = decode_embedded_payload(text)
|
|
104
|
+
except ValueError:
|
|
105
|
+
console.print(text)
|
|
106
|
+
else:
|
|
107
|
+
console.print_json(json.dumps(decoded, ensure_ascii=False))
|