publishport-opencli 1.0.0 → 1.0.2

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 (333) hide show
  1. package/README.md +61 -61
  2. package/README.zh-CN.md +68 -68
  3. package/cli-manifest.json +954 -61
  4. package/clis/1688/shared.js +2 -2
  5. package/clis/36kr/news.js +1 -1
  6. package/clis/_atlassian/shared.js +1 -1
  7. package/clis/_shared/article/auth.js +1 -1
  8. package/clis/_shared/article/publish.js +1 -1
  9. package/clis/_shared/content-guard.js +1 -1
  10. package/clis/_shared/self-hosted-sites.js +2 -0
  11. package/clis/_shared/site-auth.js +1 -1
  12. package/clis/_shared/token-auth.js +2 -2
  13. package/clis/_shared/video-publish.js +1 -1
  14. package/clis/aibase/news.js +1 -1
  15. package/clis/amazon/shared.js +2 -2
  16. package/clis/antigravity/SKILL.md +12 -12
  17. package/clis/antigravity/storage.js +1 -1
  18. package/clis/apple-podcasts/episodes.js +1 -1
  19. package/clis/archive/item.js +1 -1
  20. package/clis/archive/search.js +1 -1
  21. package/clis/archive/snapshots.js +1 -1
  22. package/clis/archive/wayback.js +1 -1
  23. package/clis/arxiv/author.js +1 -1
  24. package/clis/baijiahao/publish.js +1 -1
  25. package/clis/bbc/utils.js +1 -1
  26. package/clis/bloomberg/businessweek.js +1 -1
  27. package/clis/bloomberg/utils.js +1 -1
  28. package/clis/booking/search.js +1 -1
  29. package/clis/boss/utils.js +1 -1
  30. package/clis/chatgpt/ask.js +1 -1
  31. package/clis/chatgpt/detail.js +1 -1
  32. package/clis/chatgpt/history.js +1 -1
  33. package/clis/chatgpt/project-file-add.js +1 -1
  34. package/clis/chatgpt/project-list.js +1 -1
  35. package/clis/chatgpt/utils.js +2 -2
  36. package/clis/chess/utils.js +1 -1
  37. package/clis/claude/ask.js +1 -1
  38. package/clis/claude/history.js +1 -1
  39. package/clis/claude/utils.js +1 -1
  40. package/clis/codex/extract-diff.js +1 -1
  41. package/clis/coingecko/coin.js +1 -1
  42. package/clis/crates/utils.js +1 -1
  43. package/clis/csdn/stats.js +1 -1
  44. package/clis/dblp/utils.js +1 -1
  45. package/clis/defillama/utils.js +1 -1
  46. package/clis/devto/publish.js +1 -1
  47. package/clis/discord-app/utils.js +1 -1
  48. package/clis/dockerhub/utils.js +1 -1
  49. package/clis/douban/utils.js +1 -1
  50. package/clis/douyin/_shared/tos-upload.js +1 -1
  51. package/clis/douyin/hashtag.js +1 -1
  52. package/clis/douyin/publish-image.js +1 -1
  53. package/clis/douyin/publish.js +1 -1
  54. package/clis/eastmoney/announcement.js +1 -1
  55. package/clis/eastmoney/rank.js +1 -1
  56. package/clis/eastmoney/sectors.js +1 -1
  57. package/clis/endoflife/utils.js +1 -1
  58. package/clis/flathub/utils.js +1 -1
  59. package/clis/gemini/detail.js +1 -1
  60. package/clis/gemini/read.js +1 -1
  61. package/clis/geogebra/add-circle.js +1 -1
  62. package/clis/geogebra/add-line.js +1 -1
  63. package/clis/geogebra/add-point.js +1 -1
  64. package/clis/geogebra/add-polygon.js +1 -1
  65. package/clis/geogebra/eval.js +1 -1
  66. package/clis/geogebra/hexagon.js +1 -1
  67. package/clis/geogebra/info.js +1 -1
  68. package/clis/geogebra/triangle.js +1 -1
  69. package/clis/ghost/login.js +1 -0
  70. package/clis/ghost/publish.js +1 -1
  71. package/clis/ghost/shared.js +24 -1
  72. package/clis/ghost/sites.js +1 -0
  73. package/clis/ghost/whoami.js +1 -1
  74. package/clis/gitee/user.js +2 -2
  75. package/clis/github-trending/repos.js +1 -1
  76. package/clis/goproxy/utils.js +1 -1
  77. package/clis/grok/export-all.js +1 -1
  78. package/clis/grok/export.js +1 -1
  79. package/clis/hashnode/publish.js +1 -1
  80. package/clis/hf/datasets.js +1 -1
  81. package/clis/hf/models.js +1 -1
  82. package/clis/hf/paper.js +1 -1
  83. package/clis/hf/spaces.js +1 -1
  84. package/clis/homebrew/utils.js +1 -1
  85. package/clis/instagram/note.js +1 -1
  86. package/clis/jimeng/generate.js +1 -1
  87. package/clis/juejin/utils.js +1 -1
  88. package/clis/kuaishou/publish.js +1 -1
  89. package/clis/lesswrong/tag.js +1 -1
  90. package/clis/lichess/utils.js +1 -1
  91. package/clis/linkedin/search.js +2 -2
  92. package/clis/linux-do/feed.js +2 -2
  93. package/clis/lobsters/domain.js +1 -1
  94. package/clis/mastodon/login.js +1 -0
  95. package/clis/mastodon/post.js +1 -1
  96. package/clis/mastodon/shared.js +10 -10
  97. package/clis/mastodon/sites.js +1 -0
  98. package/clis/mastodon/whoami.js +1 -1
  99. package/clis/maven/utils.js +1 -1
  100. package/clis/mdn/search.js +1 -1
  101. package/clis/medium/tag.js +1 -1
  102. package/clis/notebooklm/current.js +1 -1
  103. package/clis/notebooklm/get.js +1 -1
  104. package/clis/notebooklm/history.js +1 -1
  105. package/clis/notebooklm/note-list.js +1 -1
  106. package/clis/notebooklm/notes-get.js +1 -1
  107. package/clis/notebooklm/open.js +1 -1
  108. package/clis/notebooklm/source-fulltext.js +1 -1
  109. package/clis/notebooklm/source-get.js +1 -1
  110. package/clis/notebooklm/source-guide.js +1 -1
  111. package/clis/notebooklm/source-list.js +1 -1
  112. package/clis/notebooklm/summary.js +1 -1
  113. package/clis/notebooklm/utils.js +1 -1
  114. package/clis/npm/utils.js +1 -1
  115. package/clis/nuget/utils.js +1 -1
  116. package/clis/nvd/cve.js +1 -1
  117. package/clis/oeis/utils.js +1 -1
  118. package/clis/ones/common.js +2 -2
  119. package/clis/ones/me.js +1 -1
  120. package/clis/ones/tasks.js +1 -1
  121. package/clis/ones/token-info.js +1 -1
  122. package/clis/ones/worklog.js +1 -1
  123. package/clis/openalex/utils.js +1 -1
  124. package/clis/oschina/stats.js +1 -1
  125. package/clis/osv/utils.js +1 -1
  126. package/clis/packagist/utils.js +1 -1
  127. package/clis/pixiv/detail.js +1 -1
  128. package/clis/pixiv/user.js +1 -1
  129. package/clis/producthunt/utils.js +1 -1
  130. package/clis/pypi/utils.js +1 -1
  131. package/clis/qiita/gql.js +2 -2
  132. package/clis/quora/__fixtures__/dom.html +39 -0
  133. package/clis/quora/answer-comments.js +9 -0
  134. package/clis/quora/answer-detail.js +1 -0
  135. package/clis/quora/answer-queue.js +1 -0
  136. package/clis/quora/comment.js +23 -0
  137. package/clis/quora/create-answer.js +4 -4
  138. package/clis/quora/create-question.js +3 -3
  139. package/clis/quora/follow.js +15 -0
  140. package/clis/quora/followers.js +1 -0
  141. package/clis/quora/question.js +1 -0
  142. package/clis/quora/search.js +1 -0
  143. package/clis/quora/shared.js +26 -11
  144. package/clis/quora/stats.js +1 -0
  145. package/clis/quora/upvote.js +14 -0
  146. package/clis/quora/user-answers.js +1 -0
  147. package/clis/quora/user.js +1 -0
  148. package/clis/rest-countries/utils.js +1 -1
  149. package/clis/rfc/utils.js +1 -1
  150. package/clis/rubygems/utils.js +1 -1
  151. package/clis/semanticscholar/utils.js +1 -1
  152. package/clis/slock/errors.js +1 -1
  153. package/clis/spotify/spotify.js +1 -1
  154. package/clis/spotify/utils.js +1 -1
  155. package/clis/stackoverflow/utils.js +1 -1
  156. package/clis/steam/utils.js +1 -1
  157. package/clis/substack/auth.js +2 -2
  158. package/clis/suno/generate.js +2 -2
  159. package/clis/suno/list.js +3 -3
  160. package/clis/telegram/send.js +1 -1
  161. package/clis/tiktok/creator-videos.js +1 -1
  162. package/clis/tiktok/publish.js +1 -1
  163. package/clis/tiktok/utils.js +1 -1
  164. package/clis/trae-cn/activity.js +1 -1
  165. package/clis/trae-cn/approve.js +1 -1
  166. package/clis/trae-cn/ask.js +1 -1
  167. package/clis/trae-cn/dump.js +1 -1
  168. package/clis/trae-cn/export.js +1 -1
  169. package/clis/trae-cn/model.js +1 -1
  170. package/clis/trae-cn/new.js +1 -1
  171. package/clis/trae-cn/read.js +1 -1
  172. package/clis/trae-cn/screenshot.js +1 -1
  173. package/clis/trae-cn/select-model.js +1 -1
  174. package/clis/trae-cn/send.js +1 -1
  175. package/clis/trae-cn/setup.js +1 -1
  176. package/clis/trae-cn/status.js +1 -1
  177. package/clis/trae-cn/targets.js +1 -1
  178. package/clis/trae-cn/watch.js +1 -1
  179. package/clis/trae-solo/state-fs.js +1 -1
  180. package/clis/tumblr/publish.js +1 -1
  181. package/clis/tvmaze/utils.js +1 -1
  182. package/clis/twitter/bookmark-folder.js +1 -1
  183. package/clis/twitter/download.js +1 -1
  184. package/clis/twitter/followers.js +2 -2
  185. package/clis/twitter/following.js +2 -2
  186. package/clis/twitter/likes.js +1 -1
  187. package/clis/twitter/list-add-batch.js +1 -1
  188. package/clis/twitter/list-add-core.js +1 -1
  189. package/clis/twitter/list-add.js +1 -1
  190. package/clis/twitter/list-create.js +1 -1
  191. package/clis/twitter/list-delete.js +3 -3
  192. package/clis/twitter/list-remove-batch.js +1 -1
  193. package/clis/twitter/list-remove.js +1 -1
  194. package/clis/twitter/list-tweets.js +1 -1
  195. package/clis/twitter/profile.js +1 -1
  196. package/clis/twitter/search.js +1 -1
  197. package/clis/twitter/shared.js +1 -1
  198. package/clis/twitter/tweets.js +1 -1
  199. package/clis/uisdc/news.js +1 -1
  200. package/clis/v2ex/daily.js +2 -2
  201. package/clis/v2ex/me.js +2 -2
  202. package/clis/v2ex/notifications.js +1 -1
  203. package/clis/wikidata/utils.js +1 -1
  204. package/clis/wikipedia/page.js +2 -2
  205. package/clis/wikipedia/summary.js +1 -1
  206. package/clis/wikipedia/utils.js +1 -1
  207. package/clis/wordpress/login.js +1 -1
  208. package/clis/wordpress/publish.js +1 -1
  209. package/clis/wordpress/shared.js +3 -3
  210. package/clis/wordpress/sites.js +1 -0
  211. package/clis/wordpress/whoami.js +1 -1
  212. package/clis/woshipm/stats.js +1 -1
  213. package/clis/xiaoe/content.js +1 -1
  214. package/clis/xiaohongshu/draft-delete.js +1 -1
  215. package/clis/xiaohongshu/draft-open.js +1 -1
  216. package/clis/xiaohongshu/draft-utils.js +2 -2
  217. package/clis/xiaohongshu/publish-video.js +1 -1
  218. package/clis/xiaohongshu/publish.js +1 -1
  219. package/clis/xiaoyuzhou/auth.js +1 -1
  220. package/clis/xiaoyuzhou/transcript.js +1 -1
  221. package/clis/yollomi/background.js +1 -1
  222. package/clis/yollomi/edit.js +1 -1
  223. package/clis/yollomi/generate.js +1 -1
  224. package/clis/yollomi/try-on.js +1 -1
  225. package/clis/youtube/publish.js +1 -1
  226. package/clis/zhihu/answer-comments.js +1 -1
  227. package/clis/zhihu/answer-detail.js +1 -1
  228. package/clis/zhihu/collection.js +2 -2
  229. package/clis/zhihu/collections.js +1 -1
  230. package/clis/zhihu/question.js +1 -1
  231. package/clis/zhihu/search.js +1 -1
  232. package/clis/zhihu/target.js +1 -1
  233. package/clis/zhihu/user-arg.js +1 -1
  234. package/dist/src/adapter-shadow.js +1 -1
  235. package/dist/src/browser/analyze.js +1 -1
  236. package/dist/src/browser/article-extract.d.ts +1 -1
  237. package/dist/src/browser/base-page.js +3 -3
  238. package/dist/src/browser/cdp.js +1 -1
  239. package/dist/src/browser/daemon-client.d.ts +1 -1
  240. package/dist/src/browser/daemon-lifecycle.js +6 -6
  241. package/dist/src/browser/daemon-version.js +1 -1
  242. package/dist/src/browser/dom-snapshot.d.ts +1 -1
  243. package/dist/src/browser/dom-snapshot.js +2 -2
  244. package/dist/src/browser/errors.js +2 -2
  245. package/dist/src/browser/network-cache.js +1 -1
  246. package/dist/src/browser/profile.js +1 -1
  247. package/dist/src/browser/target-resolver.js +4 -4
  248. package/dist/src/browser/verify-fixture.js +1 -1
  249. package/dist/src/browser-session-lock.js +1 -1
  250. package/dist/src/build-manifest.d.ts +1 -1
  251. package/dist/src/build-manifest.js +1 -1
  252. package/dist/src/cli-argv-preprocess.d.ts +4 -4
  253. package/dist/src/cli-argv-preprocess.js +1 -1
  254. package/dist/src/cli.d.ts +1 -1
  255. package/dist/src/cli.js +19 -19
  256. package/dist/src/commanderAdapter.js +1 -1
  257. package/dist/src/commands/auth.js +2 -2
  258. package/dist/src/commands/daemon.d.ts +4 -4
  259. package/dist/src/commands/daemon.js +1 -1
  260. package/dist/src/completion-shared.js +12 -12
  261. package/dist/src/completion.d.ts +2 -2
  262. package/dist/src/constants.d.ts +1 -1
  263. package/dist/src/constants.js +1 -1
  264. package/dist/src/daemon-utils.d.ts +1 -1
  265. package/dist/src/daemon-utils.js +1 -1
  266. package/dist/src/daemon.d.ts +2 -2
  267. package/dist/src/daemon.js +1 -1
  268. package/dist/src/discovery.d.ts +7 -7
  269. package/dist/src/discovery.js +2 -2
  270. package/dist/src/doctor.d.ts +1 -1
  271. package/dist/src/doctor.js +6 -6
  272. package/dist/src/electron-apps.d.ts +1 -1
  273. package/dist/src/electron-apps.js +1 -1
  274. package/dist/src/errors.d.ts +2 -2
  275. package/dist/src/errors.js +1 -1
  276. package/dist/src/execution.js +1 -1
  277. package/dist/src/external.d.ts +1 -1
  278. package/dist/src/external.js +1 -1
  279. package/dist/src/help.d.ts +1 -1
  280. package/dist/src/help.js +3 -3
  281. package/dist/src/hooks.d.ts +1 -1
  282. package/dist/src/launcher.js +2 -2
  283. package/dist/src/logger.d.ts +1 -1
  284. package/dist/src/main.d.ts +1 -1
  285. package/dist/src/main.js +1 -1
  286. package/dist/src/observation/artifact.js +2 -2
  287. package/dist/src/package-paths.js +1 -1
  288. package/dist/src/package-paths.test.d.ts +1 -0
  289. package/dist/src/plugin-manifest.d.ts +12 -3
  290. package/dist/src/plugin-manifest.js +1 -1
  291. package/dist/src/plugin-scaffold.d.ts +2 -2
  292. package/dist/src/plugin-scaffold.js +9 -9
  293. package/dist/src/plugin.d.ts +4 -4
  294. package/dist/src/plugin.js +10 -10
  295. package/dist/src/rate-limit.js +1 -1
  296. package/dist/src/registry-api.d.ts +1 -1
  297. package/dist/src/runtime-detect.d.ts +1 -1
  298. package/dist/src/serialization.js +1 -1
  299. package/dist/src/skills.js +6 -6
  300. package/dist/src/user-runtime.d.ts +8 -0
  301. package/dist/src/user-runtime.js +1 -0
  302. package/dist/src/user-runtime.test.d.ts +1 -0
  303. package/dist/src/validate.js +1 -1
  304. package/dist/src/validate.test.d.ts +1 -1
  305. package/docs/guide/browser-bridge.md +23 -23
  306. package/docs/guide/electron-app-cli.md +3 -3
  307. package/docs/guide/exit-codes.md +3 -3
  308. package/docs/guide/extending-opencli.md +37 -37
  309. package/docs/guide/getting-started.md +19 -19
  310. package/docs/guide/installation.md +6 -6
  311. package/docs/guide/plugins.md +32 -32
  312. package/docs/guide/remote-orchestration.md +5 -5
  313. package/docs/guide/troubleshooting.md +9 -9
  314. package/package.json +3 -2
  315. package/scripts/fetch-adapters.js +6 -6
  316. package/scripts/postinstall.js +14 -14
  317. package/skills/opencli-adapter-author/SKILL.md +24 -24
  318. package/skills/opencli-adapter-author/references/adapter-template.md +13 -13
  319. package/skills/opencli-adapter-author/references/api-discovery.md +25 -25
  320. package/skills/opencli-adapter-author/references/coverage-matrix.md +3 -3
  321. package/skills/opencli-adapter-author/references/field-decode-playbook.md +10 -10
  322. package/skills/opencli-adapter-author/references/jsdom-fixture-pattern.md +2 -2
  323. package/skills/opencli-adapter-author/references/site-memory.md +11 -11
  324. package/skills/opencli-adapter-author/references/site-recon.md +7 -7
  325. package/skills/opencli-adapter-author/references/strategy-selection.md +3 -3
  326. package/skills/opencli-adapter-author/references/success-rate-pitfalls.md +4 -4
  327. package/skills/opencli-adapter-author/references/typed-errors.md +2 -2
  328. package/skills/opencli-autofix/SKILL.md +29 -29
  329. package/skills/opencli-browser/SKILL.md +55 -55
  330. package/skills/opencli-browser-sitemap/SKILL.md +7 -7
  331. package/skills/opencli-sitemap-author/SKILL.md +11 -11
  332. package/skills/opencli-sitemap-author/references/sitemap-schema.md +19 -19
  333. package/skills/opencli-usage/SKILL.md +43 -43
