specific-ai-cli 0.0.0-stage → 0.1.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 (277) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +177 -0
  3. package/README.ja.md +177 -0
  4. package/README.ko.md +177 -0
  5. package/README.md +174 -2
  6. package/README.zh-TW.md +177 -0
  7. package/assets/banner.txt +3 -0
  8. package/dist/cli/argv.js +98 -0
  9. package/dist/cli/commands/auth.js +11 -0
  10. package/dist/cli/commands/config.js +23 -0
  11. package/dist/cli/commands/doctor.js +134 -0
  12. package/dist/cli/commands/platforms.js +24 -0
  13. package/dist/cli/commands/version.js +4 -0
  14. package/dist/cli/confirm.js +22 -0
  15. package/dist/cli/dispatch.js +440 -0
  16. package/dist/cli/help.js +223 -0
  17. package/dist/cli/hints.js +60 -0
  18. package/dist/cli/main.js +18 -0
  19. package/dist/cli/output.js +66 -0
  20. package/dist/core/auth-handlers.js +41 -0
  21. package/dist/core/auth-store.js +119 -0
  22. package/dist/core/capabilities.js +163 -0
  23. package/dist/core/config.js +121 -0
  24. package/dist/core/cookies.js +164 -0
  25. package/dist/core/errors.js +37 -0
  26. package/dist/core/files.js +89 -0
  27. package/dist/core/fsutil.js +52 -0
  28. package/dist/core/hash.js +4 -0
  29. package/dist/core/http.js +331 -0
  30. package/dist/core/image.js +280 -0
  31. package/dist/core/log.js +40 -0
  32. package/dist/core/login.js +191 -0
  33. package/dist/core/mp4.js +130 -0
  34. package/dist/core/normalize.js +207 -0
  35. package/dist/core/options.js +110 -0
  36. package/dist/core/paths.js +38 -0
  37. package/dist/core/pb.js +59 -0
  38. package/dist/core/py.js +181 -0
  39. package/dist/core/rand.js +131 -0
  40. package/dist/core/registry.js +129 -0
  41. package/dist/core/schemas.js +41 -0
  42. package/dist/core/stream.js +104 -0
  43. package/dist/core/toolkit.js +35 -0
  44. package/dist/core/vm.js +73 -0
  45. package/dist/core/vocab.js +157 -0
  46. package/dist/platforms/_shared/impaas.js +410 -0
  47. package/dist/platforms/bilibili/index.js +216 -0
  48. package/dist/platforms/bilibili/web/api.js +806 -0
  49. package/dist/platforms/bilibili/web/client.js +311 -0
  50. package/dist/platforms/bilibili/web/commands.js +783 -0
  51. package/dist/platforms/bilibili/web/ddddocr.js +342 -0
  52. package/dist/platforms/bilibili/web/gaia.js +130 -0
  53. package/dist/platforms/bilibili/web/geetest-manual.js +154 -0
  54. package/dist/platforms/bilibili/web/geetest-vision.js +232 -0
  55. package/dist/platforms/bilibili/web/geetest.js +450 -0
  56. package/dist/platforms/bilibili/web/normalize.js +234 -0
  57. package/dist/platforms/bilibili/web/profile.js +135 -0
  58. package/dist/platforms/bilibili/web/resolve.js +112 -0
  59. package/dist/platforms/bilibili/web/sign.js +223 -0
  60. package/dist/platforms/bilibili/web/upos.js +102 -0
  61. package/dist/platforms/douyin/index.js +142 -0
  62. package/dist/platforms/douyin/web/api.js +863 -0
  63. package/dist/platforms/douyin/web/client.js +413 -0
  64. package/dist/platforms/douyin/web/commands.js +712 -0
  65. package/dist/platforms/douyin/web/creator.js +601 -0
  66. package/dist/platforms/douyin/web/crypto.js +247 -0
  67. package/dist/platforms/douyin/web/dtrait.js +190 -0
  68. package/dist/platforms/douyin/web/im.js +502 -0
  69. package/dist/platforms/douyin/web/image.js +5 -0
  70. package/dist/platforms/douyin/web/live.js +225 -0
  71. package/dist/platforms/douyin/web/mssdk.js +148 -0
  72. package/dist/platforms/douyin/web/normalize.js +326 -0
  73. package/dist/platforms/douyin/web/passport.js +1247 -0
  74. package/dist/platforms/douyin/web/profile.js +221 -0
  75. package/dist/platforms/douyin/web/proto.js +26 -0
  76. package/dist/platforms/douyin/web/resolve.js +88 -0
  77. package/dist/platforms/douyin/web/sign.js +436 -0
  78. package/dist/platforms/douyin/web/tos.js +78 -0
  79. package/dist/platforms/index.js +17 -0
  80. package/dist/platforms/jd/index.js +67 -0
  81. package/dist/platforms/jd/web/aks.js +115 -0
  82. package/dist/platforms/jd/web/api.js +549 -0
  83. package/dist/platforms/jd/web/chat.js +132 -0
  84. package/dist/platforms/jd/web/client.js +470 -0
  85. package/dist/platforms/jd/web/commands.js +557 -0
  86. package/dist/platforms/jd/web/jcap/helper.js +90 -0
  87. package/dist/platforms/jd/web/jcap/host.js +107 -0
  88. package/dist/platforms/jd/web/jcap/lsd.js +300 -0
  89. package/dist/platforms/jd/web/jcap/solver.js +995 -0
  90. package/dist/platforms/jd/web/jcap.js +150 -0
  91. package/dist/platforms/jd/web/js.js +420 -0
  92. package/dist/platforms/jd/web/login.js +775 -0
  93. package/dist/platforms/jd/web/normalize.js +297 -0
  94. package/dist/platforms/jd/web/profile.js +256 -0
  95. package/dist/platforms/jd/web/util.js +175 -0
  96. package/dist/platforms/jd/web/webm.js +133 -0
  97. package/dist/platforms/kuaishou/index.js +98 -0
  98. package/dist/platforms/kuaishou/web/api.js +694 -0
  99. package/dist/platforms/kuaishou/web/captcha-crypto.js +134 -0
  100. package/dist/platforms/kuaishou/web/captcha-fp.js +180 -0
  101. package/dist/platforms/kuaishou/web/captcha.js +273 -0
  102. package/dist/platforms/kuaishou/web/client.js +487 -0
  103. package/dist/platforms/kuaishou/web/commands.js +863 -0
  104. package/dist/platforms/kuaishou/web/gap.js +144 -0
  105. package/dist/platforms/kuaishou/web/gdfp.js +376 -0
  106. package/dist/platforms/kuaishou/web/gql.js +11 -0
  107. package/dist/platforms/kuaishou/web/live.js +125 -0
  108. package/dist/platforms/kuaishou/web/normalize.js +241 -0
  109. package/dist/platforms/kuaishou/web/oracle.js +329 -0
  110. package/dist/platforms/kuaishou/web/profile.js +259 -0
  111. package/dist/platforms/kuaishou/web/resolve.js +84 -0
  112. package/dist/platforms/kuaishou/web/session.js +592 -0
  113. package/dist/platforms/kuaishou/web/sign.js +568 -0
  114. package/dist/platforms/taobao/index.js +56 -0
  115. package/dist/platforms/taobao/web/api.js +96 -0
  116. package/dist/platforms/taobao/web/client.js +102 -0
  117. package/dist/platforms/taobao/web/commands.js +172 -0
  118. package/dist/platforms/taobao/web/im.js +68 -0
  119. package/dist/platforms/taobao/web/normalize.js +103 -0
  120. package/dist/platforms/taobao/web/profile.js +85 -0
  121. package/dist/platforms/taobao/web/resolve.js +51 -0
  122. package/dist/platforms/taobao/web/sign.js +35 -0
  123. package/dist/platforms/tiktok/index.js +120 -0
  124. package/dist/platforms/tiktok/web/api.js +1234 -0
  125. package/dist/platforms/tiktok/web/client.js +362 -0
  126. package/dist/platforms/tiktok/web/commands.js +821 -0
  127. package/dist/platforms/tiktok/web/im.js +133 -0
  128. package/dist/platforms/tiktok/web/jsrun.js +126 -0
  129. package/dist/platforms/tiktok/web/normalize.js +286 -0
  130. package/dist/platforms/tiktok/web/profile.js +169 -0
  131. package/dist/platforms/tiktok/web/resolve.js +156 -0
  132. package/dist/platforms/tiktok/web/sign.js +585 -0
  133. package/dist/platforms/tiktok/web/upload.js +805 -0
  134. package/dist/platforms/tiktok/web/wire.js +490 -0
  135. package/dist/platforms/weibo/index.js +91 -0
  136. package/dist/platforms/weibo/web/api.js +206 -0
  137. package/dist/platforms/weibo/web/client.js +155 -0
  138. package/dist/platforms/weibo/web/commands.js +202 -0
  139. package/dist/platforms/weibo/web/normalize.js +137 -0
  140. package/dist/platforms/weibo/web/profile.js +246 -0
  141. package/dist/platforms/weibo/web/resolve.js +60 -0
  142. package/dist/platforms/weibo/web/sign.js +85 -0
  143. package/dist/platforms/x/index.js +107 -0
  144. package/dist/platforms/x/web/api.js +443 -0
  145. package/dist/platforms/x/web/article.js +212 -0
  146. package/dist/platforms/x/web/client.js +202 -0
  147. package/dist/platforms/x/web/commands.js +363 -0
  148. package/dist/platforms/x/web/graphql.js +108 -0
  149. package/dist/platforms/x/web/normalize.js +235 -0
  150. package/dist/platforms/x/web/profile.js +99 -0
  151. package/dist/platforms/x/web/resolve.js +44 -0
  152. package/dist/platforms/x/web/transaction.js +171 -0
  153. package/dist/platforms/xhs/index.js +101 -0
  154. package/dist/platforms/xhs/web/api.js +278 -0
  155. package/dist/platforms/xhs/web/client.js +540 -0
  156. package/dist/platforms/xhs/web/commands.js +1046 -0
  157. package/dist/platforms/xhs/web/creator-api.js +609 -0
  158. package/dist/platforms/xhs/web/creator.js +203 -0
  159. package/dist/platforms/xhs/web/js.js +194 -0
  160. package/dist/platforms/xhs/web/login.js +230 -0
  161. package/dist/platforms/xhs/web/normalize.js +166 -0
  162. package/dist/platforms/xhs/web/profile.js +127 -0
  163. package/dist/platforms/xhs/web/push.js +361 -0
  164. package/dist/platforms/xhs/web/resolve.js +69 -0
  165. package/dist/platforms/xhs/web/state.js +368 -0
  166. package/dist/platforms/xianyu/index.js +59 -0
  167. package/dist/platforms/xianyu/web/api.js +312 -0
  168. package/dist/platforms/xianyu/web/client.js +134 -0
  169. package/dist/platforms/xianyu/web/commands.js +305 -0
  170. package/dist/platforms/xianyu/web/im.js +73 -0
  171. package/dist/platforms/xianyu/web/normalize.js +123 -0
  172. package/dist/platforms/xianyu/web/profile.js +146 -0
  173. package/dist/platforms/xianyu/web/resolve.js +48 -0
  174. package/dist/platforms/xianyu/web/sign.js +79 -0
  175. package/package.json +77 -4
  176. package/static/douyin/Live.proto +194 -0
  177. package/static/douyin/Request.proto +89 -0
  178. package/static/douyin/Response.proto +46 -0
  179. package/static/douyin/acrawler_runtime/ac_vm.js +2 -0
  180. package/static/douyin/acrawler_runtime/browser_window_shape.json +1 -0
  181. package/static/douyin/acrawler_runtime/canvas_actual_exact.json +1 -0
  182. package/static/douyin/acrawler_runtime/run_ac_node.js +1005 -0
  183. package/static/douyin/acrawler_runtime/runner_window_keys_baseline.txt +240 -0
  184. package/static/douyin/challenge_profile.json +801 -0
  185. package/static/douyin/challenge_template_runner.js +217 -0
  186. package/static/douyin/dtrait_profile.json +66 -0
  187. package/static/douyin/mstoken_common_profile.json +1 -0
  188. package/static/douyin/mstoken_profile.json +214 -0
  189. package/static/jd/h5st5_env.js +750 -0
  190. package/static/jd/h5st5_lib.js +5 -0
  191. package/static/jd/h5st5_server.js +49 -0
  192. package/static/jd/jcap/env/env_core.js +512 -0
  193. package/static/jd/jcap/env/run.js +1307 -0
  194. package/static/jd/jcap/run/jcap_ujb96b.js +39 -0
  195. package/static/jd/package.json +4 -0
  196. package/static/jd/pc_tk_lib.js +1 -0
  197. package/static/jd/pc_tk_server.js +63 -0
  198. package/static/jd/summer_cryptico_runner.js +50 -0
  199. package/static/jd/webm/env/run.js +453 -0
  200. package/static/jd/webm/run/jdwebm-riskhandle.js +49 -0
  201. package/static/kuaishou/bundles/weapon/kwf-0.0.2.2cee19b4b7dec496.js +1 -0
  202. package/static/kuaishou/bundles/weapon/kws-0-0.0.1-obfuscated.4b7f3de1ab0ddcc2.js +1 -0
  203. package/static/kuaishou/bundles/weapon/kws-1-0.0.1-obfuscated.346ebdb1c78df316.js +1 -0
  204. package/static/kuaishou/bundles/weapon/kws-10-0.0.1-obfuscated.a33db41897b983af.js +1 -0
  205. package/static/kuaishou/bundles/weapon/kws-11-0.0.1-obfuscated.5e0a90af726d8a7e.js +1 -0
  206. package/static/kuaishou/bundles/weapon/kws-12-0.0.1-obfuscated.20ea29345706ec8c.js +1 -0
  207. package/static/kuaishou/bundles/weapon/kws-13-0.0.1-obfuscated.6b74e9640ff18648.js +1 -0
  208. package/static/kuaishou/bundles/weapon/kws-14-0.0.1-obfuscated.551e4429d156bf66.js +1 -0
  209. package/static/kuaishou/bundles/weapon/kws-15-0.0.1-obfuscated.8625b087aaba4a60.js +1 -0
  210. package/static/kuaishou/bundles/weapon/kws-16-0.0.1-obfuscated.d5ffa4020f3be99a.js +1 -0
  211. package/static/kuaishou/bundles/weapon/kws-17-0.0.1-obfuscated.6d13e19b22f50a80.js +1 -0
  212. package/static/kuaishou/bundles/weapon/kws-18-0.0.1-obfuscated.6d31405044166289.js +1 -0
  213. package/static/kuaishou/bundles/weapon/kws-19-0.0.1-obfuscated.a9a8d925942f19e4.js +1 -0
  214. package/static/kuaishou/bundles/weapon/kws-2-0.0.1-obfuscated.b849a136ae4a6b3e.js +1 -0
  215. package/static/kuaishou/bundles/weapon/kws-3-0.0.1-obfuscated.f9e77ebf6186e2ac.js +1 -0
  216. package/static/kuaishou/bundles/weapon/kws-4-0.0.1-obfuscated.2c3c155aa52ceb0e.js +1 -0
  217. package/static/kuaishou/bundles/weapon/kws-5-0.0.1-obfuscated.4e553d17691b3c5a.js +1 -0
  218. package/static/kuaishou/bundles/weapon/kws-6-0.0.1-obfuscated.f73ddd3ff13e1217.js +1 -0
  219. package/static/kuaishou/bundles/weapon/kws-7-0.0.1-obfuscated.1628b8729beaab7e.js +1 -0
  220. package/static/kuaishou/bundles/weapon/kws-8-0.0.1-obfuscated.6da6baef7aa81fff.js +1 -0
  221. package/static/kuaishou/bundles/weapon/kws-9-0.0.1-obfuscated.8645d55e5323b743.js +1 -0
  222. package/static/kuaishou/fixtures/current_follow_script_813.network-response +2 -0
  223. package/static/kuaishou/fixtures/live_ws_maps.json +61 -0
  224. package/static/kuaishou/fixtures/live_ws_proto.json +1342 -0
  225. package/static/kuaishou/js/cp-kwf.js +1 -0
  226. package/static/kuaishou/tools/kwf_oracle.js +799 -0
  227. package/static/kuaishou/tools/kws_oracle.js +885 -0
  228. package/static/kuaishou/tools/like_token_oracle.js +70 -0
  229. package/static/taobao/taobao_js_20260407.js +570 -0
  230. package/static/tiktok/Tiktok_Request.json +597 -0
  231. package/static/tiktok/package.json +3 -0
  232. package/static/tiktok/shop_bsid/core.js +1 -0
  233. package/static/tiktok/shop_bsid/env_core.js +512 -0
  234. package/static/tiktok/shop_bsid/loader.js +1 -0
  235. package/static/tiktok/shop_bsid/run.js +753 -0
  236. package/static/tiktok/shop_bsid/sign.js +100 -0
  237. package/static/tiktok/shop_bsid/webmssdk.js +1 -0
  238. package/static/tiktok/shop_bsid/webmssdk_ex.js +1 -0
  239. package/static/tiktok/signing/env/env_core.js +512 -0
  240. package/static/tiktok/signing/env/sign.js +455 -0
  241. package/static/tiktok/signing/sdk_config.json +230 -0
  242. package/static/tiktok/signing/source/webmssdk.js +1 -0
  243. package/static/tiktok/signing/source/webmssdk_ex.js +1 -0
  244. package/static/tiktok/signing/source/webmssdk_legacy.js +1 -0
  245. package/static/x/graphql.json +7777 -0
  246. package/static/x/transaction_l1.json +12 -0
  247. package/static/xhs/package.json +3 -0
  248. package/static/xhs/xhs_core/js/b1.js +210 -0
  249. package/static/xhs/xhs_core/js/mns.js +340 -0
  250. package/static/xhs/xhs_core/js/mns_0101_keystream.json +5 -0
  251. package/static/xhs/xhs_core/js/mns_keystreams.json +1 -0
  252. package/static/xhs/xhs_core/js/sign.js +225 -0
  253. package/static/xhs/xhs_core/js/websectiga_cli.js +220 -0
  254. package/static/xhs/xhs_core/js/websectiga_env.js +512 -0
  255. package/static/xhs/xhs_core/js/xs_common.js +79 -0
  256. package/static/xhs/xhs_creator/js/profile.js +115 -0
  257. package/static/xhs/xhs_creator/js/rap_fingerprint_creator.json +6 -0
  258. package/static/xhs/xhs_creator/js/reference_profile.json +282 -0
  259. package/static/xhs/xhs_creator/js/xhs_creator_sign.js +29 -0
  260. package/static/xhs/xhs_creator/js/xhs_creator_signature.js +23 -0
  261. package/static/xhs/xhs_pc/js/aes_decrypt.js +22 -0
  262. package/static/xhs/xhs_pc/js/aes_encrypt.js +30 -0
  263. package/static/xhs/xhs_pc/js/b1.js +9 -0
  264. package/static/xhs/xhs_pc/js/deflate.js +320 -0
  265. package/static/xhs/xhs_pc/js/mns.js +4 -0
  266. package/static/xhs/xhs_pc/js/profile.js +141 -0
  267. package/static/xhs/xhs_pc/js/rap.js +173 -0
  268. package/static/xhs/xhs_pc/js/rap_cli.js +30 -0
  269. package/static/xhs/xhs_pc/js/rap_crypto.js +73 -0
  270. package/static/xhs/xhs_pc/js/rap_fingerprint_template.json +8 -0
  271. package/static/xhs/xhs_pc/js/reference_profile.json +262 -0
  272. package/static/xhs/xhs_pc/js/sign.js +6 -0
  273. package/static/xhs/xhs_pc/js/web_ssk.js +82 -0
  274. package/static/xhs/xhs_pc/js/xs_common.js +4 -0
  275. package/static/xianyu/et_f.js +2 -0
  276. package/static/xianyu/gen_tfstk.js +410 -0
  277. package/static/xianyu/goofish_js_version_2.js +568 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 cv-cat
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.
package/README.en.md ADDED
@@ -0,0 +1,177 @@
1
+ <div align="center">
2
+
3
+ <img src="assets/hero.svg" width="100%" alt="Specific AI — One command. Every platform.">
4
+
5
+ <br>
6
+
7
+ **One command. Ten platforms.**<br>
8
+ RedNote (Xiaohongshu) · Douyin · TikTok · Bilibili · Kuaishou · Weibo · Xianyu · Taobao · JD.com · X
9
+ <br>
10
+ <sub>Coming soon: Instagram · YouTube · Facebook · Zhihu · WeChat Official Accounts · Toutiao · Poizon (Dewu) · Pinduoduo · Meituan · Dianping</sub>
11
+
12
+ <br>
13
+
14
+ [![npm](https://img.shields.io/npm/v/specific-ai-cli?style=for-the-badge&logo=npm&color=CB3837)](https://www.npmjs.com/package/specific-ai-cli)
15
+ [![License: MIT](https://img.shields.io/badge/license-MIT-A6E3A1?style=for-the-badge)](LICENSE)
16
+ [![Node](https://img.shields.io/badge/node-22%20%7C%2024%20%7C%2026-339933?style=for-the-badge&logo=nodedotjs&logoColor=white)](package.json)
17
+ [![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](tsconfig.json)
18
+ [![Platforms](https://img.shields.io/badge/platforms-10-F38BA8?style=for-the-badge)](docs/platforms/README.md)
19
+ [![Agent Ready](https://img.shields.io/badge/AI%20Agent-ready-CBA6F7?style=for-the-badge)](.claude/skills/specific-ai/SKILL.md)
20
+
21
+ [简体中文](README.md) · **English** · [繁體中文](README.zh-TW.md) · [日本語](README.ja.md) · [한국어](README.ko.md)
22
+
23
+ [Quick start](docs/guide/quick-start.md) · [Capabilities](docs/capabilities.md) · [Platforms](docs/platforms/README.md) · [Examples](docs/examples/README.md) · [For agents](.claude/skills/specific-ai/SKILL.md)
24
+
25
+ </div>
26
+
27
+ <br>
28
+
29
+ > Every platform has its own APIs, request signing, login flow, and data format. **Specific AI brings them into one interface**: one command vocabulary, one JSON shape, and one home for your logins. To switch platforms, change a single word.
30
+
31
+
32
+ ## ✨ What is Specific AI
33
+
34
+ Specific AI is a command-line tool that drives the web endpoints of 10 major Chinese and global platforms through **one unified syntax**: search, details, comments, users, feeds, downloads, publishing, direct messages, live-stream chat and more.
35
+
36
+ ```bash
37
+ specific-ai xhs item search 露营 --sort latest
38
+ specific-ai douyin item search 露营 --sort latest
39
+ specific-ai bilibili item search 露营 --sort latest
40
+ specific-ai x item search camping --sort latest
41
+ ```
42
+
43
+ Four platforms, four nearly identical commands, and JSON output with **the same structure**. Notes, posts, videos and tweets are all just `item`; searching is always `search`; liking is always `like`. Learn it once, and you can use all ten platforms.
44
+
45
+ <p align="center">
46
+ <img src="assets/platforms.svg" width="100%" alt="10 supported platforms and 10 more in progress">
47
+ </p>
48
+
49
+ ## 🚀 Why Specific AI
50
+
51
+ <table>
52
+ <tr>
53
+ <td width="50%" valign="top">
54
+
55
+ ### 🧭 Same meaning, same name
56
+ A capability that means the same thing uses **the same command, the same options and the same output** on every platform. Reach for a platform's native term (`note`, `aweme`, `tweet`…) and specific-ai will tell you which word to use instead.
57
+
58
+ </td>
59
+ <td width="50%" valign="top">
60
+
61
+ ### 📦 Node is all you need
62
+ No Python, no compiler, no system dependencies. Every native dependency ships prebuilt binaries covering x64 / arm64 on Windows, macOS and Linux (musl included), and all **8 target systems** are smoke-tested one by one in CI.
63
+
64
+ </td>
65
+ </tr>
66
+ <tr>
67
+ <td valign="top">
68
+
69
+ ### 🤖 Built for AI agents
70
+ stdout carries nothing but JSON, exit codes are stable, and errors come with the next command to run. `specific-ai platforms` prints the complete list of capabilities. Ships with an [agent skill](.claude/skills/specific-ai/SKILL.md) and [llms.txt](llms.txt).
71
+
72
+ </td>
73
+ <td valign="top">
74
+
75
+ ### 🔐 Your logins never leave your machine
76
+ QR code, SMS and cookie import are all supported. Credentials are isolated per **platform × endpoint × account** under `~/.specific-ai/` (0700 / 0600), and you can switch between accounts at any time. No data is collected or uploaded, and there is no telemetry.
77
+
78
+ </td>
79
+ </tr>
80
+ <tr>
81
+ <td valign="top">
82
+
83
+ ### 🧪 Byte-for-byte faithful to upstream
84
+ The URL, header order, cookies, body and signature of every request are **compared byte for byte** against the upstream implementation, with randomness and the clock pinned. 560+ golden files and 940+ offline tests guard every change.
85
+
86
+ </td>
87
+ <td valign="top">
88
+
89
+ ### 🛡️ A browser-grade network stack
90
+ TLS / HTTP2 fingerprints that match real Chrome, upstream signing JS running unmodified in a sandbox, and slider and click-to-select CAPTCHAs solved automatically with local ONNX and OpenCV.
91
+
92
+ </td>
93
+ </tr>
94
+ </table>
95
+
96
+ ## 📊 By the numbers
97
+
98
+ <div align="center">
99
+
100
+ | 🚌 Platforms | ⌨️ Implemented commands | 🧪 Golden files | ✅ Offline tests | 💻 Target systems |
101
+ |:---:|:---:|:---:|:---:|:---:|
102
+ | **10** | **300+** | **560+** | **940+** | **8** |
103
+
104
+ </div>
105
+
106
+ ## 🏗️ Architecture
107
+
108
+ <p align="center">
109
+ <img src="assets/architecture.svg" width="100%" alt="specific-ai architecture">
110
+ </p>
111
+
112
+ - **One registry drives everything**: command parsing, the four levels of `--help`, `specific-ai platforms` and the [capability matrix](docs/capabilities.md) are all generated from the same registry, so they can never contradict each other.
113
+ - **One platform, one set of files**: `client` handles sessions and signing, `api` maps one-to-one onto upstream methods, `normalize` turns raw data into the unified types, and `resolve` lets IDs, links, share short links and `me` all work as arguments.
114
+ - **Extensible**: the spec reserves room for app / pc endpoints; non-JS upstreams will plug in through the provider protocol.
115
+
116
+ ## 🤖 Built for AI agents
117
+
118
+ specific-ai was designed from day one to be called by programs:
119
+
120
+ ```bash
121
+ specific-ai platforms douyin | jq '.data.commands[] | select(.status=="implemented") | .resource + " " + .action'
122
+ ```
123
+
124
+ - **Self-describing**: the login requirements, implementation status and upstream support of every platform and every command are one command away.
125
+ - **Predictable**: success and failure share the same envelope, `{ ok, data, page, error }`; `error.hint` spells out the next command to run.
126
+ - **Chainable**: every output object carries an `id` and a `url`, so one command's result can be fed straight into the next.
127
+ - **Well-behaved**: dangerous operations require an explicit `-y`, posts can be published as visible only to you, and risk control is reported plainly as `RISK_CONTROL` — never silently retried.
128
+
129
+ Install the specific-ai skill into Claude Code, Cursor, Codex and other agents with one command:
130
+
131
+ ```bash
132
+ npx skills add Dearli666/specific-ai
133
+ ```
134
+
135
+ The skill loads on demand: a one-page overview, plus [sub-files](.claude/skills/specific-ai/SKILL.md) that are read only when a task touches a given platform or kind of work (collecting, publishing, live & DMs, troubleshooting). Safety rules are built in — logins stay with you, writes need confirmation, posts default to private, and it stops on risk control.
136
+
137
+ ## ⚡ On board in 30 seconds
138
+
139
+ ```bash
140
+ npm i -g specific-ai-cli
141
+
142
+ specific-ai doctor # check your environment
143
+ specific-ai bilibili auth login # log in by scanning a QR code
144
+ specific-ai bilibili item search 猫 --limit 20
145
+ ```
146
+
147
+ You can also use [Docker](docs/guide/docker.md) or install from source; see [Quick start](docs/guide/quick-start.md) for the full steps.
148
+
149
+ ## 📚 Documentation
150
+
151
+ The guides below are in Chinese.
152
+
153
+ | | |
154
+ |---|---|
155
+ | 🚀 [Quick start](docs/guide/quick-start.md) | From installation to your first data export |
156
+ | 🔑 [Login](docs/guide/login.md) · ⚙️ [Configuration](docs/guide/configuration.md) · 🐳 [Docker](docs/guide/docker.md) | QR code / cookies, multiple accounts, proxies, containers |
157
+ | 📤 [Output and errors](docs/guide/output.md) | Envelope, normalized types, pagination, exit codes |
158
+ | 🧭 [Platform guides](docs/platforms/README.md) · 🗂️ [Capability matrix](docs/capabilities.md) | What each platform supports and how to pass arguments |
159
+ | 🧪 [Example scripts](docs/examples/README.md) | Cross-platform search, exporting comments, backing up posts, recording live chat |
160
+ | 📐 [AGENTS.md](AGENTS.md) | The specific-ai spec itself |
161
+ | ❓ [FAQ](docs/guide/faq.md) | Why log in? What to do about risk control… |
162
+
163
+ ## 🤝 Contributing
164
+
165
+ Issues and PRs are welcome — new platforms, new commands, fixes for platform API changes, documentation improvements, all of it. Before you start, please read [CONTRIBUTING.md](.github/CONTRIBUTING.md) and [AGENTS.md](AGENTS.md) (spec first; every request needs a golden test). Please report security issues privately as described in [SECURITY.md](.github/SECURITY.md).
166
+
167
+
168
+ ## 📄 License
169
+
170
+ [MIT](LICENSE) © 2026 [cv-cat](https://github.com/cv-cat)
171
+
172
+ <div align="center">
173
+ <br>
174
+ <img src="assets/logo.svg" width="64" alt="specific-ai">
175
+ <br>
176
+ <sub>One command. Every platform. · 一个命令,连接每个平台</sub>
177
+ </div>
package/README.ja.md ADDED
@@ -0,0 +1,177 @@
1
+ <div align="center">
2
+
3
+ <img src="assets/hero.svg" width="100%" alt="Specific AI — ひとつのコマンドですべてのプラットフォームへ">
4
+
5
+ <br>
6
+
7
+ **ひとつのコマンドで、10 のプラットフォームへ。**<br>
8
+ 小紅書(RED) · 抖音 · TikTok · ビリビリ · 快手 · 微博 · 閑魚 · タオバオ · 京東 · X
9
+ <br>
10
+ <sub>まもなく対応:Instagram · YouTube · Facebook · 知乎 · WeChat 公式アカウント · 今日頭条 · 得物 · 拼多多 · 美団 · 大衆点評</sub>
11
+
12
+ <br>
13
+
14
+ [![npm](https://img.shields.io/npm/v/specific-ai-cli?style=for-the-badge&logo=npm&color=CB3837)](https://www.npmjs.com/package/specific-ai-cli)
15
+ [![License: MIT](https://img.shields.io/badge/license-MIT-A6E3A1?style=for-the-badge)](LICENSE)
16
+ [![Node](https://img.shields.io/badge/node-22%20%7C%2024%20%7C%2026-339933?style=for-the-badge&logo=nodedotjs&logoColor=white)](package.json)
17
+ [![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](tsconfig.json)
18
+ [![Platforms](https://img.shields.io/badge/platforms-10-F38BA8?style=for-the-badge)](docs/platforms/README.md)
19
+ [![Agent Ready](https://img.shields.io/badge/AI%20Agent-ready-CBA6F7?style=for-the-badge)](.claude/skills/specific-ai/SKILL.md)
20
+
21
+ [简体中文](README.md) · [English](README.en.md) · [繁體中文](README.zh-TW.md) · **日本語** · [한국어](README.ko.md)
22
+
23
+ [クイックスタート](docs/guide/quick-start.md) · [機能マトリクス](docs/capabilities.md) · [プラットフォーム別](docs/platforms/README.md) · [サンプル](docs/examples/README.md) · [エージェント向け](.claude/skills/specific-ai/SKILL.md)
24
+
25
+ </div>
26
+
27
+ <br>
28
+
29
+ > プラットフォームごとに、API も署名方式も、ログイン方法もデータ形式もバラバラ。**Specific AI はそれらをひとつの入口に統合します**。同じコマンド、同じ JSON、同じログイン情報ディレクトリ。プラットフォームを切り替えるときは、単語をひとつ変えるだけです。
30
+
31
+
32
+ ## ✨ Specific AI とは
33
+
34
+ Specific AIは、中国内外の主要 10 プラットフォームの web エンドポイントを**統一された構文**で操作できるコマンドラインツールです。検索、詳細、コメント、ユーザー、おすすめフィード、ダウンロード、投稿、DM、ライブ配信の弾幕コメント……。
35
+
36
+ ```bash
37
+ specific-ai xhs item search 露营 --sort latest
38
+ specific-ai douyin item search 露营 --sort latest
39
+ specific-ai bilibili item search 露营 --sort latest
40
+ specific-ai x item search camping --sort latest
41
+ ```
42
+
43
+ 4 つのプラットフォームに、ほぼ同じ 4 つのコマンド。出力される JSON は**すべて同じ構造**です。ノートも作品も動画もポストも、すべて `item`。検索は必ず `search`、いいねは必ず `like`。一度覚えれば、10 のプラットフォームすべてで使えます。
44
+
45
+ <p align="center">
46
+ <img src="assets/platforms.svg" width="100%" alt="対応済みの 10 プラットフォームと開発中の 10 プラットフォーム">
47
+ </p>
48
+
49
+ ## 🚀 Specific AI を選ぶ理由
50
+
51
+ <table>
52
+ <tr>
53
+ <td width="50%" valign="top">
54
+
55
+ ### 🧭 同じ意味には、同じ名前
56
+ 意味が同じ機能は、どのプラットフォームでも**同じコマンド、同じパラメータ、同じ出力**。プラットフォーム固有の呼び名(`note`、`aweme`、`tweet`……)を使ってしまっても大丈夫。どの単語を使えばいいか、specific-ai が教えてくれます。
57
+
58
+ </td>
59
+ <td width="50%" valign="top">
60
+
61
+ ### 📦 必要なのは Node だけ
62
+ Python もコンパイラも、システム依存のパッケージも不要です。ネイティブ依存はすべてビルド済みバイナリ付きで、Windows・macOS・Linux の x64 / arm64(musl を含む)をカバー。**8 つのターゲット環境**すべてで、CI がひとつずつスモークテストしています。
63
+
64
+ </td>
65
+ </tr>
66
+ <tr>
67
+ <td valign="top">
68
+
69
+ ### 🤖 AI エージェントのために生まれた
70
+ stdout には JSON だけ。終了コードは安定していて、エラーには次に実行すべきコマンドが添えられます。`specific-ai platforms` は全機能の一覧を出力します。[エージェント用スキル](.claude/skills/specific-ai/SKILL.md) と [llms.txt](llms.txt) を同梱しています。
71
+
72
+ </td>
73
+ <td valign="top">
74
+
75
+ ### 🔐 ログイン情報はあなたの PC の中だけに
76
+ QR コード、SMS、cookie のインポートに対応。認証情報は **プラットフォーム × エンドポイント × アカウント** ごとに `~/.specific-ai/`(0700 / 0600)に分けて保存され、複数のアカウントもいつでも切り替えられます。データの収集・送信は一切なく、テレメトリもありません。
77
+
78
+ </td>
79
+ </tr>
80
+ <tr>
81
+ <td valign="top">
82
+
83
+ ### 🧪 上流とバイト単位で一致
84
+ すべてのリクエストの URL、ヘッダー順、cookie、body、署名を、乱数と時刻を固定したうえで上流の実装と**1 バイトずつ突き合わせて**います。560+ 件のゴールデンデータと 940+ 件のオフラインテストが、あらゆる変更を見守ります。
85
+
86
+ </td>
87
+ <td valign="top">
88
+
89
+ ### 🛡️ ブラウザ級のネットワークスタック
90
+ 本物の Chrome と一致する TLS / HTTP2 フィンガープリント。上流の署名 JS は手を加えずにサンドボックスで実行し、スライダー型・クリック選択型の CAPTCHA はローカルの ONNX と OpenCV で自動認識します。
91
+
92
+ </td>
93
+ </tr>
94
+ </table>
95
+
96
+ ## 📊 数字で見る Specific AI
97
+
98
+ <div align="center">
99
+
100
+ | 🚌 プラットフォーム | ⌨️ 実装済みコマンド | 🧪 ゴールデンデータ | ✅ オフラインテスト | 💻 ターゲット環境 |
101
+ |:---:|:---:|:---:|:---:|:---:|
102
+ | **10** | **300+** | **560+** | **940+** | **8** |
103
+
104
+ </div>
105
+
106
+ ## 🏗️ アーキテクチャ
107
+
108
+ <p align="center">
109
+ <img src="assets/architecture.svg" width="100%" alt="specific-ai のアーキテクチャ">
110
+ </p>
111
+
112
+ - **ひとつのレジストリがすべてを動かす**:コマンド解析、4 階層の `--help`、`specific-ai platforms`、[機能マトリクス](docs/capabilities.md) はすべて同じレジストリから生成されるため、互いに食い違うことはありません。
113
+ - **1 プラットフォームに、1 セットのファイル**:`client` はセッションと署名を担当し、`api` は上流のメソッドと 1 対 1 で対応、`normalize` は生データを統一された型に変換し、`resolve` は ID・リンク・共有用短縮 URL・`me` のどれでも引数として使えるようにします。
114
+ - **拡張可能**:仕様には app / pc エンドポイントの枠があらかじめ用意されており、JS 以外の上流は provider プロトコルで接続する予定です。
115
+
116
+ ## 🤖 AI エージェントのために生まれた
117
+
118
+ specific-ai は最初の日から「プログラムに呼び出される」ことを前提に設計されています。
119
+
120
+ ```bash
121
+ specific-ai platforms douyin | jq '.data.commands[] | select(.status=="implemented") | .resource + " " + .action'
122
+ ```
123
+
124
+ - **自己記述的**:各プラットフォーム・各コマンドのログイン要否、実装状況、上流での対応度合いが、コマンドひとつで分かります。
125
+ - **予測可能**:成功も失敗も同じエンベロープ `{ ok, data, page, error }`。`error.hint` が次に実行すべきコマンドをそのまま示します。
126
+ - **つなげられる**:出力されるオブジェクトはすべて `id` と `url` を持つので、前のコマンドの結果をそのまま次のコマンドに渡せます。
127
+ - **節度がある**:危険な操作には明示的な `-y` が必須。投稿は自分だけに公開することもでき、リスク制御に引っかかったときは `RISK_CONTROL` とはっきり報告して、黙ってリトライすることはありません。
128
+
129
+ コマンドひとつで、specific-ai スキルを Claude Code・Cursor・Codex などのエージェントに入れられます:
130
+
131
+ ```bash
132
+ npx skills add Dearli666/specific-ai
133
+ ```
134
+
135
+ スキルは必要な分だけ読み込まれます。概要は 1 ページだけで、扱うプラットフォームや作業の種類(収集、投稿、ライブと DM、トラブル対応)に応じて[サブファイル](.claude/skills/specific-ai/SKILL.md)を読みます。安全のルールも組み込み済みです:ログインはあなたに任せる、書き込みは必ず確認、投稿は既定で非公開、リスク制御に当たったら止まる。
136
+
137
+ ## ⚡ 30 秒で乗車
138
+
139
+ ```bash
140
+ npm i -g specific-ai-cli
141
+
142
+ specific-ai doctor # 環境をチェック
143
+ specific-ai bilibili auth login # QR コードでログイン
144
+ specific-ai bilibili item search 猫 --limit 20
145
+ ```
146
+
147
+ [Docker](docs/guide/docker.md) やソースからのインストールも可能です。詳しい手順は [クイックスタート](docs/guide/quick-start.md) をご覧ください。
148
+
149
+ ## 📚 ドキュメント
150
+
151
+ 以下のドキュメントは中国語(簡体字)で書かれています。
152
+
153
+ | | |
154
+ |---|---|
155
+ | 🚀 [クイックスタート](docs/guide/quick-start.md) | インストールから最初のデータのエクスポートまで |
156
+ | 🔑 [ログイン](docs/guide/login.md) · ⚙️ [設定](docs/guide/configuration.md) · 🐳 [Docker](docs/guide/docker.md) | QR コード / cookie、複数アカウント、プロキシ、コンテナ |
157
+ | 📤 [出力とエラー処理](docs/guide/output.md) | エンベロープ、正規化された型、ページング、終了コード |
158
+ | 🧭 [プラットフォーム別ガイド](docs/platforms/README.md) · 🗂️ [機能マトリクス](docs/capabilities.md) | 各プラットフォームの対応状況と引数の渡し方 |
159
+ | 🧪 [サンプルスクリプト](docs/examples/README.md) | 横断検索、コメントのエクスポート、投稿のバックアップ、ライブ弾幕の記録 |
160
+ | 📐 [AGENTS.md](AGENTS.md) | specific-ai の仕様そのもの |
161
+ | ❓ [よくある質問](docs/guide/faq.md) | なぜログインが必要?リスク制御に引っかかったら?…… |
162
+
163
+ ## 🤝 コントリビュート
164
+
165
+ issue も PR も歓迎します。新しいプラットフォーム、新しいコマンド、プラットフォーム側の API 変更への対応、ドキュメントの改善、なんでもどうぞ。始める前に [CONTRIBUTING.md](.github/CONTRIBUTING.md) と [AGENTS.md](AGENTS.md) に目を通してください(仕様が先、リクエストには必ずゴールデンテストを)。セキュリティ上の問題は [SECURITY.md](.github/SECURITY.md) に従って非公開で報告してください。
166
+
167
+
168
+ ## 📄 License
169
+
170
+ [MIT](LICENSE) © 2026 [cv-cat](https://github.com/cv-cat)
171
+
172
+ <div align="center">
173
+ <br>
174
+ <img src="assets/logo.svg" width="64" alt="specific-ai">
175
+ <br>
176
+ <sub>ひとつのコマンドですべてのプラットフォームへ · One command. Every platform.</sub>
177
+ </div>
package/README.ko.md ADDED
@@ -0,0 +1,177 @@
1
+ <div align="center">
2
+
3
+ <img src="assets/hero.svg" width="100%" alt="Specific AI — 하나의 명령으로 모든 플랫폼을 연결">
4
+
5
+ <br>
6
+
7
+ **명령어 하나로, 10개 플랫폼까지.**<br>
8
+ 샤오훙수 · 더우인 · TikTok · 빌리빌리 · 콰이서우 · 웨이보 · 셴위 · 타오바오 · 징둥 · X
9
+ <br>
10
+ <sub>지원 예정: Instagram · YouTube · Facebook · 즈후 · 위챗 공식 계정 · 진르터우탸오 · 더우 · 핀둬둬 · 메이퇀 · 다중뎬핑</sub>
11
+
12
+ <br>
13
+
14
+ [![npm](https://img.shields.io/npm/v/specific-ai-cli?style=for-the-badge&logo=npm&color=CB3837)](https://www.npmjs.com/package/specific-ai-cli)
15
+ [![License: MIT](https://img.shields.io/badge/license-MIT-A6E3A1?style=for-the-badge)](LICENSE)
16
+ [![Node](https://img.shields.io/badge/node-22%20%7C%2024%20%7C%2026-339933?style=for-the-badge&logo=nodedotjs&logoColor=white)](package.json)
17
+ [![TypeScript](https://img.shields.io/badge/TypeScript-strict-3178C6?style=for-the-badge&logo=typescript&logoColor=white)](tsconfig.json)
18
+ [![Platforms](https://img.shields.io/badge/platforms-10-F38BA8?style=for-the-badge)](docs/platforms/README.md)
19
+ [![Agent Ready](https://img.shields.io/badge/AI%20Agent-ready-CBA6F7?style=for-the-badge)](.claude/skills/specific-ai/SKILL.md)
20
+
21
+ [简体中文](README.md) · [English](README.en.md) · [繁體中文](README.zh-TW.md) · [日本語](README.ja.md) · **한국어**
22
+
23
+ [빠른 시작](docs/guide/quick-start.md) · [기능 매트릭스](docs/capabilities.md) · [플랫폼별 안내](docs/platforms/README.md) · [예제](docs/examples/README.md) · [에이전트용](.claude/skills/specific-ai/SKILL.md)
24
+
25
+ </div>
26
+
27
+ <br>
28
+
29
+ > 플랫폼마다 API도, 서명 방식도, 로그인 방법도, 데이터 형식도 제각각입니다. **Specific AI는 이 모두를 하나의 인터페이스로 통합합니다**. 같은 명령어, 같은 JSON, 같은 로그인 정보 디렉터리. 플랫폼을 바꿀 때는 단어 하나만 바꾸면 됩니다.
30
+
31
+
32
+ ## ✨ Specific AI란?
33
+
34
+ Specific AI는 중국과 해외의 주요 플랫폼 10곳의 web 엔드포인트 기능을 **통일된 문법**으로 호출하는 커맨드라인 도구입니다. 검색, 상세 정보, 댓글, 사용자, 추천 피드, 다운로드, 게시, DM, 라이브 방송 탄막……
35
+
36
+ ```bash
37
+ specific-ai xhs item search 露营 --sort latest
38
+ specific-ai douyin item search 露营 --sort latest
39
+ specific-ai bilibili item search 露营 --sort latest
40
+ specific-ai x item search camping --sort latest
41
+ ```
42
+
43
+ 플랫폼 4곳, 거의 똑같은 명령어 4줄, 그리고 **같은 구조**의 JSON 출력. 노트, 작품, 동영상, 트윗 모두 `item`이고, 검색은 언제나 `search`, 좋아요는 언제나 `like`입니다. 한 번 배우면 10개 플랫폼 모두에서 쓸 수 있습니다.
44
+
45
+ <p align="center">
46
+ <img src="assets/platforms.svg" width="100%" alt="지원하는 10개 플랫폼과 개발 중인 10개 플랫폼">
47
+ </p>
48
+
49
+ ## 🚀 왜 Specific AI인가
50
+
51
+ <table>
52
+ <tr>
53
+ <td width="50%" valign="top">
54
+
55
+ ### 🧭 같은 의미, 같은 이름
56
+ 의미가 같은 기능은 모든 플랫폼에서 **같은 명령어, 같은 파라미터, 같은 출력**을 씁니다. 플랫폼 고유의 용어(`note`, `aweme`, `tweet`……)를 써도 괜찮습니다. 어떤 단어를 써야 하는지 Specific AI가 알려 줍니다.
57
+
58
+ </td>
59
+ <td width="50%" valign="top">
60
+
61
+ ### 📦 Node만 있으면 됩니다
62
+ Python도, 컴파일러도, 어떤 시스템 의존성도 필요 없습니다. 네이티브 의존성은 모두 사전 빌드된 바이너리를 제공하며 Windows, macOS, Linux의 x64 / arm64(musl 포함)를 지원합니다. **8개 대상 시스템** 모두 CI에서 하나하나 스모크 테스트를 거칩니다.
63
+
64
+ </td>
65
+ </tr>
66
+ <tr>
67
+ <td valign="top">
68
+
69
+ ### 🤖 AI 에이전트를 위한 설계
70
+ stdout에는 JSON만 나오고, 종료 코드는 안정적이며, 오류에는 다음에 실행할 명령어가 함께 담깁니다. `specific-ai platforms`는 전체 기능 목록을 출력합니다. [에이전트 스킬](.claude/skills/specific-ai/SKILL.md)과 [llms.txt](llms.txt)를 기본 제공합니다.
71
+
72
+ </td>
73
+ <td valign="top">
74
+
75
+ ### 🔐 로그인 정보는 내 컴퓨터에만
76
+ QR 코드, SMS, cookie 가져오기를 모두 지원합니다. 인증 정보는 **플랫폼 × 엔드포인트 × 계정** 단위로 `~/.specific-ai/`(0700 / 0600)에 분리 저장되며, 여러 계정을 언제든 전환할 수 있습니다. 어떤 데이터도 수집하거나 업로드하지 않고, 텔레메트리도 없습니다.
77
+
78
+ </td>
79
+ </tr>
80
+ <tr>
81
+ <td valign="top">
82
+
83
+ ### 🧪 업스트림과 바이트 단위로 일치
84
+ 모든 요청의 URL, 헤더 순서, cookie, body, 서명을 난수와 시계를 고정한 상태에서 업스트림 구현과 **바이트 단위로 대조**합니다. 560+건의 골든 데이터와 940+개의 오프라인 테스트가 모든 변경을 지킵니다.
85
+
86
+ </td>
87
+ <td valign="top">
88
+
89
+ ### 🛡️ 브라우저급 네트워크 스택
90
+ 실제 Chrome과 동일한 TLS / HTTP2 핑거프린트. 업스트림의 서명 JS는 수정 없이 그대로 샌드박스에서 실행되고, 슬라이더·클릭 선택형 캡차는 로컬 ONNX와 OpenCV로 자동 인식합니다.
91
+
92
+ </td>
93
+ </tr>
94
+ </table>
95
+
96
+ ## 📊 숫자로 보는 Specific AI
97
+
98
+ <div align="center">
99
+
100
+ | 🚌 플랫폼 | ⌨️ 구현된 명령어 | 🧪 골든 데이터 | ✅ 오프라인 테스트 | 💻 대상 시스템 |
101
+ |:---:|:---:|:---:|:---:|:---:|
102
+ | **10** | **300+** | **560+** | **940+** | **8** |
103
+
104
+ </div>
105
+
106
+ ## 🏗️ 아키텍처
107
+
108
+ <p align="center">
109
+ <img src="assets/architecture.svg" width="100%" alt="specific-ai 아키텍처">
110
+ </p>
111
+
112
+ - **하나의 레지스트리가 모든 것을 움직입니다**: 명령어 파싱, 4단계 `--help`, `specific-ai platforms`, [기능 매트릭스](docs/capabilities.md)가 모두 같은 레지스트리에서 생성되므로 서로 어긋날 일이 없습니다.
113
+ - **플랫폼 하나에 파일 한 세트**: `client`는 세션과 서명을 맡고, `api`는 업스트림 메서드와 일대일로 대응하며, `normalize`는 원본 데이터를 통일된 타입으로 바꾸고, `resolve`는 ID, 링크, 공유용 단축 링크, `me`를 모두 인자로 쓸 수 있게 합니다.
114
+ - **확장 가능**: 명세에 app / pc 엔드포인트 자리가 마련되어 있으며, JS가 아닌 업스트림은 provider 프로토콜로 연결될 예정입니다.
115
+
116
+ ## 🤖 AI 에이전트를 위한 설계
117
+
118
+ Specific AI는 첫날부터 '프로그램이 호출하는 도구'로 설계되었습니다.
119
+
120
+ ```bash
121
+ specific-ai platforms douyin | jq '.data.commands[] | select(.status=="implemented") | .resource + " " + .action'
122
+ ```
123
+
124
+ - **자기 기술적**: 플랫폼별, 명령어별 로그인 요구 사항, 구현 상태, 업스트림 지원 수준을 명령어 하나로 확인할 수 있습니다.
125
+ - **예측 가능**: 성공과 실패 모두 같은 엔벨로프 `{ ok, data, page, error }`를 쓰며, `error.hint`가 다음에 실행할 명령어를 바로 알려 줍니다.
126
+ - **연결 가능**: 모든 출력 객체에 `id`와 `url`이 들어 있어, 앞 명령어의 결과를 그대로 다음 명령어에 넘길 수 있습니다.
127
+ - **절제**: 위험한 작업에는 반드시 명시적인 `-y`가 필요하고, 게시물은 나만 보기로 올릴 수 있으며, 리스크 컨트롤에 걸리면 `RISK_CONTROL`로 분명히 알리고 몰래 재시도하지 않습니다.
128
+
129
+ 명령어 하나로 specific-ai 스킬을 Claude Code, Cursor, Codex 등 에이전트에 설치할 수 있습니다:
130
+
131
+ ```bash
132
+ npx skills add Dearli666/specific-ai
133
+ ```
134
+
135
+ 스킬은 필요한 만큼만 불러옵니다. 개요는 한 페이지뿐이고, 다루는 플랫폼과 작업 종류(수집, 게시, 라이브·DM, 문제 해결)에 따라 [하위 파일](.claude/skills/specific-ai/SKILL.md)만 읽습니다. 안전 규칙도 내장되어 있습니다: 로그인은 사용자에게 맡기고, 쓰기 작업은 먼저 확인하며, 게시는 기본적으로 비공개, 리스크 컨트롤을 만나면 멈춥니다.
136
+
137
+ ## ⚡ 30초 만에 탑승
138
+
139
+ ```bash
140
+ npm i -g specific-ai-cli
141
+
142
+ specific-ai doctor # 환경 점검
143
+ specific-ai bilibili auth login # QR 코드로 로그인
144
+ specific-ai bilibili item search 猫 --limit 20
145
+ ```
146
+
147
+ [Docker](docs/guide/docker.md)나 소스에서 설치할 수도 있습니다. 전체 절차는 [빠른 시작](docs/guide/quick-start.md)을 참고하세요.
148
+
149
+ ## 📚 문서
150
+
151
+ 아래 문서는 중국어(간체)로 작성되어 있습니다.
152
+
153
+ | | |
154
+ |---|---|
155
+ | 🚀 [빠른 시작](docs/guide/quick-start.md) | 설치부터 첫 데이터 내보내기까지 |
156
+ | 🔑 [로그인](docs/guide/login.md) · ⚙️ [설정](docs/guide/configuration.md) · 🐳 [Docker](docs/guide/docker.md) | QR 코드 / cookie, 다중 계정, 프록시, 컨테이너 |
157
+ | 📤 [출력과 오류 처리](docs/guide/output.md) | 엔벨로프, 정규화 타입, 페이지네이션, 종료 코드 |
158
+ | 🧭 [플랫폼별 안내](docs/platforms/README.md) · 🗂️ [기능 매트릭스](docs/capabilities.md) | 플랫폼마다 무엇을 지원하는지, 인자는 어떻게 넘기는지 |
159
+ | 🧪 [예제 스크립트](docs/examples/README.md) | 크로스 플랫폼 검색, 댓글 내보내기, 게시물 백업, 라이브 탄막 기록 |
160
+ | 📐 [AGENTS.md](AGENTS.md) | specific-ai 명세 그 자체 |
161
+ | ❓ [자주 묻는 질문](docs/guide/faq.md) | 왜 로그인해야 하나요? 리스크 컨트롤에 걸리면 어떻게 하나요?…… |
162
+
163
+ ## 🤝 기여하기
164
+
165
+ issue와 PR 모두 환영합니다. 새 플랫폼, 새 명령어, 플랫폼 API 변경 대응, 문서 개선 등 무엇이든 좋습니다. 시작하기 전에 [CONTRIBUTING.md](.github/CONTRIBUTING.md)와 [AGENTS.md](AGENTS.md)를 읽어 주세요(명세가 먼저이며, 요청에는 반드시 골든 테스트가 있어야 합니다). 보안 문제는 [SECURITY.md](.github/SECURITY.md)에 따라 비공개로 제보해 주세요.
166
+
167
+
168
+ ## 📄 License
169
+
170
+ [MIT](LICENSE) © 2026 [cv-cat](https://github.com/cv-cat)
171
+
172
+ <div align="center">
173
+ <br>
174
+ <img src="assets/logo.svg" width="64" alt="specific-ai">
175
+ <br>
176
+ <sub>하나의 명령으로 모든 플랫폼을 연결 · One command. Every platform.</sub>
177
+ </div>