package/cli-manifest.json CHANGED
@@ -6002,7 +6002,7 @@
6002
6002
  "name": "search",
6003
6003
  "description": "Search Booking.com hotels by destination and dates (server-rendered card scrape).",
6004
6004
  "access": "read",
6005
- "example": "opencli booking search Tokyo --checkin 2026-06-15 --checkout 2026-06-17 -f yaml",
6005
+ "example": "ppcli booking search Tokyo --checkin 2026-06-15 --checkout 2026-06-17 -f yaml",
6006
6006
  "domain": "www.booking.com",
6007
6007
  "strategy": "public",
6008
6008
  "browser": true,
@@ -15780,7 +15780,7 @@
15780
15780
  "name": "add-circle",
15781
15781
  "description": "Create a circle by center+radius or center+point",
15782
15782
  "access": "write",
15783
- "example": "opencli geogebra add-circle --center A --radius 3",
15783
+ "example": "ppcli geogebra add-circle --center A --radius 3",
15784
15784
  "domain": "www.geogebra.org",
15785
15785
  "strategy": "public",
15786
15786
  "browser": true,
@@ -15819,7 +15819,7 @@
15819
15819
  "name": "add-line",
15820
15820
  "description": "Create a line through two points or a segment between two points",
15821
15821
  "access": "write",
15822
- "example": "opencli geogebra add-line --points A,B --type segment",
15822
+ "example": "ppcli geogebra add-line --points A,B --type segment",
15823
15823
  "domain": "www.geogebra.org",
15824
15824
  "strategy": "public",
15825
15825
  "browser": true,
@@ -15858,7 +15858,7 @@
15858
15858
  "name": "add-point",
15859
15859
  "description": "Create a point with given label and coordinates",
15860
15860
  "access": "write",
15861
- "example": "opencli geogebra add-point --name A --coords 1,2",
15861
+ "example": "ppcli geogebra add-point --name A --coords 1,2",
15862
15862
  "domain": "www.geogebra.org",
15863
15863
  "strategy": "public",
15864
15864
  "browser": true,
@@ -15891,7 +15891,7 @@
15891
15891
  "name": "add-polygon",
15892
15892
  "description": "Create a polygon from a list of point labels",
15893
15893
  "access": "write",
15894
- "example": "opencli geogebra add-polygon --points A,B,C",
15894
+ "example": "ppcli geogebra add-polygon --points A,B,C",
15895
15895
  "domain": "www.geogebra.org",
15896
15896
  "strategy": "public",
15897
15897
  "browser": true,
@@ -15917,7 +15917,7 @@
15917
15917
  "name": "eval",
15918
15918
  "description": "Execute one or more GeoGebra command strings (semicolon-separated)",
15919
15919
  "access": "write",
15920
- "example": "opencli geogebra eval \"A=(0,0);B=(4,0);c=Circle(A,B);d=Circle(B,A);C=Intersect(c,d,1);Polygon(A,B,C)\"",
15920
+ "example": "ppcli geogebra eval \"A=(0,0);B=(4,0);c=Circle(A,B);d=Circle(B,A);C=Intersect(c,d,1);Polygon(A,B,C)\"",
15921
15921
  "domain": "www.geogebra.org",
15922
15922
  "strategy": "public",
15923
15923
  "browser": true,
@@ -15944,7 +15944,7 @@
15944
15944
  "name": "hexagon",
15945
15945
  "description": "Draw a regular hexagon centered at the origin",
15946
15946
  "access": "write",
15947
- "example": "opencli geogebra hexagon --size 3",
15947
+ "example": "ppcli geogebra hexagon --size 3",
15948
15948
  "domain": "www.geogebra.org",
15949
15949
  "strategy": "public",
15950
15950
  "browser": true,
@@ -15971,7 +15971,7 @@
15971
15971
  "name": "info",
15972
15972
  "description": "Get detailed properties of a GeoGebra object",
15973
15973
  "access": "read",
15974
- "example": "opencli geogebra info --name A",
15974
+ "example": "ppcli geogebra info --name A",
15975
15975
  "domain": "www.geogebra.org",
15976
15976
  "strategy": "public",
15977
15977
  "browser": true,
@@ -16024,7 +16024,7 @@
16024
16024
  "name": "triangle",
16025
16025
  "description": "Draw an equilateral triangle from a horizontal base segment",
16026
16026
  "access": "write",
16027
- "example": "opencli geogebra triangle --size 4",
16027
+ "example": "ppcli geogebra triangle --size 4",
16028
16028
  "domain": "www.geogebra.org",
16029
16029
  "strategy": "public",
16030
16030
  "browser": true,
@@ -16048,13 +16048,99 @@
16048
16048
  },
16049
16049
  {
16050
16050
  "site": "ghost",
16051
- "name": "publish",
16052
- "description": "Publish a post to a Ghost site via the Admin API. A Markdown body is converted to HTML automatically (sent with ?source=html). Defaults to a draft for safety — pass --status published to go live.",
16051
+ "name": "add-site",
16052
+ "description": "校验并保存一个命名的 ghost 自部署站点连接(只保存名称和网址)。",
16053
16053
  "access": "write",
16054
- "domain": "ghost.org",
16055
16054
  "strategy": "local",
16056
16055
  "browser": false,
16057
16056
  "args": [
16057
+ {
16058
+ "name": "name",
16059
+ "type": "str",
16060
+ "required": true,
16061
+ "help": "连接名称,例如“公司博客”"
16062
+ },
16063
+ {
16064
+ "name": "url",
16065
+ "type": "str",
16066
+ "required": true,
16067
+ "help": "站点根网址,例如 https://blog.example.com"
16068
+ }
16069
+ ],
16070
+ "columns": [
16071
+ "status",
16072
+ "name",
16073
+ "url",
16074
+ "default"
16075
+ ],
16076
+ "type": "js",
16077
+ "modulePath": "ghost/sites.js",
16078
+ "sourceFile": "ghost/sites.js"
16079
+ },
16080
+ {
16081
+ "site": "ghost",
16082
+ "name": "login",
16083
+ "description": "打开指定 Ghost 自部署站点的后台登录页并等待登录完成。用 --site 选择连接名称或站点网址。",
16084
+ "access": "write",
16085
+ "domain": "ghost.org",
16086
+ "strategy": "cookie",
16087
+ "browser": true,
16088
+ "args": [
16089
+ {
16090
+ "name": "site",
16091
+ "type": "str",
16092
+ "required": false,
16093
+ "help": "连接名称或站点网址;省略时使用默认站点"
16094
+ },
16095
+ {
16096
+ "name": "site-url",
16097
+ "type": "str",
16098
+ "required": false,
16099
+ "help": "兼容旧版:Ghost 站点网址(推荐改用 --site)"
16100
+ },
16101
+ {
16102
+ "name": "timeout",
16103
+ "type": "int",
16104
+ "default": 300,
16105
+ "required": false,
16106
+ "help": "等待用户完成登录的最长秒数"
16107
+ }
16108
+ ],
16109
+ "columns": [
16110
+ "status",
16111
+ "logged_in",
16112
+ "site",
16113
+ "title",
16114
+ "connection"
16115
+ ],
16116
+ "type": "js",
16117
+ "modulePath": "ghost/login.js",
16118
+ "sourceFile": "ghost/login.js",
16119
+ "navigateBefore": false,
16120
+ "siteSession": "persistent",
16121
+ "defaultWindowMode": "foreground"
16122
+ },
16123
+ {
16124
+ "site": "ghost",
16125
+ "name": "publish",
16126
+ "description": "发布文章到指定 Ghost 自部署站点。用 --site 选择连接名称或站点网址;Markdown 自动转 HTML,默认保存草稿。",
16127
+ "access": "write",
16128
+ "domain": "ghost.org",
16129
+ "strategy": "cookie",
16130
+ "browser": true,
16131
+ "args": [
16132
+ {
16133
+ "name": "site",
16134
+ "type": "str",
16135
+ "required": false,
16136
+ "help": "连接名称或站点网址;省略时使用默认站点"
16137
+ },
16138
+ {
16139
+ "name": "site-url",
16140
+ "type": "str",
16141
+ "required": false,
16142
+ "help": "兼容旧版:Ghost 站点网址(推荐改用 --site)"
16143
+ },
16058
16144
  {
16059
16145
  "name": "title",
16060
16146
  "type": "str",
@@ -16123,25 +16209,109 @@
16123
16209
  ],
16124
16210
  "type": "js",
16125
16211
  "modulePath": "ghost/publish.js",
16126
- "sourceFile": "ghost/publish.js"
16212
+ "sourceFile": "ghost/publish.js",
16213
+ "navigateBefore": false,
16214
+ "siteSession": "persistent"
16127
16215
  },
16128
16216
  {
16129
16217
  "site": "ghost",
16130
- "name": "whoami",
16131
- "description": "Check whether the connected Ghost site session is valid (GET /ghost/api/admin/site). Returns logged_in true when the site info comes back, false when the session is missing/expired.",
16218
+ "name": "remove-site",
16219
+ "description": "删除一个 ghost 站点连接;不会清除浏览器里的站点 cookie。",
16220
+ "access": "write",
16221
+ "strategy": "local",
16222
+ "browser": false,
16223
+ "args": [
16224
+ {
16225
+ "name": "site",
16226
+ "type": "str",
16227
+ "required": true,
16228
+ "help": "要删除的连接名称"
16229
+ }
16230
+ ],
16231
+ "columns": [
16232
+ "status",
16233
+ "name",
16234
+ "url"
16235
+ ],
16236
+ "type": "js",
16237
+ "modulePath": "ghost/sites.js",
16238
+ "sourceFile": "ghost/sites.js"
16239
+ },
16240
+ {
16241
+ "site": "ghost",
16242
+ "name": "sites",
16243
+ "description": "列出已保存的 ghost 自部署站点连接。",
16132
16244
  "access": "read",
16133
- "domain": "ghost.org",
16134
16245
  "strategy": "local",
16135
16246
  "browser": false,
16136
16247
  "args": [],
16248
+ "columns": [
16249
+ "name",
16250
+ "url",
16251
+ "default"
16252
+ ],
16253
+ "type": "js",
16254
+ "modulePath": "ghost/sites.js",
16255
+ "sourceFile": "ghost/sites.js"
16256
+ },
16257
+ {
16258
+ "site": "ghost",
16259
+ "name": "use-site",
16260
+ "description": "设置 ghost 默认站点;之后省略 --site 时使用它。",
16261
+ "access": "write",
16262
+ "strategy": "local",
16263
+ "browser": false,
16264
+ "args": [
16265
+ {
16266
+ "name": "site",
16267
+ "type": "str",
16268
+ "required": true,
16269
+ "help": "要设为默认的连接名称"
16270
+ }
16271
+ ],
16272
+ "columns": [
16273
+ "status",
16274
+ "name",
16275
+ "url",
16276
+ "default"
16277
+ ],
16278
+ "type": "js",
16279
+ "modulePath": "ghost/sites.js",
16280
+ "sourceFile": "ghost/sites.js"
16281
+ },
16282
+ {
16283
+ "site": "ghost",
16284
+ "name": "whoami",
16285
+ "description": "检测指定 Ghost 自部署站点的浏览器登录态与站点信息。用 --site 选择连接名称或站点网址。",
16286
+ "access": "read",
16287
+ "domain": "ghost.org",
16288
+ "strategy": "cookie",
16289
+ "browser": true,
16290
+ "args": [
16291
+ {
16292
+ "name": "site",
16293
+ "type": "str",
16294
+ "required": false,
16295
+ "help": "连接名称或站点网址;省略时使用默认站点"
16296
+ },
16297
+ {
16298
+ "name": "site-url",
16299
+ "type": "str",
16300
+ "required": false,
16301
+ "help": "兼容旧版:Ghost 站点网址(推荐改用 --site)"
16302
+ }
16303
+ ],
16137
16304
  "columns": [
16138
16305
  "logged_in",
16139
16306
  "site",
16140
- "title"
16307
+ "title",
16308
+ "connection"
16141
16309
  ],
16142
16310
  "type": "js",
16143
16311
  "modulePath": "ghost/whoami.js",
16144
- "sourceFile": "ghost/whoami.js"
16312
+ "sourceFile": "ghost/whoami.js",
16313
+ "navigateBefore": false,
16314
+ "siteSession": "persistent"
16145
16315
  },
16146
16316
  {
16147
16317
  "site": "gitee",
@@ -16968,7 +17138,7 @@
16968
17138
  "name": "export",
16969
17139
  "description": "Export all visible Grok conversation history metadata",
16970
17140
  "access": "read",
16971
- "example": "opencli grok export -f yaml",
17141
+ "example": "ppcli grok export -f yaml",
16972
17142
  "domain": "grok.com",
16973
17143
  "strategy": "cookie",
16974
17144
  "browser": true,
@@ -17006,7 +17176,7 @@
17006
17176
  "name": "export-all",
17007
17177
  "description": "Export Grok conversation history and each conversation transcript",
17008
17178
  "access": "read",
17009
- "example": "opencli grok export-all --limit 5 -f json",
17179
+ "example": "ppcli grok export-all --limit 5 -f json",
17010
17180
  "domain": "grok.com",
17011
17181
  "strategy": "cookie",
17012
17182
  "browser": true,
@@ -26178,19 +26348,86 @@
26178
26348
  },
26179
26349
  {
26180
26350
  "site": "mastodon",
26181
- "name": "post",
26182
- "description": "发一条嘟文(status)到你登录的 Mastodon 实例。零配置:凭证从浏览器登录态自动获取,无需 API key。 用 --instance 指定实例网址(如 https://mastodon.social)。支持图片/视频、可见范围、内容警告、回复。",
26351
+ "name": "add-site",
26352
+ "description": "校验并保存一个命名的 mastodon 自部署站点连接(只保存名称和网址)。",
26353
+ "access": "write",
26354
+ "strategy": "local",
26355
+ "browser": false,
26356
+ "args": [
26357
+ {
26358
+ "name": "name",
26359
+ "type": "str",
26360
+ "required": true,
26361
+ "help": "连接名称,例如“公司博客”"
26362
+ },
26363
+ {
26364
+ "name": "url",
26365
+ "type": "str",
26366
+ "required": true,
26367
+ "help": "站点根网址,例如 https://blog.example.com"
26368
+ }
26369
+ ],
26370
+ "columns": [
26371
+ "status",
26372
+ "name",
26373
+ "url",
26374
+ "default"
26375
+ ],
26376
+ "type": "js",
26377
+ "modulePath": "mastodon/sites.js",
26378
+ "sourceFile": "mastodon/sites.js"
26379
+ },
26380
+ {
26381
+ "site": "mastodon",
26382
+ "name": "login",
26383
+ "description": "打开指定 Mastodon 自部署实例的登录页并等待登录完成。用 --site 选择连接名称或实例网址。",
26183
26384
  "access": "write",
26184
26385
  "domain": "mastodon.social",
26185
26386
  "strategy": "ui",
26186
26387
  "browser": true,
26187
26388
  "args": [
26389
+ {
26390
+ "name": "site",
26391
+ "type": "str",
26392
+ "required": false,
26393
+ "help": "连接名称或实例网址;省略时使用默认站点"
26394
+ },
26188
26395
  {
26189
26396
  "name": "instance",
26190
- "type": "string",
26191
- "required": true,
26192
- "help": "实例网址,如 https://mastodon.social(你已登录的那个)"
26397
+ "type": "str",
26398
+ "required": false,
26399
+ "help": "兼容旧版:实例网址(推荐改用 --site)"
26193
26400
  },
26401
+ {
26402
+ "name": "timeout",
26403
+ "type": "int",
26404
+ "default": 300,
26405
+ "required": false,
26406
+ "help": "等待用户完成登录的最长秒数"
26407
+ }
26408
+ ],
26409
+ "columns": [
26410
+ "status",
26411
+ "logged_in",
26412
+ "site",
26413
+ "instance"
26414
+ ],
26415
+ "type": "js",
26416
+ "modulePath": "mastodon/login.js",
26417
+ "sourceFile": "mastodon/login.js",
26418
+ "navigateBefore": false,
26419
+ "siteSession": "persistent",
26420
+ "defaultWindowMode": "foreground"
26421
+ },
26422
+ {
26423
+ "site": "mastodon",
26424
+ "name": "post",
26425
+ "description": "发一条嘟文(status)到你登录的 Mastodon 实例。零配置:凭证从浏览器登录态自动获取,无需 API key。 用 --site 选择已保存连接(也可直接传实例网址)。支持图片/视频、可见范围、内容警告、回复。",
26426
+ "access": "write",
26427
+ "domain": "mastodon.social",
26428
+ "strategy": "ui",
26429
+ "browser": true,
26430
+ "args": [
26194
26431
  {
26195
26432
  "name": "status",
26196
26433
  "type": "string",
@@ -26198,6 +26435,18 @@
26198
26435
  "positional": true,
26199
26436
  "help": "嘟文正文(纯文本发帖必填;仅发媒体时可省)"
26200
26437
  },
26438
+ {
26439
+ "name": "site",
26440
+ "type": "string",
26441
+ "required": false,
26442
+ "help": "连接名称或实例网址;省略时使用默认站点"
26443
+ },
26444
+ {
26445
+ "name": "instance",
26446
+ "type": "string",
26447
+ "required": false,
26448
+ "help": "兼容旧版:实例网址(推荐改用 --site)"
26449
+ },
26201
26450
  {
26202
26451
  "name": "media",
26203
26452
  "type": "string",
@@ -26253,20 +26502,92 @@
26253
26502
  "sourceFile": "mastodon/post.js",
26254
26503
  "navigateBefore": false
26255
26504
  },
26505
+ {
26506
+ "site": "mastodon",
26507
+ "name": "remove-site",
26508
+ "description": "删除一个 mastodon 站点连接;不会清除浏览器里的站点 cookie。",
26509
+ "access": "write",
26510
+ "strategy": "local",
26511
+ "browser": false,
26512
+ "args": [
26513
+ {
26514
+ "name": "site",
26515
+ "type": "str",
26516
+ "required": true,
26517
+ "help": "要删除的连接名称"
26518
+ }
26519
+ ],
26520
+ "columns": [
26521
+ "status",
26522
+ "name",
26523
+ "url"
26524
+ ],
26525
+ "type": "js",
26526
+ "modulePath": "mastodon/sites.js",
26527
+ "sourceFile": "mastodon/sites.js"
26528
+ },
26529
+ {
26530
+ "site": "mastodon",
26531
+ "name": "sites",
26532
+ "description": "列出已保存的 mastodon 自部署站点连接。",
26533
+ "access": "read",
26534
+ "strategy": "local",
26535
+ "browser": false,
26536
+ "args": [],
26537
+ "columns": [
26538
+ "name",
26539
+ "url",
26540
+ "default"
26541
+ ],
26542
+ "type": "js",
26543
+ "modulePath": "mastodon/sites.js",
26544
+ "sourceFile": "mastodon/sites.js"
26545
+ },
26546
+ {
26547
+ "site": "mastodon",
26548
+ "name": "use-site",
26549
+ "description": "设置 mastodon 默认站点;之后省略 --site 时使用它。",
26550
+ "access": "write",
26551
+ "strategy": "local",
26552
+ "browser": false,
26553
+ "args": [
26554
+ {
26555
+ "name": "site",
26556
+ "type": "str",
26557
+ "required": true,
26558
+ "help": "要设为默认的连接名称"
26559
+ }
26560
+ ],
26561
+ "columns": [
26562
+ "status",
26563
+ "name",
26564
+ "url",
26565
+ "default"
26566
+ ],
26567
+ "type": "js",
26568
+ "modulePath": "mastodon/sites.js",
26569
+ "sourceFile": "mastodon/sites.js"
26570
+ },
26256
26571
  {
26257
26572
  "site": "mastodon",
26258
26573
  "name": "whoami",
26259
- "description": "检测 Mastodon 实例的登录状态,返回是否登录及账号信息。用 --instance 指定实例网址。",
26574
+ "description": "检测 Mastodon 实例的登录状态。用 --site 选择已保存连接(也可直接传实例网址)。",
26260
26575
  "access": "read",
26261
26576
  "domain": "mastodon.social",
26262
26577
  "strategy": "ui",
26263
26578
  "browser": true,
26264
26579
  "args": [
26580
+ {
26581
+ "name": "site",
26582
+ "type": "string",
26583
+ "required": false,
26584
+ "help": "连接名称或实例网址;省略时使用默认站点"
26585
+ },
26265
26586
  {
26266
26587
  "name": "instance",
26267
26588
  "type": "string",
26268
- "required": true,
26269
- "help": "实例网址,如 https://mastodon.social"
26589
+ "required": false,
26590
+ "help": "兼容旧版:实例网址(推荐改用 --site)"
26270
26591
  }
26271
26592
  ],
26272
26593
  "columns": [
@@ -32312,6 +32633,145 @@
32312
32633
  "navigateBefore": false,
32313
32634
  "siteSession": "persistent"
32314
32635
  },
32636
+ {
32637
+ "site": "quora",
32638
+ "name": "answer-comments",
32639
+ "description": "Read visible comments on one Quora answer.",
32640
+ "access": "read",
32641
+ "domain": "www.quora.com",
32642
+ "strategy": "ui",
32643
+ "browser": true,
32644
+ "args": [
32645
+ {
32646
+ "name": "url",
32647
+ "type": "string",
32648
+ "required": true,
32649
+ "positional": true,
32650
+ "help": "Quora answer URL"
32651
+ },
32652
+ {
32653
+ "name": "limit",
32654
+ "type": "int",
32655
+ "default": 20,
32656
+ "required": false,
32657
+ "help": "Number of comments (max 50)"
32658
+ }
32659
+ ],
32660
+ "columns": [
32661
+ "rank",
32662
+ "author",
32663
+ "content",
32664
+ "upvotes",
32665
+ "published",
32666
+ "authorUrl"
32667
+ ],
32668
+ "type": "js",
32669
+ "modulePath": "quora/answer-comments.js",
32670
+ "sourceFile": "quora/answer-comments.js",
32671
+ "navigateBefore": true
32672
+ },
32673
+ {
32674
+ "site": "quora",
32675
+ "name": "answer-detail",
32676
+ "description": "Read one complete Quora answer with question, author and engagement metrics.",
32677
+ "access": "read",
32678
+ "domain": "www.quora.com",
32679
+ "strategy": "cookie",
32680
+ "browser": true,
32681
+ "args": [
32682
+ {
32683
+ "name": "url",
32684
+ "type": "string",
32685
+ "required": true,
32686
+ "positional": true,
32687
+ "help": "Quora answer URL"
32688
+ }
32689
+ ],
32690
+ "columns": [
32691
+ "question",
32692
+ "author",
32693
+ "content",
32694
+ "upvotes",
32695
+ "comments",
32696
+ "shares",
32697
+ "published",
32698
+ "url"
32699
+ ],
32700
+ "type": "js",
32701
+ "modulePath": "quora/answer-detail.js",
32702
+ "sourceFile": "quora/answer-detail.js",
32703
+ "navigateBefore": "https://www.quora.com"
32704
+ },
32705
+ {
32706
+ "site": "quora",
32707
+ "name": "answer-queue",
32708
+ "description": "List personalized Questions for You from Quora's Answer queue.",
32709
+ "access": "read",
32710
+ "domain": "www.quora.com",
32711
+ "strategy": "cookie",
32712
+ "browser": true,
32713
+ "args": [
32714
+ {
32715
+ "name": "limit",
32716
+ "type": "int",
32717
+ "default": 10,
32718
+ "required": false,
32719
+ "help": "Number of questions (max 50)"
32720
+ }
32721
+ ],
32722
+ "columns": [
32723
+ "rank",
32724
+ "title",
32725
+ "answers",
32726
+ "url"
32727
+ ],
32728
+ "type": "js",
32729
+ "modulePath": "quora/answer-queue.js",
32730
+ "sourceFile": "quora/answer-queue.js",
32731
+ "navigateBefore": "https://www.quora.com"
32732
+ },
32733
+ {
32734
+ "site": "quora",
32735
+ "name": "comment",
32736
+ "description": "Post a top-level comment on a Quora answer through the visible editor.",
32737
+ "access": "write",
32738
+ "domain": "www.quora.com",
32739
+ "strategy": "ui",
32740
+ "browser": true,
32741
+ "args": [
32742
+ {
32743
+ "name": "url",
32744
+ "type": "string",
32745
+ "required": true,
32746
+ "positional": true,
32747
+ "help": "Quora answer URL"
32748
+ },
32749
+ {
32750
+ "name": "text",
32751
+ "type": "string",
32752
+ "required": true,
32753
+ "positional": true,
32754
+ "help": "Comment text"
32755
+ },
32756
+ {
32757
+ "name": "execute",
32758
+ "type": "boolean",
32759
+ "required": false,
32760
+ "help": "Actually post the comment"
32761
+ }
32762
+ ],
32763
+ "columns": [
32764
+ "status",
32765
+ "outcome",
32766
+ "targetType",
32767
+ "target",
32768
+ "message"
32769
+ ],
32770
+ "type": "js",
32771
+ "modulePath": "quora/comment.js",
32772
+ "sourceFile": "quora/comment.js",
32773
+ "navigateBefore": true
32774
+ },
32315
32775
  {
32316
32776
  "site": "quora",
32317
32777
  "name": "create-answer",
@@ -32331,9 +32791,21 @@
32331
32791
  {
32332
32792
  "name": "content",
32333
32793
  "type": "string",
32334
- "required": true,
32794
+ "required": false,
32335
32795
  "positional": true,
32336
- "help": "Answer body text (multi-line allowed)"
32796
+ "help": "Answer body text, or use --file for long content"
32797
+ },
32798
+ {
32799
+ "name": "file",
32800
+ "type": "string",
32801
+ "required": false,
32802
+ "help": "Read answer body from a local UTF-8 text file"
32803
+ },
32804
+ {
32805
+ "name": "execute",
32806
+ "type": "boolean",
32807
+ "required": false,
32808
+ "help": "Actually post the answer"
32337
32809
  }
32338
32810
  ],
32339
32811
  "columns": [
@@ -32361,6 +32833,12 @@
32361
32833
  "required": true,
32362
32834
  "positional": true,
32363
32835
  "help": "The question title (a clear, complete question)"
32836
+ },
32837
+ {
32838
+ "name": "execute",
32839
+ "type": "boolean",
32840
+ "required": false,
32841
+ "help": "Actually post the question"
32364
32842
  }
32365
32843
  ],
32366
32844
  "columns": [
@@ -32373,6 +32851,77 @@
32373
32851
  "sourceFile": "quora/create-question.js",
32374
32852
  "navigateBefore": true
32375
32853
  },
32854
+ {
32855
+ "site": "quora",
32856
+ "name": "follow",
32857
+ "description": "Follow a Quora profile or question through the visible UI.",
32858
+ "access": "write",
32859
+ "domain": "www.quora.com",
32860
+ "strategy": "ui",
32861
+ "browser": true,
32862
+ "args": [
32863
+ {
32864
+ "name": "url",
32865
+ "type": "string",
32866
+ "required": true,
32867
+ "positional": true,
32868
+ "help": "Quora profile or question URL"
32869
+ },
32870
+ {
32871
+ "name": "execute",
32872
+ "type": "boolean",
32873
+ "required": false,
32874
+ "help": "Actually follow the target"
32875
+ }
32876
+ ],
32877
+ "columns": [
32878
+ "status",
32879
+ "outcome",
32880
+ "targetType",
32881
+ "target",
32882
+ "message"
32883
+ ],
32884
+ "type": "js",
32885
+ "modulePath": "quora/follow.js",
32886
+ "sourceFile": "quora/follow.js",
32887
+ "navigateBefore": true
32888
+ },
32889
+ {
32890
+ "site": "quora",
32891
+ "name": "followers",
32892
+ "description": "List followers of a Quora profile.",
32893
+ "access": "read",
32894
+ "domain": "www.quora.com",
32895
+ "strategy": "cookie",
32896
+ "browser": true,
32897
+ "args": [
32898
+ {
32899
+ "name": "user",
32900
+ "type": "string",
32901
+ "required": true,
32902
+ "positional": true,
32903
+ "help": "Profile slug or Quora profile URL"
32904
+ },
32905
+ {
32906
+ "name": "limit",
32907
+ "type": "int",
32908
+ "default": 20,
32909
+ "required": false,
32910
+ "help": "Number of followers (max 50)"
32911
+ }
32912
+ ],
32913
+ "columns": [
32914
+ "rank",
32915
+ "name",
32916
+ "headline",
32917
+ "followers",
32918
+ "url"
32919
+ ],
32920
+ "type": "js",
32921
+ "modulePath": "quora/followers.js",
32922
+ "sourceFile": "quora/followers.js",
32923
+ "navigateBefore": "https://www.quora.com"
32924
+ },
32376
32925
  {
32377
32926
  "site": "quora",
32378
32927
  "name": "login",
@@ -32402,6 +32951,228 @@
32402
32951
  "siteSession": "persistent",
32403
32952
  "defaultWindowMode": "foreground"
32404
32953
  },
32954
+ {
32955
+ "site": "quora",
32956
+ "name": "question",
32957
+ "description": "Read a Quora question and its visible answers, including engagement metrics.",
32958
+ "access": "read",
32959
+ "domain": "www.quora.com",
32960
+ "strategy": "cookie",
32961
+ "browser": true,
32962
+ "args": [
32963
+ {
32964
+ "name": "url",
32965
+ "type": "string",
32966
+ "required": true,
32967
+ "positional": true,
32968
+ "help": "Quora question URL"
32969
+ },
32970
+ {
32971
+ "name": "limit",
32972
+ "type": "int",
32973
+ "default": 10,
32974
+ "required": false,
32975
+ "help": "Number of answers (max 50)"
32976
+ }
32977
+ ],
32978
+ "columns": [
32979
+ "rank",
32980
+ "question",
32981
+ "author",
32982
+ "excerpt",
32983
+ "upvotes",
32984
+ "comments",
32985
+ "shares",
32986
+ "published",
32987
+ "url"
32988
+ ],
32989
+ "type": "js",
32990
+ "modulePath": "quora/question.js",
32991
+ "sourceFile": "quora/question.js",
32992
+ "navigateBefore": "https://www.quora.com"
32993
+ },
32994
+ {
32995
+ "site": "quora",
32996
+ "name": "search",
32997
+ "description": "Search Quora questions or answers from the visible logged-in search results.",
32998
+ "access": "read",
32999
+ "domain": "www.quora.com",
33000
+ "strategy": "cookie",
33001
+ "browser": true,
33002
+ "args": [
33003
+ {
33004
+ "name": "query",
33005
+ "type": "string",
33006
+ "required": true,
33007
+ "positional": true,
33008
+ "help": "Search query"
33009
+ },
33010
+ {
33011
+ "name": "type",
33012
+ "type": "string",
33013
+ "default": "question",
33014
+ "required": false,
33015
+ "help": "Result type: question or answer",
33016
+ "choices": [
33017
+ "question",
33018
+ "answer"
33019
+ ]
33020
+ },
33021
+ {
33022
+ "name": "limit",
33023
+ "type": "int",
33024
+ "default": 10,
33025
+ "required": false,
33026
+ "help": "Number of results (max 50)"
33027
+ }
33028
+ ],
33029
+ "columns": [
33030
+ "rank",
33031
+ "type",
33032
+ "title",
33033
+ "author",
33034
+ "excerpt",
33035
+ "answers",
33036
+ "upvotes",
33037
+ "comments",
33038
+ "shares",
33039
+ "published",
33040
+ "url"
33041
+ ],
33042
+ "type": "js",
33043
+ "modulePath": "quora/search.js",
33044
+ "sourceFile": "quora/search.js",
33045
+ "navigateBefore": "https://www.quora.com"
33046
+ },
33047
+ {
33048
+ "site": "quora",
33049
+ "name": "stats",
33050
+ "description": "Read the logged-in account's Quora content overview for the current stats period.",
33051
+ "access": "read",
33052
+ "domain": "www.quora.com",
33053
+ "strategy": "cookie",
33054
+ "browser": true,
33055
+ "args": [],
33056
+ "columns": [
33057
+ "period",
33058
+ "views",
33059
+ "upvotes",
33060
+ "comments",
33061
+ "shares"
33062
+ ],
33063
+ "type": "js",
33064
+ "modulePath": "quora/stats.js",
33065
+ "sourceFile": "quora/stats.js",
33066
+ "navigateBefore": "https://www.quora.com"
33067
+ },
33068
+ {
33069
+ "site": "quora",
33070
+ "name": "upvote",
33071
+ "description": "Upvote one Quora answer through the visible logged-in UI. Idempotent when already upvoted.",
33072
+ "access": "write",
33073
+ "domain": "www.quora.com",
33074
+ "strategy": "ui",
33075
+ "browser": true,
33076
+ "args": [
33077
+ {
33078
+ "name": "url",
33079
+ "type": "string",
33080
+ "required": true,
33081
+ "positional": true,
33082
+ "help": "Quora answer URL"
33083
+ },
33084
+ {
33085
+ "name": "execute",
33086
+ "type": "boolean",
33087
+ "required": false,
33088
+ "help": "Actually apply the upvote"
33089
+ }
33090
+ ],
33091
+ "columns": [
33092
+ "status",
33093
+ "outcome",
33094
+ "targetType",
33095
+ "target",
33096
+ "message"
33097
+ ],
33098
+ "type": "js",
33099
+ "modulePath": "quora/upvote.js",
33100
+ "sourceFile": "quora/upvote.js",
33101
+ "navigateBefore": true
33102
+ },
33103
+ {
33104
+ "site": "quora",
33105
+ "name": "user",
33106
+ "description": "Read a Quora profile with follower, content and view totals.",
33107
+ "access": "read",
33108
+ "domain": "www.quora.com",
33109
+ "strategy": "cookie",
33110
+ "browser": true,
33111
+ "args": [
33112
+ {
33113
+ "name": "user",
33114
+ "type": "string",
33115
+ "required": true,
33116
+ "positional": true,
33117
+ "help": "Profile slug or Quora profile URL"
33118
+ }
33119
+ ],
33120
+ "columns": [
33121
+ "name",
33122
+ "bio",
33123
+ "followers",
33124
+ "following",
33125
+ "answers",
33126
+ "questions",
33127
+ "posts",
33128
+ "contentViews",
33129
+ "url"
33130
+ ],
33131
+ "type": "js",
33132
+ "modulePath": "quora/user.js",
33133
+ "sourceFile": "quora/user.js",
33134
+ "navigateBefore": "https://www.quora.com"
33135
+ },
33136
+ {
33137
+ "site": "quora",
33138
+ "name": "user-answers",
33139
+ "description": "List answers published by a Quora profile with engagement metrics.",
33140
+ "access": "read",
33141
+ "domain": "www.quora.com",
33142
+ "strategy": "cookie",
33143
+ "browser": true,
33144
+ "args": [
33145
+ {
33146
+ "name": "user",
33147
+ "type": "string",
33148
+ "required": true,
33149
+ "positional": true,
33150
+ "help": "Profile slug or Quora profile URL"
33151
+ },
33152
+ {
33153
+ "name": "limit",
33154
+ "type": "int",
33155
+ "default": 10,
33156
+ "required": false,
33157
+ "help": "Number of answers (max 50)"
33158
+ }
33159
+ ],
33160
+ "columns": [
33161
+ "rank",
33162
+ "question",
33163
+ "author",
33164
+ "excerpt",
33165
+ "upvotes",
33166
+ "comments",
33167
+ "shares",
33168
+ "published",
33169
+ "url"
33170
+ ],
33171
+ "type": "js",
33172
+ "modulePath": "quora/user-answers.js",
33173
+ "sourceFile": "quora/user-answers.js",
33174
+ "navigateBefore": "https://www.quora.com"
33175
+ },
32405
33176
  {
32406
33177
  "site": "quora",
32407
33178
  "name": "whoami",
@@ -39538,7 +40309,7 @@
39538
40309
  "name": "activity",
39539
40310
  "description": "Read the current Trae CN task/activity state, including in-progress steps when visible",
39540
40311
  "access": "read",
39541
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn activity --max-chars 1200 -f json",
40312
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn activity --max-chars 1200 -f json",
39542
40313
  "domain": "localhost",
39543
40314
  "strategy": "ui",
39544
40315
  "browser": true,
@@ -39582,7 +40353,7 @@
39582
40353
  "name": "approve",
39583
40354
  "description": "Approve visible Trae CN permission prompts such as terminal-run, high-risk command, or delete confirmations",
39584
40355
  "access": "write",
39585
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn approve --approve-kinds terminal,delete -f json",
40356
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn approve --approve-kinds terminal,delete -f json",
39586
40357
  "domain": "localhost",
39587
40358
  "strategy": "ui",
39588
40359
  "browser": true,
@@ -39634,7 +40405,7 @@
39634
40405
  "name": "ask",
39635
40406
  "description": "Send a prompt to Trae CN, wait for the assistant result without treating approval cards as final, and return it",
39636
40407
  "access": "write",
39637
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn ask \"请只回复 OK\" --timeout 120 -f json",
40408
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn ask \"请只回复 OK\" --timeout 120 -f json",
39638
40409
  "domain": "localhost",
39639
40410
  "strategy": "ui",
39640
40411
  "browser": true,
@@ -39711,7 +40482,7 @@
39711
40482
  "name": "export",
39712
40483
  "description": "Export the current Trae CN conversation to Markdown",
39713
40484
  "access": "read",
39714
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn export --limit 20 --output /tmp/trae-cn-export.md",
40485
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn export --limit 20 --output /tmp/trae-cn-export.md",
39715
40486
  "domain": "localhost",
39716
40487
  "strategy": "ui",
39717
40488
  "browser": true,
@@ -39745,7 +40516,7 @@
39745
40516
  "name": "model",
39746
40517
  "description": "Read the model label currently shown in the Trae CN chat input",
39747
40518
  "access": "read",
39748
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn model -f json",
40519
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn model -f json",
39749
40520
  "domain": "localhost",
39750
40521
  "strategy": "ui",
39751
40522
  "browser": true,
@@ -39765,7 +40536,7 @@
39765
40536
  "name": "new",
39766
40537
  "description": "Start a new Trae CN task in the current workspace, optionally sending the first prompt",
39767
40538
  "access": "write",
39768
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn new \"请执行你的任务\" -f json",
40539
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn new \"请执行你的任务\" -f json",
39769
40540
  "domain": "localhost",
39770
40541
  "strategy": "ui",
39771
40542
  "browser": true,
@@ -39807,7 +40578,7 @@
39807
40578
  "name": "read",
39808
40579
  "description": "Read the current Trae CN chat conversation",
39809
40580
  "access": "read",
39810
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn read --limit 5 --max-chars 12000 -f json",
40581
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn read --limit 5 --max-chars 12000 -f json",
39811
40582
  "domain": "localhost",
39812
40583
  "strategy": "ui",
39813
40584
  "browser": true,
@@ -39845,7 +40616,7 @@
39845
40616
  "name": "screenshot",
39846
40617
  "description": "Capture a snapshot of the current Trae CN window (DOM + Accessibility tree)",
39847
40618
  "access": "read",
39848
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn screenshot --output /tmp/trae-cn-snapshot.txt",
40619
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn screenshot --output /tmp/trae-cn-snapshot.txt",
39849
40620
  "domain": "localhost",
39850
40621
  "strategy": "ui",
39851
40622
  "browser": true,
@@ -39871,7 +40642,7 @@
39871
40642
  "name": "select-model",
39872
40643
  "description": "Select a model in the current Trae CN chat input",
39873
40644
  "access": "write",
39874
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn select-model \"GPT 5.4\" -f json",
40645
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn select-model \"GPT 5.4\" -f json",
39875
40646
  "domain": "localhost",
39876
40647
  "strategy": "ui",
39877
40648
  "browser": true,
@@ -39901,7 +40672,7 @@
39901
40672
  "name": "send",
39902
40673
  "description": "Send a prompt into the current Trae CN chat input",
39903
40674
  "access": "write",
39904
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn send \"请执行你的任务\" -f json",
40675
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn send \"请执行你的任务\" -f json",
39905
40676
  "domain": "localhost",
39906
40677
  "strategy": "ui",
39907
40678
  "browser": true,
@@ -39927,9 +40698,9 @@
39927
40698
  {
39928
40699
  "site": "trae-cn",
39929
40700
  "name": "setup",
39930
- "description": "Show local setup commands for controlling Trae CN with OpenCLI",
40701
+ "description": "Show local setup commands for controlling Trae CN with ppcli",
39931
40702
  "access": "read",
39932
- "example": "opencli trae-cn setup -f table",
40703
+ "example": "ppcli trae-cn setup -f table",
39933
40704
  "strategy": "local",
39934
40705
  "browser": false,
39935
40706
  "args": [],
@@ -39947,7 +40718,7 @@
39947
40718
  "name": "status",
39948
40719
  "description": "Check active CDP connection to Trae CN and summarize the current workspace/model",
39949
40720
  "access": "read",
39950
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn status -f json",
40721
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn status -f json",
39951
40722
  "domain": "localhost",
39952
40723
  "strategy": "ui",
39953
40724
  "browser": true,
@@ -39972,7 +40743,7 @@
39972
40743
  "name": "targets",
39973
40744
  "description": "List Trae CN CDP targets and show which workspace/window is waiting",
39974
40745
  "access": "read",
39975
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 opencli trae-cn targets -f table",
40746
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 ppcli trae-cn targets -f table",
39976
40747
  "strategy": "local",
39977
40748
  "browser": false,
39978
40749
  "args": [
@@ -40021,7 +40792,7 @@
40021
40792
  "name": "watch",
40022
40793
  "description": "Sample Trae CN activity over time to monitor long-running tasks; optionally approve visible terminal/delete prompts",
40023
40794
  "access": "write",
40024
- "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk opencli trae-cn watch --stream true --duration 120",
40795
+ "example": "OPENCLI_CDP_ENDPOINT=http://127.0.0.1:39240 OPENCLI_CDP_TARGET=talk ppcli trae-cn watch --stream true --duration 120",
40025
40796
  "domain": "localhost",
40026
40797
  "strategy": "ui",
40027
40798
  "browser": true,
@@ -41243,7 +42014,7 @@
41243
42014
  {
41244
42015
  "site": "twitter",
41245
42016
  "name": "bookmark-folder",
41246
- "description": "Read the tweets inside a single Twitter/X bookmark folder. Get the folder id from `opencli twitter bookmark-folders`.",
42017
+ "description": "Read the tweets inside a single Twitter/X bookmark folder. Get the folder id from `ppcli twitter bookmark-folders`.",
41247
42018
  "access": "read",
41248
42019
  "domain": "x.com",
41249
42020
  "strategy": "cookie",
@@ -41254,7 +42025,7 @@
41254
42025
  "type": "string",
41255
42026
  "required": true,
41256
42027
  "positional": true,
41257
- "help": "Folder id from `opencli twitter bookmark-folders`."
42028
+ "help": "Folder id from `ppcli twitter bookmark-folders`."
41258
42029
  },
41259
42030
  {
41260
42031
  "name": "limit",
@@ -41820,7 +42591,7 @@
41820
42591
  "type": "string",
41821
42592
  "required": true,
41822
42593
  "positional": true,
41823
- "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)"
42594
+ "help": "Numeric ID of the list you own (e.g. from `ppcli twitter lists`)"
41824
42595
  },
41825
42596
  {
41826
42597
  "name": "username",
@@ -41856,7 +42627,7 @@
41856
42627
  "type": "string",
41857
42628
  "required": true,
41858
42629
  "positional": true,
41859
- "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)"
42630
+ "help": "Numeric ID of the list you own (e.g. from `ppcli twitter lists`)"
41860
42631
  },
41861
42632
  {
41862
42633
  "name": "usernames",
@@ -41949,7 +42720,7 @@
41949
42720
  "type": "string",
41950
42721
  "required": true,
41951
42722
  "positional": true,
41952
- "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)"
42723
+ "help": "Numeric ID of the list you own (e.g. from `ppcli twitter lists`)"
41953
42724
  },
41954
42725
  {
41955
42726
  "name": "confirm",
@@ -41992,7 +42763,7 @@
41992
42763
  "type": "string",
41993
42764
  "required": true,
41994
42765
  "positional": true,
41995
- "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)"
42766
+ "help": "Numeric ID of the list you own (e.g. from `ppcli twitter lists`)"
41996
42767
  },
41997
42768
  {
41998
42769
  "name": "username",
@@ -42028,7 +42799,7 @@
42028
42799
  "type": "string",
42029
42800
  "required": true,
42030
42801
  "positional": true,
42031
- "help": "Numeric ID of the list you own (e.g. from `opencli twitter lists`)"
42802
+ "help": "Numeric ID of the list you own (e.g. from `ppcli twitter lists`)"
42032
42803
  },
42033
42804
  {
42034
42805
  "name": "usernames",
@@ -42078,7 +42849,7 @@
42078
42849
  "type": "string",
42079
42850
  "required": true,
42080
42851
  "positional": true,
42081
- "help": "Numeric ID of a Twitter/X list (e.g. from `opencli twitter lists`)"
42852
+ "help": "Numeric ID of a Twitter/X list (e.g. from `ppcli twitter lists`)"
42082
42853
  },
42083
42854
  {
42084
42855
  "name": "limit",
@@ -45822,6 +46593,37 @@
45822
46593
  "modulePath": "wikipedia/trending.js",
45823
46594
  "sourceFile": "wikipedia/trending.js"
45824
46595
  },
46596
+ {
46597
+ "site": "wordpress",
46598
+ "name": "add-site",
46599
+ "description": "校验并保存一个命名的 wordpress 自部署站点连接(只保存名称和网址)。",
46600
+ "access": "write",
46601
+ "strategy": "local",
46602
+ "browser": false,
46603
+ "args": [
46604
+ {
46605
+ "name": "name",
46606
+ "type": "str",
46607
+ "required": true,
46608
+ "help": "连接名称,例如“公司博客”"
46609
+ },
46610
+ {
46611
+ "name": "url",
46612
+ "type": "str",
46613
+ "required": true,
46614
+ "help": "站点根网址,例如 https://blog.example.com"
46615
+ }
46616
+ ],
46617
+ "columns": [
46618
+ "status",
46619
+ "name",
46620
+ "url",
46621
+ "default"
46622
+ ],
46623
+ "type": "js",
46624
+ "modulePath": "wordpress/sites.js",
46625
+ "sourceFile": "wordpress/sites.js"
46626
+ },
45825
46627
  {
45826
46628
  "site": "wordpress",
45827
46629
  "name": "login",
@@ -45831,6 +46633,12 @@
45831
46633
  "strategy": "cookie",
45832
46634
  "browser": true,
45833
46635
  "args": [
46636
+ {
46637
+ "name": "site",
46638
+ "type": "str",
46639
+ "required": false,
46640
+ "help": "连接名称或站点网址;省略时使用默认站点"
46641
+ },
45834
46642
  {
45835
46643
  "name": "base-url",
45836
46644
  "type": "str",
@@ -45866,6 +46674,12 @@
45866
46674
  "strategy": "cookie",
45867
46675
  "browser": true,
45868
46676
  "args": [
46677
+ {
46678
+ "name": "site",
46679
+ "type": "str",
46680
+ "required": false,
46681
+ "help": "连接名称或站点网址;省略时使用默认站点"
46682
+ },
45869
46683
  {
45870
46684
  "name": "title",
45871
46685
  "type": "str",
@@ -45937,7 +46751,7 @@
45937
46751
  "name": "base-url",
45938
46752
  "type": "str",
45939
46753
  "required": false,
45940
- "help": "覆盖站点根网址(默认读连接里的 WORDPRESS_BASE_URL)"
46754
+ "help": "兼容旧版:覆盖站点根网址(推荐改用 --site)"
45941
46755
  }
45942
46756
  ],
45943
46757
  "columns": [
@@ -45952,6 +46766,72 @@
45952
46766
  "navigateBefore": false,
45953
46767
  "siteSession": "persistent"
45954
46768
  },
46769
+ {
46770
+ "site": "wordpress",
46771
+ "name": "remove-site",
46772
+ "description": "删除一个 wordpress 站点连接;不会清除浏览器里的站点 cookie。",
46773
+ "access": "write",
46774
+ "strategy": "local",
46775
+ "browser": false,
46776
+ "args": [
46777
+ {
46778
+ "name": "site",
46779
+ "type": "str",
46780
+ "required": true,
46781
+ "help": "要删除的连接名称"
46782
+ }
46783
+ ],
46784
+ "columns": [
46785
+ "status",
46786
+ "name",
46787
+ "url"
46788
+ ],
46789
+ "type": "js",
46790
+ "modulePath": "wordpress/sites.js",
46791
+ "sourceFile": "wordpress/sites.js"
46792
+ },
46793
+ {
46794
+ "site": "wordpress",
46795
+ "name": "sites",
46796
+ "description": "列出已保存的 wordpress 自部署站点连接。",
46797
+ "access": "read",
46798
+ "strategy": "local",
46799
+ "browser": false,
46800
+ "args": [],
46801
+ "columns": [
46802
+ "name",
46803
+ "url",
46804
+ "default"
46805
+ ],
46806
+ "type": "js",
46807
+ "modulePath": "wordpress/sites.js",
46808
+ "sourceFile": "wordpress/sites.js"
46809
+ },
46810
+ {
46811
+ "site": "wordpress",
46812
+ "name": "use-site",
46813
+ "description": "设置 wordpress 默认站点;之后省略 --site 时使用它。",
46814
+ "access": "write",
46815
+ "strategy": "local",
46816
+ "browser": false,
46817
+ "args": [
46818
+ {
46819
+ "name": "site",
46820
+ "type": "str",
46821
+ "required": true,
46822
+ "help": "要设为默认的连接名称"
46823
+ }
46824
+ ],
46825
+ "columns": [
46826
+ "status",
46827
+ "name",
46828
+ "url",
46829
+ "default"
46830
+ ],
46831
+ "type": "js",
46832
+ "modulePath": "wordpress/sites.js",
46833
+ "sourceFile": "wordpress/sites.js"
46834
+ },
45955
46835
  {
45956
46836
  "site": "wordpress",
45957
46837
  "name": "whoami",
@@ -45960,7 +46840,20 @@
45960
46840
  "domain": "wordpress.org",
45961
46841
  "strategy": "cookie",
45962
46842
  "browser": true,
45963
- "args": [],
46843
+ "args": [
46844
+ {
46845
+ "name": "site",
46846
+ "type": "str",
46847
+ "required": false,
46848
+ "help": "连接名称或站点网址;省略时使用默认站点"
46849
+ },
46850
+ {
46851
+ "name": "base-url",
46852
+ "type": "str",
46853
+ "required": false,
46854
+ "help": "兼容旧版:站点根网址(推荐改用 --site)"
46855
+ }
46856
+ ],
45964
46857
  "columns": [
45965
46858
  "logged_in",
45966
46859
  "user_id",
@@ -47180,7 +48073,7 @@
47180
48073
  "type": "str",
47181
48074
  "required": true,
47182
48075
  "positional": true,
47183
- "help": "Draft id returned by `opencli xiaohongshu drafts`"
48076
+ "help": "Draft id returned by `ppcli xiaohongshu drafts`"
47184
48077
  },
47185
48078
  {
47186
48079
  "name": "type",
@@ -47222,7 +48115,7 @@
47222
48115
  "type": "str",
47223
48116
  "required": true,
47224
48117
  "positional": true,
47225
- "help": "Draft id returned by `opencli xiaohongshu drafts`"
48118
+ "help": "Draft id returned by `ppcli xiaohongshu drafts`"
47226
48119
  },
47227
48120
  {
47228
48121
  "name": "type",
@@ -48656,7 +49549,7 @@
48656
49549
  "type": "str",
48657
49550
  "required": true,
48658
49551
  "positional": true,
48659
- "help": "Image URL (upload via \"opencli yollomi upload\" first)"
49552
+ "help": "Image URL (upload via \"ppcli yollomi upload\" first)"
48660
49553
  },
48661
49554
  {
48662
49555
  "name": "prompt",
@@ -48705,7 +49598,7 @@
48705
49598
  "type": "str",
48706
49599
  "required": true,
48707
49600
  "positional": true,
48708
- "help": "Input image URL (upload via \"opencli yollomi upload\" first)"
49601
+ "help": "Input image URL (upload via \"ppcli yollomi upload\" first)"
48709
49602
  },
48710
49603
  {
48711
49604
  "name": "prompt",
@@ -48840,7 +49733,7 @@
48840
49733
  "name": "image",
48841
49734
  "type": "str",
48842
49735
  "required": false,
48843
- "help": "Input image URL for image-to-image (upload via \"opencli yollomi upload\" first)"
49736
+ "help": "Input image URL for image-to-image (upload via \"ppcli yollomi upload\" first)"
48844
49737
  },
48845
49738
  {
48846
49739
  "name": "output",
@@ -49047,7 +49940,7 @@
49047
49940
  "name": "person",
49048
49941
  "type": "str",
49049
49942
  "required": true,
49050
- "help": "Person photo URL (upload via \"opencli yollomi upload\" first)"
49943
+ "help": "Person photo URL (upload via \"ppcli yollomi upload\" first)"
49051
49944
  },
49052
49945
  {
49053
49946
  "name": "cloth",