publishport-opencli 1.8.4-pp.2 → 1.8.4-pp.5

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 (171) hide show
  1. package/cli-manifest.json +2373 -5
  2. package/clis/_shared/article/auth.js +95 -0
  3. package/clis/_shared/article/auth.test.js +71 -0
  4. package/clis/_shared/article/douban-md2draft.js +110 -0
  5. package/clis/_shared/article/format.js +71 -0
  6. package/clis/_shared/article/format.test.js +68 -0
  7. package/clis/_shared/article/images.js +213 -0
  8. package/clis/_shared/article/images.test.js +182 -0
  9. package/clis/_shared/article/login.js +90 -0
  10. package/clis/_shared/article/page-runtime.js +593 -0
  11. package/clis/_shared/article/page-runtime.test.js +155 -0
  12. package/clis/_shared/article/publish.js +187 -0
  13. package/clis/_shared/article/publish.test.js +104 -0
  14. package/clis/baijiahao/article.js +392 -0
  15. package/clis/baijiahao/article.test.js +395 -0
  16. package/clis/baijiahao/lists.js +70 -0
  17. package/clis/baijiahao/whoami.js +28 -0
  18. package/clis/bilibili/article.js +393 -0
  19. package/clis/bilibili/article.test.js +384 -0
  20. package/clis/bilibili/categories.js +56 -0
  21. package/clis/bilibili/drafts.js +60 -0
  22. package/clis/bilibili/dynamic-post.js +81 -0
  23. package/clis/cnblogs/article.js +308 -0
  24. package/clis/cnblogs/article.test.js +346 -0
  25. package/clis/cnblogs/whoami.js +22 -0
  26. package/clis/csdn/article.js +383 -0
  27. package/clis/csdn/article.test.js +378 -0
  28. package/clis/csdn/columns.js +41 -0
  29. package/clis/csdn/login.js +17 -0
  30. package/clis/csdn/whoami.js +32 -0
  31. package/clis/cto51/article.js +271 -0
  32. package/clis/cto51/article.test.js +326 -0
  33. package/clis/cto51/whoami.js +28 -0
  34. package/clis/douban/article.js +201 -0
  35. package/clis/douban/article.test.js +136 -0
  36. package/clis/douban/auth.js +16 -8
  37. package/clis/eastmoney/article.js +340 -0
  38. package/clis/eastmoney/article.test.js +427 -0
  39. package/clis/eastmoney/whoami.js +18 -0
  40. package/clis/imooc/article.js +192 -0
  41. package/clis/imooc/article.test.js +264 -0
  42. package/clis/imooc/whoami.js +28 -0
  43. package/clis/instagram/detail.js +150 -0
  44. package/clis/instagram/detail.test.js +137 -0
  45. package/clis/instagram/download.js +4 -3
  46. package/clis/instagram/user.js +465 -38
  47. package/clis/instagram/user.test.js +282 -0
  48. package/clis/juejin/article.js +503 -0
  49. package/clis/juejin/article.test.js +299 -0
  50. package/clis/juejin/categories.js +36 -0
  51. package/clis/juejin/login.js +15 -0
  52. package/clis/juejin/tags.js +37 -0
  53. package/clis/juejin/whoami.js +29 -0
  54. package/clis/linkedin/connect.js +1 -1
  55. package/clis/linkedin/job-detail.js +113 -4
  56. package/clis/linkedin/job-detail.test.js +27 -1
  57. package/clis/linkedin/people-search.js +121 -3
  58. package/clis/linkedin/profile-experience.js +3 -3
  59. package/clis/linkedin/profile-projects.js +1 -1
  60. package/clis/linkedin/safe-send.js +105 -2
  61. package/clis/linkedin/safe-send.test.js +51 -0
  62. package/clis/linkedin/sent-invitations.js +3 -0
  63. package/clis/linkedin/thread-snapshot.js +1 -8
  64. package/clis/oschina/article.js +237 -0
  65. package/clis/oschina/article.test.js +361 -0
  66. package/clis/oschina/catalogs.js +31 -0
  67. package/clis/oschina/login.js +16 -0
  68. package/clis/oschina/whoami.js +30 -0
  69. package/clis/segmentfault/article.js +406 -0
  70. package/clis/segmentfault/article.test.js +470 -0
  71. package/clis/segmentfault/channels.js +64 -0
  72. package/clis/segmentfault/tags.js +67 -0
  73. package/clis/segmentfault/whoami.js +48 -0
  74. package/clis/sohu/article.js +501 -0
  75. package/clis/sohu/article.test.js +397 -0
  76. package/clis/sohu/attributes.js +36 -0
  77. package/clis/sohu/categories.js +48 -0
  78. package/clis/sohu/channels.js +34 -0
  79. package/clis/sohu/columns.js +36 -0
  80. package/clis/sohu/topics.js +50 -0
  81. package/clis/sohu/whoami.js +22 -0
  82. package/clis/tiktok/following.js +8 -1
  83. package/clis/twitter/post.js +162 -6
  84. package/clis/twitter/post.test.js +59 -0
  85. package/clis/twitter/quote.js +88 -26
  86. package/clis/twitter/quote.test.js +41 -5
  87. package/clis/twitter/reply.js +4 -0
  88. package/clis/twitter/schedule.js +252 -0
  89. package/clis/twitter/schedule.test.js +86 -0
  90. package/clis/twitter/scheduled-delete.js +105 -0
  91. package/clis/twitter/scheduled-delete.test.js +58 -0
  92. package/clis/twitter/scheduled-list.js +43 -0
  93. package/clis/twitter/scheduled-list.test.js +36 -0
  94. package/clis/twitter/scheduled-utils.js +29 -0
  95. package/clis/weixin/article.js +332 -0
  96. package/clis/weixin/article.test.js +299 -0
  97. package/clis/weixin/create-draft.js +167 -41
  98. package/clis/weixin/whoami.js +26 -0
  99. package/clis/woshipm/article.js +301 -0
  100. package/clis/woshipm/article.test.js +305 -0
  101. package/clis/woshipm/whoami.js +29 -0
  102. package/clis/xiaohongshu/download.js +21 -3
  103. package/clis/xiaohongshu/download.test.js +76 -0
  104. package/clis/xiaohongshu/search.js +54 -4
  105. package/clis/xiaohongshu/search.test.js +82 -13
  106. package/clis/xueqiu/article.js +388 -0
  107. package/clis/xueqiu/article.test.js +505 -0
  108. package/clis/xueqiu/events.js +58 -0
  109. package/clis/xueqiu/hashtags.js +71 -0
  110. package/clis/xueqiu/stocks.js +49 -0
  111. package/clis/xueqiu/users.js +48 -0
  112. package/clis/yuque/article.js +293 -0
  113. package/clis/yuque/article.test.js +415 -0
  114. package/clis/yuque/whoami.js +60 -0
  115. package/clis/zhihu/article-transform.js +100 -0
  116. package/clis/zhihu/article-transform.test.js +43 -0
  117. package/clis/zhihu/article.js +130 -0
  118. package/clis/zhihu/pin.js +79 -0
  119. package/dist/src/browser/daemon-client.js +26 -6
  120. package/dist/src/browser/daemon-client.test.js +53 -0
  121. package/dist/src/browser/stealth.js +31 -0
  122. package/dist/src/browser/trace.d.ts +21 -0
  123. package/dist/src/browser/trace.js +91 -0
  124. package/dist/src/build-manifest.js +1 -1
  125. package/dist/src/cli.js +10 -3
  126. package/dist/src/commanderAdapter.js +2 -0
  127. package/dist/src/commanderAdapter.test.js +35 -1
  128. package/dist/src/commands/auth.js +26 -26
  129. package/dist/src/commands/auth.test.js +58 -1
  130. package/dist/src/daemon.js +16 -2
  131. package/dist/src/discovery.js +15 -1
  132. package/dist/src/download/index.js +7 -1
  133. package/dist/src/download/index.test.js +3 -0
  134. package/dist/src/engine.test.js +25 -0
  135. package/dist/src/errors.d.ts +3 -0
  136. package/dist/src/errors.js +19 -0
  137. package/dist/src/execution.js +5 -1
  138. package/dist/src/external.js +16 -0
  139. package/dist/src/external.test.js +82 -4
  140. package/dist/src/launcher.js +8 -2
  141. package/dist/src/launcher.test.js +40 -2
  142. package/dist/src/node-network.js +4 -1
  143. package/dist/src/node-network.test.js +28 -2
  144. package/dist/src/output.js +9 -2
  145. package/dist/src/output.test.js +26 -0
  146. package/dist/src/pipeline/steps/fetch.js +17 -2
  147. package/dist/src/pipeline/steps/fetch.test.js +71 -0
  148. package/dist/src/pipeline/steps/transform.js +28 -1
  149. package/dist/src/pipeline/template.js +20 -4
  150. package/dist/src/pipeline/template.test.js +37 -0
  151. package/dist/src/pipeline/transform.test.js +41 -0
  152. package/dist/src/plugin.js +6 -1
  153. package/dist/src/plugin.test.js +25 -0
  154. package/dist/src/rate-limit.d.ts +15 -0
  155. package/dist/src/rate-limit.js +125 -0
  156. package/dist/src/rate-limit.test.d.ts +1 -0
  157. package/dist/src/rate-limit.test.js +66 -0
  158. package/dist/src/verify.d.ts +5 -4
  159. package/dist/src/verify.js +9 -5
  160. package/dist/src/verify.test.d.ts +8 -0
  161. package/dist/src/verify.test.js +63 -0
  162. package/docs/guide/browser-bridge.md +94 -0
  163. package/docs/guide/electron-app-cli.md +199 -0
  164. package/docs/guide/exit-codes.md +24 -0
  165. package/docs/guide/extending-opencli.md +134 -0
  166. package/docs/guide/getting-started.md +81 -0
  167. package/docs/guide/installation.md +52 -0
  168. package/docs/guide/plugins.md +226 -0
  169. package/docs/guide/remote-orchestration.md +116 -0
  170. package/docs/guide/troubleshooting.md +69 -0
  171. package/package.json +5 -1
package/cli-manifest.json CHANGED
@@ -3029,6 +3029,145 @@
3029
3029
  "modulePath": "baidu-scholar/search.js",
3030
3030
  "sourceFile": "baidu-scholar/search.js"
3031
3031
  },
3032
+ {
3033
+ "site": "baijiahao",
3034
+ "name": "article",
3035
+ "description": "发布百家号文章。默认正式发布(需 --cover 封面),加 --draft 仅存草稿(草稿不需要封面)。正文默认 Markdown,图片自动转存到百家号图床。",
3036
+ "access": "write",
3037
+ "domain": "baijiahao.baidu.com",
3038
+ "strategy": "cookie",
3039
+ "browser": true,
3040
+ "args": [
3041
+ {
3042
+ "name": "title",
3043
+ "type": "str",
3044
+ "required": true,
3045
+ "positional": true,
3046
+ "help": "文章标题"
3047
+ },
3048
+ {
3049
+ "name": "text",
3050
+ "type": "str",
3051
+ "required": false,
3052
+ "positional": true,
3053
+ "help": "文章正文(默认 Markdown;传 --html 则视为原始 HTML)"
3054
+ },
3055
+ {
3056
+ "name": "file",
3057
+ "type": "str",
3058
+ "required": false,
3059
+ "help": "正文文件路径(UTF-8,默认 Markdown)"
3060
+ },
3061
+ {
3062
+ "name": "html",
3063
+ "type": "boolean",
3064
+ "required": false,
3065
+ "help": "将正文视为原始 HTML 而非 Markdown"
3066
+ },
3067
+ {
3068
+ "name": "cover",
3069
+ "type": "str",
3070
+ "required": false,
3071
+ "help": "封面图 URL(正式发布必填;会先转存到百家号图床。草稿模式可不传)"
3072
+ },
3073
+ {
3074
+ "name": "abstract",
3075
+ "type": "str",
3076
+ "required": false,
3077
+ "help": "文章摘要(可空,正式发布时写入;草稿模式忽略)"
3078
+ },
3079
+ {
3080
+ "name": "author",
3081
+ "type": "str",
3082
+ "required": false,
3083
+ "help": "作者署名(可空,正式发布时写入;草稿模式忽略)"
3084
+ },
3085
+ {
3086
+ "name": "draft",
3087
+ "type": "boolean",
3088
+ "required": false,
3089
+ "help": "仅保存草稿,不正式发布(草稿不需要封面)"
3090
+ },
3091
+ {
3092
+ "name": "execute",
3093
+ "type": "boolean",
3094
+ "required": false,
3095
+ "help": "真正执行写操作。不加此参数时命令拒绝写入。"
3096
+ }
3097
+ ],
3098
+ "columns": [
3099
+ "status",
3100
+ "outcome",
3101
+ "message",
3102
+ "target_type",
3103
+ "target",
3104
+ "created_target",
3105
+ "created_url"
3106
+ ],
3107
+ "type": "js",
3108
+ "modulePath": "baijiahao/article.js",
3109
+ "sourceFile": "baijiahao/article.js",
3110
+ "navigateBefore": "https://baijiahao.baidu.com"
3111
+ },
3112
+ {
3113
+ "site": "baijiahao",
3114
+ "name": "lists",
3115
+ "description": "列出当前账号在百家号已发布的文章(article_id + 标题 + 阅读/推荐量 + 是否可撤回),供发布后回查幂等、取 article_id。",
3116
+ "access": "read",
3117
+ "domain": "baijiahao.baidu.com",
3118
+ "strategy": "cookie",
3119
+ "browser": true,
3120
+ "args": [
3121
+ {
3122
+ "name": "search",
3123
+ "type": "str",
3124
+ "required": false,
3125
+ "help": "按标题关键词过滤(可空)"
3126
+ },
3127
+ {
3128
+ "name": "page",
3129
+ "type": "str",
3130
+ "required": false,
3131
+ "help": "页码,默认 1"
3132
+ },
3133
+ {
3134
+ "name": "page_size",
3135
+ "type": "str",
3136
+ "required": false,
3137
+ "help": "每页条数,默认 10"
3138
+ }
3139
+ ],
3140
+ "columns": [
3141
+ "article_id",
3142
+ "title",
3143
+ "read_amount",
3144
+ "rec_amount",
3145
+ "can_withdraw"
3146
+ ],
3147
+ "type": "js",
3148
+ "modulePath": "baijiahao/lists.js",
3149
+ "sourceFile": "baijiahao/lists.js",
3150
+ "navigateBefore": "https://baijiahao.baidu.com"
3151
+ },
3152
+ {
3153
+ "site": "baijiahao",
3154
+ "name": "whoami",
3155
+ "description": "检测百家号当前登录状态,返回账号信息。",
3156
+ "access": "read",
3157
+ "domain": "baijiahao.baidu.com",
3158
+ "strategy": "cookie",
3159
+ "browser": true,
3160
+ "args": [],
3161
+ "columns": [
3162
+ "logged_in",
3163
+ "user_id",
3164
+ "username"
3165
+ ],
3166
+ "type": "js",
3167
+ "modulePath": "baijiahao/whoami.js",
3168
+ "sourceFile": "baijiahao/whoami.js",
3169
+ "navigateBefore": "https://baijiahao.baidu.com"
3170
+ },
3032
3171
  {
3033
3172
  "site": "band",
3034
3173
  "name": "bands",
@@ -3482,6 +3621,139 @@
3482
3621
  "modulePath": "bbc/topic.js",
3483
3622
  "sourceFile": "bbc/topic.js"
3484
3623
  },
3624
+ {
3625
+ "site": "bilibili",
3626
+ "name": "article",
3627
+ "description": "发布 B站专栏长文(opus/article)。默认正式发布,加 --draft 仅存草稿。正文默认 Markdown,图片自动转存至 B站图床。正式发布必填 --category(合法值用 `bilibili categories` 取)。",
3628
+ "access": "write",
3629
+ "domain": "member.bilibili.com",
3630
+ "strategy": "cookie",
3631
+ "browser": true,
3632
+ "args": [
3633
+ {
3634
+ "name": "title",
3635
+ "type": "str",
3636
+ "required": true,
3637
+ "positional": true,
3638
+ "help": "文章标题"
3639
+ },
3640
+ {
3641
+ "name": "text",
3642
+ "type": "str",
3643
+ "required": false,
3644
+ "positional": true,
3645
+ "help": "正文(默认 Markdown;加 --html 则作 HTML 处理)"
3646
+ },
3647
+ {
3648
+ "name": "file",
3649
+ "type": "str",
3650
+ "required": false,
3651
+ "help": "正文文件路径(UTF-8,默认 Markdown)"
3652
+ },
3653
+ {
3654
+ "name": "html",
3655
+ "type": "boolean",
3656
+ "required": false,
3657
+ "help": "将正文视为原始 HTML 而非 Markdown"
3658
+ },
3659
+ {
3660
+ "name": "category",
3661
+ "type": "str",
3662
+ "required": false,
3663
+ "help": "专栏分类 id(正式发布必填,叶子分类)。合法值用 `bilibili categories` 列举,禁止臆造。"
3664
+ },
3665
+ {
3666
+ "name": "tid",
3667
+ "type": "int",
3668
+ "default": 4,
3669
+ "required": false,
3670
+ "help": "封面版式:4=单图 / 3=三图(按封面图数量定,默认 4)"
3671
+ },
3672
+ {
3673
+ "name": "cover",
3674
+ "type": "str",
3675
+ "required": false,
3676
+ "help": "封面图源 URL(可空);会先经 upcover 上传到 B站图床再作 banner_url"
3677
+ },
3678
+ {
3679
+ "name": "banner-url",
3680
+ "type": "str",
3681
+ "required": false,
3682
+ "help": "封面图的 B站 CDN url(可空,已有则直接用,跳过 upcover 上传)"
3683
+ },
3684
+ {
3685
+ "name": "summary",
3686
+ "type": "str",
3687
+ "required": false,
3688
+ "help": "文章摘要/digest(可空)"
3689
+ },
3690
+ {
3691
+ "name": "tags",
3692
+ "type": "str",
3693
+ "required": false,
3694
+ "help": "标签,逗号拼接的自由文本字符串(可空,非闭合词表)"
3695
+ },
3696
+ {
3697
+ "name": "reprint",
3698
+ "type": "boolean",
3699
+ "required": false,
3700
+ "help": "标记为转载(默认原创);加此参数则 original=0、reprint=1"
3701
+ },
3702
+ {
3703
+ "name": "list-id",
3704
+ "type": "int",
3705
+ "default": 0,
3706
+ "required": false,
3707
+ "help": "文集编号(默认 0=不加入文集)"
3708
+ },
3709
+ {
3710
+ "name": "draft",
3711
+ "type": "boolean",
3712
+ "required": false,
3713
+ "help": "仅保存草稿,不正式发布"
3714
+ },
3715
+ {
3716
+ "name": "execute",
3717
+ "type": "boolean",
3718
+ "required": false,
3719
+ "help": "实际提交。不加此参数时命令拒绝写入。"
3720
+ }
3721
+ ],
3722
+ "columns": [
3723
+ "status",
3724
+ "outcome",
3725
+ "message",
3726
+ "target_type",
3727
+ "target",
3728
+ "created_target",
3729
+ "created_url"
3730
+ ],
3731
+ "type": "js",
3732
+ "modulePath": "bilibili/article.js",
3733
+ "sourceFile": "bilibili/article.js",
3734
+ "navigateBefore": "https://member.bilibili.com"
3735
+ },
3736
+ {
3737
+ "site": "bilibili",
3738
+ "name": "categories",
3739
+ "description": "列出 B站专栏文章分类树(id + 名称 + 父分类),供 `bilibili article --category` 取合法分类 id。优先选叶子分类(is_leaf=true)。",
3740
+ "access": "read",
3741
+ "domain": "member.bilibili.com",
3742
+ "strategy": "cookie",
3743
+ "browser": true,
3744
+ "args": [],
3745
+ "columns": [
3746
+ "category_id",
3747
+ "category_name",
3748
+ "parent_id",
3749
+ "parent_name",
3750
+ "is_leaf"
3751
+ ],
3752
+ "type": "js",
3753
+ "modulePath": "bilibili/categories.js",
3754
+ "sourceFile": "bilibili/categories.js",
3755
+ "navigateBefore": "https://member.bilibili.com"
3756
+ },
3485
3757
  {
3486
3758
  "site": "bilibili",
3487
3759
  "name": "comment",
@@ -3629,6 +3901,48 @@
3629
3901
  "sourceFile": "bilibili/download.js",
3630
3902
  "navigateBefore": "https://www.bilibili.com"
3631
3903
  },
3904
+ {
3905
+ "site": "bilibili",
3906
+ "name": "drafts",
3907
+ "description": "列出当前用户的 B站专栏草稿(aid + 标题 + 分类),用于发布后回查或取 aid。",
3908
+ "access": "read",
3909
+ "domain": "member.bilibili.com",
3910
+ "strategy": "cookie",
3911
+ "browser": true,
3912
+ "args": [
3913
+ {
3914
+ "name": "keyword",
3915
+ "type": "str",
3916
+ "required": false,
3917
+ "help": "按标题关键词过滤(可空)"
3918
+ },
3919
+ {
3920
+ "name": "page",
3921
+ "type": "int",
3922
+ "default": 1,
3923
+ "required": false,
3924
+ "help": "页码,默认 1"
3925
+ },
3926
+ {
3927
+ "name": "size",
3928
+ "type": "int",
3929
+ "default": 10,
3930
+ "required": false,
3931
+ "help": "每页条数,默认 10"
3932
+ }
3933
+ ],
3934
+ "columns": [
3935
+ "aid",
3936
+ "title",
3937
+ "category",
3938
+ "words",
3939
+ "mtime"
3940
+ ],
3941
+ "type": "js",
3942
+ "modulePath": "bilibili/drafts.js",
3943
+ "sourceFile": "bilibili/drafts.js",
3944
+ "navigateBefore": "https://member.bilibili.com"
3945
+ },
3632
3946
  {
3633
3947
  "site": "bilibili",
3634
3948
  "name": "dynamic",
@@ -3658,6 +3972,40 @@
3658
3972
  "sourceFile": "bilibili/dynamic.js",
3659
3973
  "navigateBefore": "https://www.bilibili.com"
3660
3974
  },
3975
+ {
3976
+ "site": "bilibili",
3977
+ "name": "dynamic-post",
3978
+ "description": "发布 B站动态(纯文本,官方 API,需登录)",
3979
+ "access": "write",
3980
+ "domain": "www.bilibili.com",
3981
+ "strategy": "cookie",
3982
+ "browser": true,
3983
+ "args": [
3984
+ {
3985
+ "name": "text",
3986
+ "type": "str",
3987
+ "required": true,
3988
+ "positional": true,
3989
+ "help": "Dynamic text content"
3990
+ },
3991
+ {
3992
+ "name": "execute",
3993
+ "type": "boolean",
3994
+ "required": false,
3995
+ "help": "Actually publish. Without it the command refuses to write."
3996
+ }
3997
+ ],
3998
+ "columns": [
3999
+ "status",
4000
+ "dynamic_id",
4001
+ "text",
4002
+ "url"
4003
+ ],
4004
+ "type": "js",
4005
+ "modulePath": "bilibili/dynamic-post.js",
4006
+ "sourceFile": "bilibili/dynamic-post.js",
4007
+ "navigateBefore": "https://www.bilibili.com"
4008
+ },
3661
4009
  {
3662
4010
  "site": "bilibili",
3663
4011
  "name": "favorite",
@@ -7463,6 +7811,87 @@
7463
7811
  "navigateBefore": false,
7464
7812
  "siteSession": "persistent"
7465
7813
  },
7814
+ {
7815
+ "site": "cnblogs",
7816
+ "name": "article",
7817
+ "description": "发布博客园文章(Markdown)。正文默认 Markdown;图片自动转存到博客园图床。",
7818
+ "access": "write",
7819
+ "domain": "cnblogs.com",
7820
+ "strategy": "cookie",
7821
+ "browser": true,
7822
+ "args": [
7823
+ {
7824
+ "name": "title",
7825
+ "type": "str",
7826
+ "required": true,
7827
+ "positional": true,
7828
+ "help": "文章标题"
7829
+ },
7830
+ {
7831
+ "name": "text",
7832
+ "type": "str",
7833
+ "required": false,
7834
+ "positional": true,
7835
+ "help": "文章正文(Markdown,默认;--html 时按 HTML 处理)"
7836
+ },
7837
+ {
7838
+ "name": "file",
7839
+ "type": "str",
7840
+ "required": false,
7841
+ "help": "从文件读取正文(UTF-8,Markdown 默认)"
7842
+ },
7843
+ {
7844
+ "name": "html",
7845
+ "type": "boolean",
7846
+ "required": false,
7847
+ "help": "将正文当作原始 HTML 而非 Markdown"
7848
+ },
7849
+ {
7850
+ "name": "draft",
7851
+ "type": "boolean",
7852
+ "required": false,
7853
+ "help": "仅保存草稿,不发布"
7854
+ },
7855
+ {
7856
+ "name": "execute",
7857
+ "type": "boolean",
7858
+ "required": false,
7859
+ "help": "实际执行写入。不加此参数命令拒绝写入。"
7860
+ }
7861
+ ],
7862
+ "columns": [
7863
+ "status",
7864
+ "outcome",
7865
+ "message",
7866
+ "target_type",
7867
+ "target",
7868
+ "created_target",
7869
+ "created_url"
7870
+ ],
7871
+ "type": "js",
7872
+ "modulePath": "cnblogs/article.js",
7873
+ "sourceFile": "cnblogs/article.js",
7874
+ "navigateBefore": "https://cnblogs.com"
7875
+ },
7876
+ {
7877
+ "site": "cnblogs",
7878
+ "name": "whoami",
7879
+ "description": "查看当前博客园登录账号信息。",
7880
+ "access": "read",
7881
+ "domain": "cnblogs.com",
7882
+ "strategy": "cookie",
7883
+ "browser": true,
7884
+ "args": [],
7885
+ "columns": [
7886
+ "logged_in",
7887
+ "user_id",
7888
+ "username"
7889
+ ],
7890
+ "type": "js",
7891
+ "modulePath": "cnblogs/whoami.js",
7892
+ "sourceFile": "cnblogs/whoami.js",
7893
+ "navigateBefore": "https://cnblogs.com"
7894
+ },
7466
7895
  {
7467
7896
  "site": "cnki",
7468
7897
  "name": "search",
@@ -8792,6 +9221,235 @@
8792
9221
  "modulePath": "crates/search.js",
8793
9222
  "sourceFile": "crates/search.js"
8794
9223
  },
9224
+ {
9225
+ "site": "csdn",
9226
+ "name": "article",
9227
+ "description": "发布 CSDN 博客文章。默认正式发布,加 --draft 仅存草稿。正文默认 Markdown,图片自动转存到 CSDN 图床。",
9228
+ "access": "write",
9229
+ "domain": "editor.csdn.net",
9230
+ "strategy": "cookie",
9231
+ "browser": true,
9232
+ "args": [
9233
+ {
9234
+ "name": "title",
9235
+ "type": "str",
9236
+ "required": true,
9237
+ "positional": true,
9238
+ "help": "文章标题"
9239
+ },
9240
+ {
9241
+ "name": "text",
9242
+ "type": "str",
9243
+ "required": false,
9244
+ "positional": true,
9245
+ "help": "正文(Markdown,与 --file 二选一)"
9246
+ },
9247
+ {
9248
+ "name": "file",
9249
+ "type": "str",
9250
+ "required": false,
9251
+ "help": "正文文件路径(UTF-8 编码 Markdown 文件)"
9252
+ },
9253
+ {
9254
+ "name": "html",
9255
+ "type": "boolean",
9256
+ "required": false,
9257
+ "help": "将正文视为 HTML 而非 Markdown"
9258
+ },
9259
+ {
9260
+ "name": "category",
9261
+ "type": "str",
9262
+ "required": false,
9263
+ "help": "个人专栏名(CSDN 的「分类」即个人专栏),逗号分隔最多 3 个;合法值用 `csdn columns` 列举。可空=不归专栏"
9264
+ },
9265
+ {
9266
+ "name": "tags",
9267
+ "type": "str",
9268
+ "required": false,
9269
+ "help": "标签,自由文本逗号分隔最多 5 个(CSDN 标签是自由词,无需查接口)。可空"
9270
+ },
9271
+ {
9272
+ "name": "description",
9273
+ "type": "str",
9274
+ "required": false,
9275
+ "help": "文章摘要,最多 256 字(可空,CSDN 自动截取正文)"
9276
+ },
9277
+ {
9278
+ "name": "draft",
9279
+ "type": "boolean",
9280
+ "required": false,
9281
+ "help": "仅保存为草稿,不发布"
9282
+ },
9283
+ {
9284
+ "name": "execute",
9285
+ "type": "boolean",
9286
+ "required": false,
9287
+ "help": "真正执行写操作,不加此参数则拒绝发布"
9288
+ }
9289
+ ],
9290
+ "columns": [
9291
+ "status",
9292
+ "outcome",
9293
+ "message",
9294
+ "target_type",
9295
+ "target",
9296
+ "created_target",
9297
+ "created_url"
9298
+ ],
9299
+ "type": "js",
9300
+ "modulePath": "csdn/article.js",
9301
+ "sourceFile": "csdn/article.js",
9302
+ "navigateBefore": "https://editor.csdn.net"
9303
+ },
9304
+ {
9305
+ "site": "csdn",
9306
+ "name": "columns",
9307
+ "description": "列出当前用户的 CSDN 个人专栏(id + 名称),供 `csdn article --category` 取合法专栏名。",
9308
+ "access": "read",
9309
+ "domain": "editor.csdn.net",
9310
+ "strategy": "cookie",
9311
+ "browser": true,
9312
+ "args": [],
9313
+ "columns": [
9314
+ "column_id",
9315
+ "column_name",
9316
+ "paid"
9317
+ ],
9318
+ "type": "js",
9319
+ "modulePath": "csdn/columns.js",
9320
+ "sourceFile": "csdn/columns.js",
9321
+ "navigateBefore": "https://editor.csdn.net"
9322
+ },
9323
+ {
9324
+ "site": "csdn",
9325
+ "name": "login",
9326
+ "description": "打开 CSDN 登录页并等待浏览器完成登录(供桌面客户端引导登录)。",
9327
+ "access": "write",
9328
+ "domain": "csdn.net",
9329
+ "strategy": "cookie",
9330
+ "browser": true,
9331
+ "args": [
9332
+ {
9333
+ "name": "timeout",
9334
+ "type": "int",
9335
+ "default": 300,
9336
+ "required": false,
9337
+ "help": "等待用户完成登录的最长秒数"
9338
+ }
9339
+ ],
9340
+ "columns": [
9341
+ "status",
9342
+ "logged_in",
9343
+ "user_id",
9344
+ "username"
9345
+ ],
9346
+ "type": "js",
9347
+ "modulePath": "csdn/login.js",
9348
+ "sourceFile": "csdn/login.js",
9349
+ "navigateBefore": false,
9350
+ "siteSession": "persistent",
9351
+ "defaultWindowMode": "foreground"
9352
+ },
9353
+ {
9354
+ "site": "csdn",
9355
+ "name": "whoami",
9356
+ "description": "查看当前登录的 CSDN 账号信息",
9357
+ "access": "read",
9358
+ "domain": "editor.csdn.net",
9359
+ "strategy": "cookie",
9360
+ "browser": true,
9361
+ "args": [],
9362
+ "columns": [
9363
+ "logged_in",
9364
+ "user_id",
9365
+ "username"
9366
+ ],
9367
+ "type": "js",
9368
+ "modulePath": "csdn/whoami.js",
9369
+ "sourceFile": "csdn/whoami.js",
9370
+ "navigateBefore": "https://editor.csdn.net"
9371
+ },
9372
+ {
9373
+ "site": "cto51",
9374
+ "name": "article",
9375
+ "description": "发布 51CTO 博客文章(草稿)。正文默认为 Markdown;图片自动转存到 51CTO 图床(腾讯云 COS)。",
9376
+ "access": "write",
9377
+ "domain": "blog.51cto.com",
9378
+ "strategy": "cookie",
9379
+ "browser": true,
9380
+ "args": [
9381
+ {
9382
+ "name": "title",
9383
+ "type": "str",
9384
+ "required": true,
9385
+ "positional": true,
9386
+ "help": "文章标题"
9387
+ },
9388
+ {
9389
+ "name": "text",
9390
+ "type": "str",
9391
+ "required": false,
9392
+ "positional": true,
9393
+ "help": "文章正文(默认 Markdown;传 --html 则视为 HTML)"
9394
+ },
9395
+ {
9396
+ "name": "file",
9397
+ "type": "str",
9398
+ "required": false,
9399
+ "help": "正文文件路径(UTF-8,默认 Markdown)"
9400
+ },
9401
+ {
9402
+ "name": "html",
9403
+ "type": "boolean",
9404
+ "required": false,
9405
+ "help": "将正文视为 HTML 而非 Markdown"
9406
+ },
9407
+ {
9408
+ "name": "draft",
9409
+ "type": "boolean",
9410
+ "required": false,
9411
+ "help": "(保留参数,51CTO 只支持保存草稿)"
9412
+ },
9413
+ {
9414
+ "name": "execute",
9415
+ "type": "boolean",
9416
+ "required": false,
9417
+ "help": "真正执行创建/发布。没有此参数时命令拒绝写操作。"
9418
+ }
9419
+ ],
9420
+ "columns": [
9421
+ "status",
9422
+ "outcome",
9423
+ "message",
9424
+ "target_type",
9425
+ "target",
9426
+ "created_target",
9427
+ "created_url"
9428
+ ],
9429
+ "type": "js",
9430
+ "modulePath": "cto51/article.js",
9431
+ "sourceFile": "cto51/article.js",
9432
+ "navigateBefore": "https://blog.51cto.com"
9433
+ },
9434
+ {
9435
+ "site": "cto51",
9436
+ "name": "whoami",
9437
+ "description": "查看当前 51CTO 登录账号信息。",
9438
+ "access": "read",
9439
+ "domain": "blog.51cto.com",
9440
+ "strategy": "cookie",
9441
+ "browser": true,
9442
+ "args": [],
9443
+ "columns": [
9444
+ "logged_in",
9445
+ "user_id",
9446
+ "username"
9447
+ ],
9448
+ "type": "js",
9449
+ "modulePath": "cto51/whoami.js",
9450
+ "sourceFile": "cto51/whoami.js",
9451
+ "navigateBefore": "https://blog.51cto.com"
9452
+ },
8795
9453
  {
8796
9454
  "site": "ctrip",
8797
9455
  "name": "flight",
@@ -10836,6 +11494,68 @@
10836
11494
  "modulePath": "dongchedi/specs.js",
10837
11495
  "sourceFile": "dongchedi/specs.js"
10838
11496
  },
11497
+ {
11498
+ "site": "douban",
11499
+ "name": "article",
11500
+ "description": "发布豆瓣日记。正文默认 Markdown,图片自动转存到豆瓣图床;正文以 Draft.js 提交到新版 rexxar 接口。",
11501
+ "access": "write",
11502
+ "domain": "www.douban.com",
11503
+ "strategy": "cookie",
11504
+ "browser": true,
11505
+ "args": [
11506
+ {
11507
+ "name": "title",
11508
+ "type": "str",
11509
+ "required": true,
11510
+ "positional": true,
11511
+ "help": "日记标题"
11512
+ },
11513
+ {
11514
+ "name": "text",
11515
+ "type": "str",
11516
+ "required": false,
11517
+ "positional": true,
11518
+ "help": "正文(Markdown 格式;也可用 --file)"
11519
+ },
11520
+ {
11521
+ "name": "file",
11522
+ "type": "str",
11523
+ "required": false,
11524
+ "help": "正文文件路径(UTF-8,Markdown 格式)"
11525
+ },
11526
+ {
11527
+ "name": "html",
11528
+ "type": "boolean",
11529
+ "required": false,
11530
+ "help": "把正文当 HTML 处理而不是 Markdown"
11531
+ },
11532
+ {
11533
+ "name": "draft",
11534
+ "type": "boolean",
11535
+ "required": false,
11536
+ "help": "仅保存草稿(私有,不公开发布)"
11537
+ },
11538
+ {
11539
+ "name": "execute",
11540
+ "type": "boolean",
11541
+ "required": false,
11542
+ "help": "真正执行写操作;不带此参数命令会拒绝写入"
11543
+ }
11544
+ ],
11545
+ "columns": [
11546
+ "status",
11547
+ "outcome",
11548
+ "message",
11549
+ "target_type",
11550
+ "target",
11551
+ "created_target",
11552
+ "created_url"
11553
+ ],
11554
+ "type": "js",
11555
+ "modulePath": "douban/article.js",
11556
+ "sourceFile": "douban/article.js",
11557
+ "navigateBefore": "https://www.douban.com"
11558
+ },
10839
11559
  {
10840
11560
  "site": "douban",
10841
11561
  "name": "book-hot",
@@ -12512,6 +13232,68 @@
12512
13232
  "modulePath": "eastmoney/announcement.js",
12513
13233
  "sourceFile": "eastmoney/announcement.js"
12514
13234
  },
13235
+ {
13236
+ "site": "eastmoney",
13237
+ "name": "article",
13238
+ "description": "发布东方财富财富号文章(草稿)。正文默认 Markdown;图片自动转存到东方财富图床。",
13239
+ "access": "write",
13240
+ "domain": "mp.eastmoney.com",
13241
+ "strategy": "cookie",
13242
+ "browser": true,
13243
+ "args": [
13244
+ {
13245
+ "name": "title",
13246
+ "type": "str",
13247
+ "required": true,
13248
+ "positional": true,
13249
+ "help": "文章标题"
13250
+ },
13251
+ {
13252
+ "name": "text",
13253
+ "type": "str",
13254
+ "required": false,
13255
+ "positional": true,
13256
+ "help": "文章正文(默认 Markdown;--html 表示 HTML)"
13257
+ },
13258
+ {
13259
+ "name": "file",
13260
+ "type": "str",
13261
+ "required": false,
13262
+ "help": "正文文件路径(UTF-8,默认 Markdown)"
13263
+ },
13264
+ {
13265
+ "name": "html",
13266
+ "type": "boolean",
13267
+ "required": false,
13268
+ "help": "正文格式为 HTML 而非 Markdown"
13269
+ },
13270
+ {
13271
+ "name": "draft",
13272
+ "type": "boolean",
13273
+ "required": false,
13274
+ "help": "仅保存草稿(东方财富 mp 端目前仅支持草稿,默认即草稿)"
13275
+ },
13276
+ {
13277
+ "name": "execute",
13278
+ "type": "boolean",
13279
+ "required": false,
13280
+ "help": "确认实际写入,不带此参数时拒绝写操作"
13281
+ }
13282
+ ],
13283
+ "columns": [
13284
+ "status",
13285
+ "outcome",
13286
+ "message",
13287
+ "target_type",
13288
+ "target",
13289
+ "created_target",
13290
+ "created_url"
13291
+ ],
13292
+ "type": "js",
13293
+ "modulePath": "eastmoney/article.js",
13294
+ "sourceFile": "eastmoney/article.js",
13295
+ "navigateBefore": "https://mp.eastmoney.com"
13296
+ },
12515
13297
  {
12516
13298
  "site": "eastmoney",
12517
13299
  "name": "convertible",
@@ -13045,6 +13827,25 @@
13045
13827
  "modulePath": "eastmoney/sectors.js",
13046
13828
  "sourceFile": "eastmoney/sectors.js"
13047
13829
  },
13830
+ {
13831
+ "site": "eastmoney",
13832
+ "name": "whoami",
13833
+ "description": "查询当前东方财富财富号登录账号",
13834
+ "access": "read",
13835
+ "domain": "mp.eastmoney.com",
13836
+ "strategy": "cookie",
13837
+ "browser": true,
13838
+ "args": [],
13839
+ "columns": [
13840
+ "logged_in",
13841
+ "user_id",
13842
+ "username"
13843
+ ],
13844
+ "type": "js",
13845
+ "modulePath": "eastmoney/whoami.js",
13846
+ "sourceFile": "eastmoney/whoami.js",
13847
+ "navigateBefore": "https://mp.eastmoney.com"
13848
+ },
13048
13849
  {
13049
13850
  "site": "endoflife",
13050
13851
  "name": "product",
@@ -16900,6 +17701,87 @@
16900
17701
  "modulePath": "imdb/trending.js",
16901
17702
  "sourceFile": "imdb/trending.js"
16902
17703
  },
17704
+ {
17705
+ "site": "imooc",
17706
+ "name": "article",
17707
+ "description": "发布慕课手记文章(Markdown,始终存为草稿)。正文默认为 Markdown;外链图自动转存到慕课图床。",
17708
+ "access": "write",
17709
+ "domain": "www.imooc.com",
17710
+ "strategy": "cookie",
17711
+ "browser": true,
17712
+ "args": [
17713
+ {
17714
+ "name": "title",
17715
+ "type": "str",
17716
+ "required": true,
17717
+ "positional": true,
17718
+ "help": "文章标题"
17719
+ },
17720
+ {
17721
+ "name": "text",
17722
+ "type": "str",
17723
+ "required": false,
17724
+ "positional": true,
17725
+ "help": "文章正文(Markdown,默认)"
17726
+ },
17727
+ {
17728
+ "name": "file",
17729
+ "type": "str",
17730
+ "required": false,
17731
+ "help": "正文文件路径(UTF-8,Markdown)"
17732
+ },
17733
+ {
17734
+ "name": "html",
17735
+ "type": "boolean",
17736
+ "required": false,
17737
+ "help": "将正文视为原始 HTML 而非 Markdown"
17738
+ },
17739
+ {
17740
+ "name": "draft",
17741
+ "type": "boolean",
17742
+ "required": false,
17743
+ "help": "(慕课始终草稿,此标志无额外效果)"
17744
+ },
17745
+ {
17746
+ "name": "execute",
17747
+ "type": "boolean",
17748
+ "required": false,
17749
+ "help": "真正执行写入,不加此标志时拒绝写操作"
17750
+ }
17751
+ ],
17752
+ "columns": [
17753
+ "status",
17754
+ "outcome",
17755
+ "message",
17756
+ "target_type",
17757
+ "target",
17758
+ "created_target",
17759
+ "created_url"
17760
+ ],
17761
+ "type": "js",
17762
+ "modulePath": "imooc/article.js",
17763
+ "sourceFile": "imooc/article.js",
17764
+ "navigateBefore": "https://www.imooc.com"
17765
+ },
17766
+ {
17767
+ "site": "imooc",
17768
+ "name": "whoami",
17769
+ "description": "查询当前在 Chrome 里登录的慕课网账号。",
17770
+ "access": "read",
17771
+ "domain": "www.imooc.com",
17772
+ "strategy": "cookie",
17773
+ "browser": true,
17774
+ "args": [],
17775
+ "columns": [
17776
+ "logged_in",
17777
+ "user_id",
17778
+ "username"
17779
+ ],
17780
+ "type": "js",
17781
+ "modulePath": "imooc/whoami.js",
17782
+ "sourceFile": "imooc/whoami.js",
17783
+ "navigateBefore": "https://www.imooc.com"
17784
+ },
16903
17785
  {
16904
17786
  "site": "indeed",
16905
17787
  "name": "job",
@@ -17099,6 +17981,47 @@
17099
17981
  "sourceFile": "instagram/comment.js",
17100
17982
  "navigateBefore": "https://www.instagram.com"
17101
17983
  },
17984
+ {
17985
+ "site": "instagram",
17986
+ "name": "detail",
17987
+ "description": "Get single-post Instagram details, including direct media URLs",
17988
+ "access": "read",
17989
+ "domain": "www.instagram.com",
17990
+ "strategy": "cookie",
17991
+ "browser": true,
17992
+ "args": [
17993
+ {
17994
+ "name": "url",
17995
+ "type": "str",
17996
+ "required": true,
17997
+ "positional": true,
17998
+ "help": "Instagram post / reel / tv URL"
17999
+ }
18000
+ ],
18001
+ "columns": [
18002
+ "shortcode",
18003
+ "media_id",
18004
+ "kind",
18005
+ "type",
18006
+ "posted_at",
18007
+ "owner",
18008
+ "owner_name",
18009
+ "owner_verified",
18010
+ "likes",
18011
+ "comments",
18012
+ "views",
18013
+ "media_count",
18014
+ "media_types",
18015
+ "media_urls",
18016
+ "thumbnail_url",
18017
+ "url",
18018
+ "caption"
18019
+ ],
18020
+ "type": "js",
18021
+ "modulePath": "instagram/detail.js",
18022
+ "sourceFile": "instagram/detail.js",
18023
+ "navigateBefore": false
18024
+ },
17102
18025
  {
17103
18026
  "site": "instagram",
17104
18027
  "name": "download",
@@ -17124,8 +18047,8 @@
17124
18047
  }
17125
18048
  ],
17126
18049
  "type": "js",
17127
- "modulePath": "instagram/download.js",
17128
- "sourceFile": "instagram/download.js",
18050
+ "modulePath": "instagram/detail.js",
18051
+ "sourceFile": "instagram/detail.js",
17129
18052
  "navigateBefore": false
17130
18053
  },
17131
18054
  {
@@ -17725,7 +18648,60 @@
17725
18648
  "type": "int",
17726
18649
  "default": 12,
17727
18650
  "required": false,
17728
- "help": "Number of posts"
18651
+ "help": "Number of posts (1-1000)"
18652
+ },
18653
+ {
18654
+ "name": "date",
18655
+ "type": "str",
18656
+ "default": "",
18657
+ "required": false,
18658
+ "help": "Fetch posts from one full local day. Format: YYYY-MM-DD. Cannot be combined with --from/--to."
18659
+ },
18660
+ {
18661
+ "name": "from",
18662
+ "type": "str",
18663
+ "default": "",
18664
+ "required": false,
18665
+ "help": "Fetch posts from this timestamp onward. Use ISO 8601 like 2026-07-11T18:30:00+05:30 or Unix seconds."
18666
+ },
18667
+ {
18668
+ "name": "to",
18669
+ "type": "str",
18670
+ "default": "",
18671
+ "required": false,
18672
+ "help": "Fetch posts up to this timestamp. Requires --from. Use ISO 8601 like 2026-07-12T18:30:00+05:30 or Unix seconds."
18673
+ },
18674
+ {
18675
+ "name": "caption-filter-mode",
18676
+ "type": "str",
18677
+ "default": "contains",
18678
+ "required": false,
18679
+ "help": "Caption matching mode: contains or regex",
18680
+ "choices": [
18681
+ "contains",
18682
+ "regex"
18683
+ ]
18684
+ },
18685
+ {
18686
+ "name": "caption-filter",
18687
+ "type": "str",
18688
+ "default": "",
18689
+ "required": false,
18690
+ "help": "Keep only posts whose caption matches this pattern"
18691
+ },
18692
+ {
18693
+ "name": "caption-reject",
18694
+ "type": "str",
18695
+ "default": "",
18696
+ "required": false,
18697
+ "help": "Drop posts whose caption matches this pattern (same mode as caption-filter-mode)"
18698
+ },
18699
+ {
18700
+ "name": "caption-case-sensitive",
18701
+ "type": "bool",
18702
+ "default": false,
18703
+ "required": false,
18704
+ "help": "Match captions case-sensitively"
17729
18705
  }
17730
18706
  ],
17731
18707
  "columns": [
@@ -17734,7 +18710,12 @@
17734
18710
  "likes",
17735
18711
  "comments",
17736
18712
  "type",
17737
- "date"
18713
+ "date",
18714
+ "posted_at",
18715
+ "kind",
18716
+ "shortcode",
18717
+ "media_id",
18718
+ "url"
17738
18719
  ],
17739
18720
  "type": "js",
17740
18721
  "modulePath": "instagram/user.js",
@@ -18846,6 +19827,104 @@
18846
19827
  "modulePath": "jira/search.js",
18847
19828
  "sourceFile": "jira/search.js"
18848
19829
  },
19830
+ {
19831
+ "site": "juejin",
19832
+ "name": "article",
19833
+ "description": "发布掘金文章。默认正式发布(需 --category 和 --tags);加 --draft 仅存草稿。正文默认 Markdown;图片自动转存至掘金图床(字节 ImageX)。",
19834
+ "access": "write",
19835
+ "domain": "juejin.cn",
19836
+ "strategy": "cookie",
19837
+ "browser": true,
19838
+ "args": [
19839
+ {
19840
+ "name": "title",
19841
+ "type": "str",
19842
+ "required": true,
19843
+ "positional": true,
19844
+ "help": "文章标题"
19845
+ },
19846
+ {
19847
+ "name": "text",
19848
+ "type": "str",
19849
+ "required": false,
19850
+ "positional": true,
19851
+ "help": "文章正文(默认 Markdown;传 --html 则视为 HTML)"
19852
+ },
19853
+ {
19854
+ "name": "file",
19855
+ "type": "str",
19856
+ "required": false,
19857
+ "help": "正文文件路径(UTF-8 编码,默认 Markdown)"
19858
+ },
19859
+ {
19860
+ "name": "html",
19861
+ "type": "boolean",
19862
+ "required": false,
19863
+ "help": "将正文视为原始 HTML 而非 Markdown"
19864
+ },
19865
+ {
19866
+ "name": "category",
19867
+ "type": "str",
19868
+ "required": false,
19869
+ "help": "【正式发布必填】分类名(精确匹配):后端 / 前端 / Android / iOS / 人工智能 / 开发工具 / 代码人生 / 阅读"
19870
+ },
19871
+ {
19872
+ "name": "tags",
19873
+ "type": "str",
19874
+ "required": false,
19875
+ "help": "【正式发布必填】标签名,逗号分隔,至少一个(按名精确匹配掘金标签库,如 \"Linux,后端\")"
19876
+ },
19877
+ {
19878
+ "name": "brief",
19879
+ "type": "str",
19880
+ "required": false,
19881
+ "help": "【正式发布必填】文章摘要,掘金要求约 50-100 字(不做自动截取,必须显式提供)"
19882
+ },
19883
+ {
19884
+ "name": "draft",
19885
+ "type": "boolean",
19886
+ "required": false,
19887
+ "help": "仅保存草稿,不发布(草稿无需分类/标签)"
19888
+ },
19889
+ {
19890
+ "name": "execute",
19891
+ "type": "boolean",
19892
+ "required": false,
19893
+ "help": "确认执行写操作。不加此参数则拒绝写入。"
19894
+ }
19895
+ ],
19896
+ "columns": [
19897
+ "status",
19898
+ "outcome",
19899
+ "message",
19900
+ "target_type",
19901
+ "target",
19902
+ "created_target",
19903
+ "created_url"
19904
+ ],
19905
+ "type": "js",
19906
+ "modulePath": "juejin/article.js",
19907
+ "sourceFile": "juejin/article.js",
19908
+ "navigateBefore": "https://juejin.cn"
19909
+ },
19910
+ {
19911
+ "site": "juejin",
19912
+ "name": "categories",
19913
+ "description": "列出掘金全部文章分类(id + 名称),供 `juejin article --category` 取准确分类名。",
19914
+ "access": "read",
19915
+ "domain": "juejin.cn",
19916
+ "strategy": "cookie",
19917
+ "browser": true,
19918
+ "args": [],
19919
+ "columns": [
19920
+ "category_id",
19921
+ "category_name"
19922
+ ],
19923
+ "type": "js",
19924
+ "modulePath": "juejin/categories.js",
19925
+ "sourceFile": "juejin/categories.js",
19926
+ "navigateBefore": "https://juejin.cn"
19927
+ },
18849
19928
  {
18850
19929
  "site": "juejin",
18851
19930
  "name": "hot",
@@ -18885,6 +19964,36 @@
18885
19964
  "modulePath": "juejin/hot.js",
18886
19965
  "sourceFile": "juejin/hot.js"
18887
19966
  },
19967
+ {
19968
+ "site": "juejin",
19969
+ "name": "login",
19970
+ "description": "打开掘金首页并等待浏览器完成登录(供桌面客户端引导登录)。",
19971
+ "access": "write",
19972
+ "domain": "juejin.cn",
19973
+ "strategy": "cookie",
19974
+ "browser": true,
19975
+ "args": [
19976
+ {
19977
+ "name": "timeout",
19978
+ "type": "int",
19979
+ "default": 300,
19980
+ "required": false,
19981
+ "help": "等待用户完成登录的最长秒数"
19982
+ }
19983
+ ],
19984
+ "columns": [
19985
+ "status",
19986
+ "logged_in",
19987
+ "user_id",
19988
+ "username"
19989
+ ],
19990
+ "type": "js",
19991
+ "modulePath": "juejin/login.js",
19992
+ "sourceFile": "juejin/login.js",
19993
+ "navigateBefore": false,
19994
+ "siteSession": "persistent",
19995
+ "defaultWindowMode": "foreground"
19996
+ },
18888
19997
  {
18889
19998
  "site": "juejin",
18890
19999
  "name": "recommend",
@@ -18927,6 +20036,51 @@
18927
20036
  "modulePath": "juejin/recommend.js",
18928
20037
  "sourceFile": "juejin/recommend.js"
18929
20038
  },
20039
+ {
20040
+ "site": "juejin",
20041
+ "name": "tags",
20042
+ "description": "按关键词搜索掘金标签,返回标签 id 和名称,供 `juejin article --tags` 取准确标签名。",
20043
+ "access": "read",
20044
+ "domain": "juejin.cn",
20045
+ "strategy": "cookie",
20046
+ "browser": true,
20047
+ "args": [
20048
+ {
20049
+ "name": "keyword",
20050
+ "type": "str",
20051
+ "required": true,
20052
+ "positional": true,
20053
+ "help": "标签搜索关键词,如 \"Linux\"、\"AI\""
20054
+ }
20055
+ ],
20056
+ "columns": [
20057
+ "tag_id",
20058
+ "tag_name"
20059
+ ],
20060
+ "type": "js",
20061
+ "modulePath": "juejin/tags.js",
20062
+ "sourceFile": "juejin/tags.js",
20063
+ "navigateBefore": "https://juejin.cn"
20064
+ },
20065
+ {
20066
+ "site": "juejin",
20067
+ "name": "whoami",
20068
+ "description": "检测掘金当前登录状态,返回用户 ID 和用户名。",
20069
+ "access": "read",
20070
+ "domain": "juejin.cn",
20071
+ "strategy": "cookie",
20072
+ "browser": true,
20073
+ "args": [],
20074
+ "columns": [
20075
+ "logged_in",
20076
+ "user_id",
20077
+ "username"
20078
+ ],
20079
+ "type": "js",
20080
+ "modulePath": "juejin/whoami.js",
20081
+ "sourceFile": "juejin/whoami.js",
20082
+ "navigateBefore": "https://juejin.cn"
20083
+ },
18930
20084
  {
18931
20085
  "site": "ke",
18932
20086
  "name": "chengjiao",
@@ -20914,6 +22068,78 @@
20914
22068
  "default": 5,
20915
22069
  "required": false,
20916
22070
  "help": "Maximum people to return (1-10); each query counts toward LinkedIn's monthly CUL"
22071
+ },
22072
+ {
22073
+ "name": "first-name",
22074
+ "type": "string",
22075
+ "required": false,
22076
+ "help": "Filter to people whose first name matches this text (LinkedIn KEYWORDS / FIRST NAME filter)."
22077
+ },
22078
+ {
22079
+ "name": "last-name",
22080
+ "type": "string",
22081
+ "required": false,
22082
+ "help": "Filter to people whose last name matches this text (LinkedIn KEYWORDS / LAST NAME filter)."
22083
+ },
22084
+ {
22085
+ "name": "title",
22086
+ "type": "string",
22087
+ "required": false,
22088
+ "help": "Filter to people whose current title contains this text (LinkedIn KEYWORDS / TITLE filter)."
22089
+ },
22090
+ {
22091
+ "name": "school-keyword",
22092
+ "type": "string",
22093
+ "required": false,
22094
+ "help": "Free-text school filter (LinkedIn SCHOOL filter, name match)."
22095
+ },
22096
+ {
22097
+ "name": "network",
22098
+ "type": "string",
22099
+ "required": false,
22100
+ "help": "Comma-separated connection degrees: 1, 2, 3 (where 3 means 3rd+). E.g. \"1,2\" for 1st and 2nd-degree only."
22101
+ },
22102
+ {
22103
+ "name": "profile-language",
22104
+ "type": "string",
22105
+ "required": false,
22106
+ "help": "Comma-separated ISO 639-1 codes for profile language, e.g. \"en,fr\"."
22107
+ },
22108
+ {
22109
+ "name": "open-to",
22110
+ "type": "string",
22111
+ "required": false,
22112
+ "help": "Comma-separated open-to values: proBono, boardMember."
22113
+ },
22114
+ {
22115
+ "name": "current-company-id",
22116
+ "type": "string",
22117
+ "required": false,
22118
+ "help": "Comma-separated LinkedIn company IDs for CURRENT COMPANY filter (e.g. \"1441\" for Google). To find an ID: visit the company's LinkedIn URL — `/company/<slug>/` — then open Network tools, or click the filter chip on a search results page and read the URL's `currentCompany` param. A full URN like `urn:li:fs_company:1441` is also accepted."
22119
+ },
22120
+ {
22121
+ "name": "past-company-id",
22122
+ "type": "string",
22123
+ "required": false,
22124
+ "help": "Comma-separated LinkedIn company IDs for PAST COMPANY filter. Same lookup pattern as --current-company-id."
22125
+ },
22126
+ {
22127
+ "name": "industry-id",
22128
+ "type": "string",
22129
+ "required": false,
22130
+ "help": "Comma-separated LinkedIn industry IDs (e.g. \"4\" for Computer Software). Apply the filter once via the LinkedIn UI and read the URL's `industry` param to discover IDs."
22131
+ },
22132
+ {
22133
+ "name": "location-id",
22134
+ "type": "string",
22135
+ "required": false,
22136
+ "help": "Comma-separated LinkedIn location IDs (geoUrn numeric tail; e.g. \"105214831\" for Bengaluru area). Apply the location filter once via UI and read the URL's `geoUrn` param."
22137
+ },
22138
+ {
22139
+ "name": "school-id",
22140
+ "type": "string",
22141
+ "required": false,
22142
+ "help": "Comma-separated LinkedIn school IDs (numeric tail of urn:li:fs_school:<id>). For free-text school name matching, use --school-keyword instead."
20917
22143
  }
20918
22144
  ],
20919
22145
  "columns": [
@@ -25441,6 +26667,141 @@
25441
26667
  "modulePath": "openreview/venue.js",
25442
26668
  "sourceFile": "openreview/venue.js"
25443
26669
  },
26670
+ {
26671
+ "site": "oschina",
26672
+ "name": "article",
26673
+ "description": "发布文章到开源中国博客。默认正式发布,加 --draft 仅存草稿。正文默认 Markdown,外链图片自动转存到开源中国图床。",
26674
+ "access": "write",
26675
+ "domain": "my.oschina.net",
26676
+ "strategy": "cookie",
26677
+ "browser": true,
26678
+ "args": [
26679
+ {
26680
+ "name": "title",
26681
+ "type": "str",
26682
+ "required": true,
26683
+ "positional": true,
26684
+ "help": "文章标题"
26685
+ },
26686
+ {
26687
+ "name": "text",
26688
+ "type": "str",
26689
+ "required": false,
26690
+ "positional": true,
26691
+ "help": "文章正文(默认 Markdown;--html 表示原始 HTML)"
26692
+ },
26693
+ {
26694
+ "name": "file",
26695
+ "type": "str",
26696
+ "required": false,
26697
+ "help": "从文件读取正文(UTF-8,默认 Markdown)"
26698
+ },
26699
+ {
26700
+ "name": "html",
26701
+ "type": "boolean",
26702
+ "required": false,
26703
+ "help": "将正文视为原始 HTML 而非 Markdown"
26704
+ },
26705
+ {
26706
+ "name": "category",
26707
+ "type": "str",
26708
+ "required": false,
26709
+ "help": "个人博客分类名(精确匹配),合法值用 `oschina catalogs` 列举;可空=不分类"
26710
+ },
26711
+ {
26712
+ "name": "draft",
26713
+ "type": "boolean",
26714
+ "required": false,
26715
+ "help": "仅存草稿,不发布"
26716
+ },
26717
+ {
26718
+ "name": "execute",
26719
+ "type": "boolean",
26720
+ "required": false,
26721
+ "help": "真正执行写操作;不加此参数命令拒绝写入"
26722
+ }
26723
+ ],
26724
+ "columns": [
26725
+ "status",
26726
+ "outcome",
26727
+ "message",
26728
+ "target_type",
26729
+ "target",
26730
+ "created_target",
26731
+ "created_url"
26732
+ ],
26733
+ "type": "js",
26734
+ "modulePath": "oschina/article.js",
26735
+ "sourceFile": "oschina/article.js",
26736
+ "navigateBefore": "https://my.oschina.net"
26737
+ },
26738
+ {
26739
+ "site": "oschina",
26740
+ "name": "catalogs",
26741
+ "description": "列出当前用户的开源中国个人博客分类(id + 名称),供 `oschina article --category` 取合法分类名。",
26742
+ "access": "read",
26743
+ "domain": "my.oschina.net",
26744
+ "strategy": "cookie",
26745
+ "browser": true,
26746
+ "args": [],
26747
+ "columns": [
26748
+ "catalog_id",
26749
+ "catalog_name"
26750
+ ],
26751
+ "type": "js",
26752
+ "modulePath": "oschina/catalogs.js",
26753
+ "sourceFile": "oschina/catalogs.js",
26754
+ "navigateBefore": "https://my.oschina.net"
26755
+ },
26756
+ {
26757
+ "site": "oschina",
26758
+ "name": "login",
26759
+ "description": "打开开源中国登录页并等待浏览器完成登录(供桌面客户端引导登录)。",
26760
+ "access": "write",
26761
+ "domain": "oschina.net",
26762
+ "strategy": "cookie",
26763
+ "browser": true,
26764
+ "args": [
26765
+ {
26766
+ "name": "timeout",
26767
+ "type": "int",
26768
+ "default": 300,
26769
+ "required": false,
26770
+ "help": "等待用户完成登录的最长秒数"
26771
+ }
26772
+ ],
26773
+ "columns": [
26774
+ "status",
26775
+ "logged_in",
26776
+ "user_id",
26777
+ "username"
26778
+ ],
26779
+ "type": "js",
26780
+ "modulePath": "oschina/login.js",
26781
+ "sourceFile": "oschina/login.js",
26782
+ "navigateBefore": false,
26783
+ "siteSession": "persistent",
26784
+ "defaultWindowMode": "foreground"
26785
+ },
26786
+ {
26787
+ "site": "oschina",
26788
+ "name": "whoami",
26789
+ "description": "查询当前开源中国登录账号信息(登录状态 / 用户 ID / 用户名)。",
26790
+ "access": "read",
26791
+ "domain": "my.oschina.net",
26792
+ "strategy": "cookie",
26793
+ "browser": true,
26794
+ "args": [],
26795
+ "columns": [
26796
+ "logged_in",
26797
+ "user_id",
26798
+ "username"
26799
+ ],
26800
+ "type": "js",
26801
+ "modulePath": "oschina/whoami.js",
26802
+ "sourceFile": "oschina/whoami.js",
26803
+ "navigateBefore": "https://my.oschina.net"
26804
+ },
25444
26805
  {
25445
26806
  "site": "osv",
25446
26807
  "name": "query",
@@ -29455,6 +30816,150 @@
29455
30816
  "modulePath": "rubygems/search.js",
29456
30817
  "sourceFile": "rubygems/search.js"
29457
30818
  },
30819
+ {
30820
+ "site": "segmentfault",
30821
+ "name": "article",
30822
+ "description": "发布文章到思否(SegmentFault)。默认正式发布,加 --draft 仅存草稿。正文默认 Markdown;外链图片自动转存到思否图床。正式发布必须指定标签(--tags),合法标签用 `segmentfault tags <名称>` 校验、频道用 `segmentfault channels` 列举。",
30823
+ "access": "write",
30824
+ "domain": "segmentfault.com",
30825
+ "strategy": "cookie",
30826
+ "browser": true,
30827
+ "args": [
30828
+ {
30829
+ "name": "title",
30830
+ "type": "str",
30831
+ "required": true,
30832
+ "positional": true,
30833
+ "help": "文章标题"
30834
+ },
30835
+ {
30836
+ "name": "text",
30837
+ "type": "str",
30838
+ "required": false,
30839
+ "positional": true,
30840
+ "help": "文章正文(默认 Markdown;传 --html 则视为 HTML)"
30841
+ },
30842
+ {
30843
+ "name": "file",
30844
+ "type": "str",
30845
+ "required": false,
30846
+ "help": "正文文件路径(UTF-8,默认 Markdown)"
30847
+ },
30848
+ {
30849
+ "name": "html",
30850
+ "type": "boolean",
30851
+ "required": false,
30852
+ "help": "将正文视为原始 HTML 而非 Markdown"
30853
+ },
30854
+ {
30855
+ "name": "tags",
30856
+ "type": "str",
30857
+ "required": false,
30858
+ "help": "标签名,逗号分隔(正式发布必填,至少 1 个)。合法标签用 `segmentfault tags <名称>` 校验;草稿可省略。"
30859
+ },
30860
+ {
30861
+ "name": "cover",
30862
+ "type": "str",
30863
+ "required": false,
30864
+ "help": "封面图思否图床 url(选填)。需先把图片上传到思否图床得到 url。"
30865
+ },
30866
+ {
30867
+ "name": "channels",
30868
+ "type": "str",
30869
+ "required": false,
30870
+ "help": "频道名,逗号分隔(选填)。合法值用 `segmentfault channels` 列举。"
30871
+ },
30872
+ {
30873
+ "name": "draft",
30874
+ "type": "boolean",
30875
+ "required": false,
30876
+ "help": "仅保存草稿,不正式发布"
30877
+ },
30878
+ {
30879
+ "name": "execute",
30880
+ "type": "boolean",
30881
+ "required": false,
30882
+ "help": "实际执行发布。不加此参数时命令拒绝写操作。"
30883
+ }
30884
+ ],
30885
+ "columns": [
30886
+ "status",
30887
+ "outcome",
30888
+ "message",
30889
+ "target_type",
30890
+ "target",
30891
+ "created_target",
30892
+ "created_url"
30893
+ ],
30894
+ "type": "js",
30895
+ "modulePath": "segmentfault/article.js",
30896
+ "sourceFile": "segmentfault/article.js",
30897
+ "navigateBefore": "https://segmentfault.com"
30898
+ },
30899
+ {
30900
+ "site": "segmentfault",
30901
+ "name": "channels",
30902
+ "description": "列出思否文章频道(id + 名称),供 `segmentfault article --channels` 取合法频道名。",
30903
+ "access": "read",
30904
+ "domain": "segmentfault.com",
30905
+ "strategy": "cookie",
30906
+ "browser": true,
30907
+ "args": [],
30908
+ "columns": [
30909
+ "channel_id",
30910
+ "channel_name"
30911
+ ],
30912
+ "type": "js",
30913
+ "modulePath": "segmentfault/channels.js",
30914
+ "sourceFile": "segmentfault/channels.js",
30915
+ "navigateBefore": "https://segmentfault.com"
30916
+ },
30917
+ {
30918
+ "site": "segmentfault",
30919
+ "name": "tags",
30920
+ "description": "按名称校验思否标签是否存在并返回其真实 id,供 `segmentfault article --tags` 取合法标签。思否发文强制选标签,禁止臆造标签名/id。",
30921
+ "access": "read",
30922
+ "domain": "segmentfault.com",
30923
+ "strategy": "cookie",
30924
+ "browser": true,
30925
+ "args": [
30926
+ {
30927
+ "name": "name",
30928
+ "type": "str",
30929
+ "required": true,
30930
+ "positional": true,
30931
+ "help": "要校验的标签名(精确匹配,如 JavaScript / Vue.js)"
30932
+ }
30933
+ ],
30934
+ "columns": [
30935
+ "exists",
30936
+ "tag_id",
30937
+ "tag_name"
30938
+ ],
30939
+ "type": "js",
30940
+ "modulePath": "segmentfault/tags.js",
30941
+ "sourceFile": "segmentfault/tags.js",
30942
+ "navigateBefore": "https://segmentfault.com"
30943
+ },
30944
+ {
30945
+ "site": "segmentfault",
30946
+ "name": "whoami",
30947
+ "description": "检查思否(SegmentFault)的登录状态并获取当前账号信息",
30948
+ "access": "read",
30949
+ "domain": "segmentfault.com",
30950
+ "strategy": "cookie",
30951
+ "browser": true,
30952
+ "args": [],
30953
+ "columns": [
30954
+ "logged_in",
30955
+ "user_id",
30956
+ "username"
30957
+ ],
30958
+ "type": "js",
30959
+ "modulePath": "segmentfault/whoami.js",
30960
+ "sourceFile": "segmentfault/whoami.js",
30961
+ "navigateBefore": "https://segmentfault.com"
30962
+ },
29458
30963
  {
29459
30964
  "site": "semanticscholar",
29460
30965
  "name": "citations",
@@ -31563,6 +33068,234 @@
31563
33068
  "sourceFile": "smzdm/search.js",
31564
33069
  "navigateBefore": "https://www.smzdm.com"
31565
33070
  },
33071
+ {
33072
+ "site": "sohu",
33073
+ "name": "article",
33074
+ "description": "发布文章到搜狐号(HTML 格式,外链图片自动转存到搜狐图床)。默认正式发布,加 --draft 仅存草稿。频道必填,合法值用 `sohu channels` 取。",
33075
+ "access": "write",
33076
+ "domain": "mp.sohu.com",
33077
+ "strategy": "cookie",
33078
+ "browser": true,
33079
+ "args": [
33080
+ {
33081
+ "name": "title",
33082
+ "type": "str",
33083
+ "required": true,
33084
+ "positional": true,
33085
+ "help": "文章标题"
33086
+ },
33087
+ {
33088
+ "name": "text",
33089
+ "type": "str",
33090
+ "required": false,
33091
+ "positional": true,
33092
+ "help": "文章正文(默认 Markdown,传 --html 则视为 HTML)"
33093
+ },
33094
+ {
33095
+ "name": "file",
33096
+ "type": "str",
33097
+ "required": false,
33098
+ "help": "正文文件路径(UTF-8,Markdown 或 HTML)"
33099
+ },
33100
+ {
33101
+ "name": "html",
33102
+ "type": "boolean",
33103
+ "required": false,
33104
+ "help": "将正文视为原始 HTML 而非 Markdown"
33105
+ },
33106
+ {
33107
+ "name": "channel",
33108
+ "type": "str",
33109
+ "required": false,
33110
+ "help": "频道名(精确匹配,必填),合法值用 `sohu channels` 列举"
33111
+ },
33112
+ {
33113
+ "name": "category",
33114
+ "type": "str",
33115
+ "required": false,
33116
+ "help": "分类名(精确匹配,依赖所选频道),合法值用 `sohu categories --channel <频道名>` 列举;不传=不限"
33117
+ },
33118
+ {
33119
+ "name": "column",
33120
+ "type": "str",
33121
+ "required": false,
33122
+ "help": "专栏名(精确匹配),合法值用 `sohu columns` 列举;不传=不归属专栏"
33123
+ },
33124
+ {
33125
+ "name": "topics",
33126
+ "type": "str",
33127
+ "required": false,
33128
+ "help": "话题名,逗号分隔(每个精确匹配),用 `sohu topics` 搜索取确切名"
33129
+ },
33130
+ {
33131
+ "name": "cover",
33132
+ "type": "str",
33133
+ "required": false,
33134
+ "help": "封面图 URL(须为搜狐图床地址);可空"
33135
+ },
33136
+ {
33137
+ "name": "brief",
33138
+ "type": "str",
33139
+ "required": false,
33140
+ "help": "文章摘要;可空"
33141
+ },
33142
+ {
33143
+ "name": "declare-original",
33144
+ "type": "boolean",
33145
+ "required": false,
33146
+ "help": "声明原创(会触发搜狐原创校验,发布将被拦到原创确认流程)"
33147
+ },
33148
+ {
33149
+ "name": "draft",
33150
+ "type": "boolean",
33151
+ "required": false,
33152
+ "help": "仅保存草稿,不正式发布"
33153
+ },
33154
+ {
33155
+ "name": "execute",
33156
+ "type": "boolean",
33157
+ "required": false,
33158
+ "help": "实际执行写入操作;不加此参数则拒绝写入(干跑保护)"
33159
+ }
33160
+ ],
33161
+ "columns": [
33162
+ "status",
33163
+ "outcome",
33164
+ "message",
33165
+ "target_type",
33166
+ "target",
33167
+ "created_target",
33168
+ "created_url"
33169
+ ],
33170
+ "type": "js",
33171
+ "modulePath": "sohu/article.js",
33172
+ "sourceFile": "sohu/article.js",
33173
+ "navigateBefore": "https://mp.sohu.com"
33174
+ },
33175
+ {
33176
+ "site": "sohu",
33177
+ "name": "attributes",
33178
+ "description": "列出搜狐号文章属性候选(id + 名称),供发布时选择文章属性。",
33179
+ "access": "read",
33180
+ "domain": "mp.sohu.com",
33181
+ "strategy": "cookie",
33182
+ "browser": true,
33183
+ "args": [],
33184
+ "columns": [
33185
+ "attr_id",
33186
+ "attr_name"
33187
+ ],
33188
+ "type": "js",
33189
+ "modulePath": "sohu/attributes.js",
33190
+ "sourceFile": "sohu/attributes.js",
33191
+ "navigateBefore": "https://mp.sohu.com"
33192
+ },
33193
+ {
33194
+ "site": "sohu",
33195
+ "name": "categories",
33196
+ "description": "列出某个搜狐号频道下的分类(id + 名称),供 `sohu article --category` 取合法分类名。须用 --channel 指定频道名。",
33197
+ "access": "read",
33198
+ "domain": "mp.sohu.com",
33199
+ "strategy": "cookie",
33200
+ "browser": true,
33201
+ "args": [
33202
+ {
33203
+ "name": "channel",
33204
+ "type": "str",
33205
+ "required": true,
33206
+ "help": "频道名(精确匹配),合法值用 `sohu channels` 列举"
33207
+ }
33208
+ ],
33209
+ "columns": [
33210
+ "category_id",
33211
+ "category_name"
33212
+ ],
33213
+ "type": "js",
33214
+ "modulePath": "sohu/categories.js",
33215
+ "sourceFile": "sohu/categories.js",
33216
+ "navigateBefore": "https://mp.sohu.com"
33217
+ },
33218
+ {
33219
+ "site": "sohu",
33220
+ "name": "channels",
33221
+ "description": "列出当前搜狐号可发布的频道(id + 名称),供 `sohu article --channel` 取合法频道名。",
33222
+ "access": "read",
33223
+ "domain": "mp.sohu.com",
33224
+ "strategy": "cookie",
33225
+ "browser": true,
33226
+ "args": [],
33227
+ "columns": [
33228
+ "channel_id",
33229
+ "channel_name"
33230
+ ],
33231
+ "type": "js",
33232
+ "modulePath": "sohu/channels.js",
33233
+ "sourceFile": "sohu/channels.js",
33234
+ "navigateBefore": "https://mp.sohu.com"
33235
+ },
33236
+ {
33237
+ "site": "sohu",
33238
+ "name": "columns",
33239
+ "description": "列出当前搜狐号的专栏(id + 名称),供 `sohu article --column` 取合法专栏名。",
33240
+ "access": "read",
33241
+ "domain": "mp.sohu.com",
33242
+ "strategy": "cookie",
33243
+ "browser": true,
33244
+ "args": [],
33245
+ "columns": [
33246
+ "column_id",
33247
+ "column_name"
33248
+ ],
33249
+ "type": "js",
33250
+ "modulePath": "sohu/columns.js",
33251
+ "sourceFile": "sohu/columns.js",
33252
+ "navigateBefore": "https://mp.sohu.com"
33253
+ },
33254
+ {
33255
+ "site": "sohu",
33256
+ "name": "topics",
33257
+ "description": "列举/搜索搜狐号话题(id + 名称 + 类型),供 `sohu article --topics` 取确切话题名。不传 --keyword 为推荐话题,传则按关键词搜索。",
33258
+ "access": "read",
33259
+ "domain": "mp.sohu.com",
33260
+ "strategy": "cookie",
33261
+ "browser": true,
33262
+ "args": [
33263
+ {
33264
+ "name": "keyword",
33265
+ "type": "str",
33266
+ "required": false,
33267
+ "help": "搜索关键词;不传则返回推荐话题列表"
33268
+ }
33269
+ ],
33270
+ "columns": [
33271
+ "topic_id",
33272
+ "topic_name",
33273
+ "topic_type"
33274
+ ],
33275
+ "type": "js",
33276
+ "modulePath": "sohu/topics.js",
33277
+ "sourceFile": "sohu/topics.js",
33278
+ "navigateBefore": "https://mp.sohu.com"
33279
+ },
33280
+ {
33281
+ "site": "sohu",
33282
+ "name": "whoami",
33283
+ "description": "查看当前搜狐号登录账号信息(用户名、用户 ID)。",
33284
+ "access": "read",
33285
+ "domain": "mp.sohu.com",
33286
+ "strategy": "cookie",
33287
+ "browser": true,
33288
+ "args": [],
33289
+ "columns": [
33290
+ "logged_in",
33291
+ "user_id",
33292
+ "username"
33293
+ ],
33294
+ "type": "js",
33295
+ "modulePath": "sohu/whoami.js",
33296
+ "sourceFile": "sohu/whoami.js",
33297
+ "navigateBefore": "https://mp.sohu.com"
33298
+ },
31566
33299
  {
31567
33300
  "site": "spotify",
31568
33301
  "name": "auth",
@@ -33273,7 +35006,8 @@
33273
35006
  "type": "js",
33274
35007
  "modulePath": "tiktok/following.js",
33275
35008
  "sourceFile": "tiktok/following.js",
33276
- "navigateBefore": "https://www.tiktok.com"
35009
+ "navigateBefore": "https://www.tiktok.com",
35010
+ "siteSession": "persistent"
33277
35011
  },
33278
35012
  {
33279
35013
  "site": "tiktok",
@@ -36430,6 +38164,93 @@
36430
38164
  "sourceFile": "twitter/retweet.js",
36431
38165
  "navigateBefore": true
36432
38166
  },
38167
+ {
38168
+ "site": "twitter",
38169
+ "name": "schedule",
38170
+ "description": "Schedule a new X post through the web composer",
38171
+ "access": "write",
38172
+ "domain": "x.com",
38173
+ "strategy": "ui",
38174
+ "browser": true,
38175
+ "args": [
38176
+ {
38177
+ "name": "text",
38178
+ "type": "string",
38179
+ "required": true,
38180
+ "positional": true,
38181
+ "help": "The text content of the scheduled post"
38182
+ },
38183
+ {
38184
+ "name": "at",
38185
+ "type": "string",
38186
+ "required": false,
38187
+ "help": "Local scheduled time, e.g. \"2026-05-24 21:30\""
38188
+ },
38189
+ {
38190
+ "name": "delay-minutes",
38191
+ "type": "int",
38192
+ "default": 10,
38193
+ "required": false,
38194
+ "help": "Schedule this many minutes from now"
38195
+ }
38196
+ ],
38197
+ "columns": [
38198
+ "status",
38199
+ "message",
38200
+ "text",
38201
+ "scheduledFor"
38202
+ ],
38203
+ "type": "js",
38204
+ "modulePath": "twitter/schedule.js",
38205
+ "sourceFile": "twitter/schedule.js",
38206
+ "navigateBefore": true
38207
+ },
38208
+ {
38209
+ "site": "twitter",
38210
+ "name": "scheduled-delete",
38211
+ "description": "Delete a scheduled X post by matching a text fragment",
38212
+ "access": "write",
38213
+ "domain": "x.com",
38214
+ "strategy": "ui",
38215
+ "browser": true,
38216
+ "args": [
38217
+ {
38218
+ "name": "match",
38219
+ "type": "string",
38220
+ "required": true,
38221
+ "positional": true,
38222
+ "help": "Text fragment that uniquely identifies the scheduled post"
38223
+ }
38224
+ ],
38225
+ "columns": [
38226
+ "status",
38227
+ "message",
38228
+ "match"
38229
+ ],
38230
+ "type": "js",
38231
+ "modulePath": "twitter/scheduled-delete.js",
38232
+ "sourceFile": "twitter/scheduled-delete.js",
38233
+ "navigateBefore": true
38234
+ },
38235
+ {
38236
+ "site": "twitter",
38237
+ "name": "scheduled-list",
38238
+ "description": "List X posts currently scheduled in the web composer",
38239
+ "access": "read",
38240
+ "domain": "x.com",
38241
+ "strategy": "ui",
38242
+ "browser": true,
38243
+ "args": [],
38244
+ "columns": [
38245
+ "index",
38246
+ "scheduledFor",
38247
+ "text"
38248
+ ],
38249
+ "type": "js",
38250
+ "modulePath": "twitter/scheduled-list.js",
38251
+ "sourceFile": "twitter/scheduled-list.js",
38252
+ "navigateBefore": true
38253
+ },
36433
38254
  {
36434
38255
  "site": "twitter",
36435
38256
  "name": "search",
@@ -38246,6 +40067,68 @@
38246
40067
  "navigateBefore": false,
38247
40068
  "siteSession": "persistent"
38248
40069
  },
40070
+ {
40071
+ "site": "weixin",
40072
+ "name": "article",
40073
+ "description": "通过 API 把文章发布到微信公众号草稿箱。正文默认 Markdown,外链图片自动转存到微信 CDN。",
40074
+ "access": "write",
40075
+ "domain": "mp.weixin.qq.com",
40076
+ "strategy": "cookie",
40077
+ "browser": true,
40078
+ "args": [
40079
+ {
40080
+ "name": "title",
40081
+ "type": "str",
40082
+ "required": true,
40083
+ "positional": true,
40084
+ "help": "文章标题(最长 64 字)"
40085
+ },
40086
+ {
40087
+ "name": "text",
40088
+ "type": "str",
40089
+ "required": false,
40090
+ "positional": true,
40091
+ "help": "文章正文(默认 Markdown;加 --html 则当 HTML 处理)"
40092
+ },
40093
+ {
40094
+ "name": "file",
40095
+ "type": "str",
40096
+ "required": false,
40097
+ "help": "正文文件路径(UTF-8,默认 Markdown)"
40098
+ },
40099
+ {
40100
+ "name": "html",
40101
+ "type": "boolean",
40102
+ "required": false,
40103
+ "help": "把正文当 HTML 处理而不是 Markdown"
40104
+ },
40105
+ {
40106
+ "name": "draft",
40107
+ "type": "boolean",
40108
+ "required": false,
40109
+ "help": "仅保存草稿(微信公众号目前只支持草稿,此参数保留兼容性)"
40110
+ },
40111
+ {
40112
+ "name": "execute",
40113
+ "type": "boolean",
40114
+ "required": false,
40115
+ "help": "实际执行发布。不加此参数时命令拒绝写入。"
40116
+ }
40117
+ ],
40118
+ "columns": [
40119
+ "status",
40120
+ "outcome",
40121
+ "message",
40122
+ "target_type",
40123
+ "target",
40124
+ "created_target",
40125
+ "created_url"
40126
+ ],
40127
+ "type": "js",
40128
+ "modulePath": "weixin/article.js",
40129
+ "sourceFile": "weixin/article.js",
40130
+ "navigateBefore": "https://mp.weixin.qq.com"
40131
+ },
38249
40132
  {
38250
40133
  "site": "weixin",
38251
40134
  "name": "create-draft",
@@ -38423,6 +40306,25 @@
38423
40306
  "modulePath": "weixin/search.js",
38424
40307
  "sourceFile": "weixin/search.js"
38425
40308
  },
40309
+ {
40310
+ "site": "weixin",
40311
+ "name": "whoami",
40312
+ "description": "查询当前登录的微信公众号账户信息。",
40313
+ "access": "read",
40314
+ "domain": "mp.weixin.qq.com",
40315
+ "strategy": "cookie",
40316
+ "browser": true,
40317
+ "args": [],
40318
+ "columns": [
40319
+ "logged_in",
40320
+ "user_id",
40321
+ "username"
40322
+ ],
40323
+ "type": "js",
40324
+ "modulePath": "weixin/whoami.js",
40325
+ "sourceFile": "weixin/whoami.js",
40326
+ "navigateBefore": "https://mp.weixin.qq.com"
40327
+ },
38426
40328
  {
38427
40329
  "site": "weread",
38428
40330
  "name": "ai-outline",
@@ -39426,6 +41328,87 @@
39426
41328
  "modulePath": "wikipedia/trending.js",
39427
41329
  "sourceFile": "wikipedia/trending.js"
39428
41330
  },
41331
+ {
41332
+ "site": "woshipm",
41333
+ "name": "article",
41334
+ "description": "发布文章到人人都是产品经理(woshipm.com)。默认提交审核(正式发布),加 --draft 仅存草稿。正文默认 Markdown,图片自动转存到站内图床。注意:平台为审核制,提交后稿件进入待审核(pending),运营 24h 内人工审核通过才公开。",
41335
+ "access": "write",
41336
+ "domain": "www.woshipm.com",
41337
+ "strategy": "cookie",
41338
+ "browser": true,
41339
+ "args": [
41340
+ {
41341
+ "name": "title",
41342
+ "type": "str",
41343
+ "required": true,
41344
+ "positional": true,
41345
+ "help": "文章标题(非空,长度<=200)"
41346
+ },
41347
+ {
41348
+ "name": "text",
41349
+ "type": "str",
41350
+ "required": false,
41351
+ "positional": true,
41352
+ "help": "文章正文(默认 Markdown;传 --html 则视为 HTML)"
41353
+ },
41354
+ {
41355
+ "name": "file",
41356
+ "type": "str",
41357
+ "required": false,
41358
+ "help": "正文文件路径(UTF-8,默认 Markdown)"
41359
+ },
41360
+ {
41361
+ "name": "html",
41362
+ "type": "boolean",
41363
+ "required": false,
41364
+ "help": "把正文当 HTML 而非 Markdown 处理"
41365
+ },
41366
+ {
41367
+ "name": "draft",
41368
+ "type": "boolean",
41369
+ "required": false,
41370
+ "help": "仅保存草稿,不提交审核"
41371
+ },
41372
+ {
41373
+ "name": "execute",
41374
+ "type": "boolean",
41375
+ "required": false,
41376
+ "help": "确认执行写操作。未传则拒绝写入。提交审核不可轻易撤回,请确认后再加此参数。"
41377
+ }
41378
+ ],
41379
+ "columns": [
41380
+ "status",
41381
+ "outcome",
41382
+ "message",
41383
+ "target_type",
41384
+ "target",
41385
+ "created_target",
41386
+ "created_url"
41387
+ ],
41388
+ "type": "js",
41389
+ "modulePath": "woshipm/article.js",
41390
+ "sourceFile": "woshipm/article.js",
41391
+ "navigateBefore": "https://www.woshipm.com"
41392
+ },
41393
+ {
41394
+ "site": "woshipm",
41395
+ "name": "whoami",
41396
+ "description": "显示当前登录人人都是产品经理(woshipm.com)的账号信息。",
41397
+ "access": "read",
41398
+ "domain": "www.woshipm.com",
41399
+ "strategy": "cookie",
41400
+ "browser": true,
41401
+ "args": [],
41402
+ "columns": [
41403
+ "logged_in",
41404
+ "user_id",
41405
+ "username"
41406
+ ],
41407
+ "type": "js",
41408
+ "modulePath": "woshipm/whoami.js",
41409
+ "sourceFile": "woshipm/whoami.js",
41410
+ "navigateBefore": "https://www.woshipm.com"
41411
+ },
39429
41412
  {
39430
41413
  "site": "wttr",
39431
41414
  "name": "current",
@@ -41146,6 +43129,98 @@
41146
43129
  "modulePath": "xiaoyuzhou/transcript.js",
41147
43130
  "sourceFile": "xiaoyuzhou/transcript.js"
41148
43131
  },
43132
+ {
43133
+ "site": "xueqiu",
43134
+ "name": "article",
43135
+ "description": "发布雪球文章(长文)。默认正式发布,加 --draft 仅存草稿。正文默认 Markdown,图片自动转存到雪球图床。",
43136
+ "access": "write",
43137
+ "domain": "mp.xueqiu.com",
43138
+ "strategy": "cookie",
43139
+ "browser": true,
43140
+ "args": [
43141
+ {
43142
+ "name": "title",
43143
+ "type": "str",
43144
+ "required": true,
43145
+ "positional": true,
43146
+ "help": "文章标题"
43147
+ },
43148
+ {
43149
+ "name": "text",
43150
+ "type": "str",
43151
+ "required": false,
43152
+ "positional": true,
43153
+ "help": "正文(默认 Markdown;传 --html 则视为原始 HTML)"
43154
+ },
43155
+ {
43156
+ "name": "file",
43157
+ "type": "str",
43158
+ "required": false,
43159
+ "help": "正文文件路径(UTF-8,默认 Markdown)"
43160
+ },
43161
+ {
43162
+ "name": "html",
43163
+ "type": "boolean",
43164
+ "required": false,
43165
+ "help": "把正文视为原始 HTML 而非 Markdown"
43166
+ },
43167
+ {
43168
+ "name": "cover-image",
43169
+ "type": "str",
43170
+ "required": false,
43171
+ "help": "封面图地址(必须是雪球图床 imedao.com/xueqiu.com 的 url;外链请先上传)。可空=无封面"
43172
+ },
43173
+ {
43174
+ "name": "no-cover",
43175
+ "type": "boolean",
43176
+ "required": false,
43177
+ "help": "有封面图时不在文章头部展示封面(show_cover_pic=false)"
43178
+ },
43179
+ {
43180
+ "name": "original",
43181
+ "type": "boolean",
43182
+ "required": false,
43183
+ "help": "声明原创(需账号有原创权限,否则发布会被拒)。默认非原创"
43184
+ },
43185
+ {
43186
+ "name": "original-event-id",
43187
+ "type": "str",
43188
+ "required": false,
43189
+ "help": "参与的原创活动/事件 id(精确校验,找不到/已停用报错);合法值用 `xueqiu events` 列举。可空=不参与"
43190
+ },
43191
+ {
43192
+ "name": "allow-reward",
43193
+ "type": "boolean",
43194
+ "required": false,
43195
+ "help": "允许打赏。默认不允许"
43196
+ },
43197
+ {
43198
+ "name": "draft",
43199
+ "type": "boolean",
43200
+ "required": false,
43201
+ "help": "仅保存为草稿,不正式发布"
43202
+ },
43203
+ {
43204
+ "name": "execute",
43205
+ "type": "boolean",
43206
+ "required": false,
43207
+ "help": "实际执行写入;不加此参数命令拒绝写操作"
43208
+ }
43209
+ ],
43210
+ "columns": [
43211
+ "status",
43212
+ "outcome",
43213
+ "message",
43214
+ "target_type",
43215
+ "target",
43216
+ "created_target",
43217
+ "created_url"
43218
+ ],
43219
+ "type": "js",
43220
+ "modulePath": "xueqiu/article.js",
43221
+ "sourceFile": "xueqiu/article.js",
43222
+ "navigateBefore": "https://mp.xueqiu.com"
43223
+ },
41149
43224
  {
41150
43225
  "site": "xueqiu",
41151
43226
  "name": "comments",
@@ -41225,6 +43300,32 @@
41225
43300
  "sourceFile": "xueqiu/earnings-date.js",
41226
43301
  "navigateBefore": "https://xueqiu.com"
41227
43302
  },
43303
+ {
43304
+ "site": "xueqiu",
43305
+ "name": "events",
43306
+ "description": "列举雪球热门原创活动/事件,或用 --id 校验某事件是否可参与。供 `xueqiu article --original-event-id` 取合法值。",
43307
+ "access": "read",
43308
+ "domain": "mp.xueqiu.com",
43309
+ "strategy": "cookie",
43310
+ "browser": true,
43311
+ "args": [
43312
+ {
43313
+ "name": "id",
43314
+ "type": "str",
43315
+ "required": false,
43316
+ "help": "校验某个事件 id 是否可用(返回 tag/disabled);不传则列举热门事件"
43317
+ }
43318
+ ],
43319
+ "columns": [
43320
+ "id",
43321
+ "tag",
43322
+ "disabled"
43323
+ ],
43324
+ "type": "js",
43325
+ "modulePath": "xueqiu/events.js",
43326
+ "sourceFile": "xueqiu/events.js",
43327
+ "navigateBefore": "https://mp.xueqiu.com"
43328
+ },
41228
43329
  {
41229
43330
  "site": "xueqiu",
41230
43331
  "name": "feed",
@@ -41334,6 +43435,33 @@
41334
43435
  "sourceFile": "xueqiu/groups.js",
41335
43436
  "navigateBefore": "https://xueqiu.com"
41336
43437
  },
43438
+ {
43439
+ "site": "xueqiu",
43440
+ "name": "hashtags",
43441
+ "description": "搜索/列举雪球话题(#话题#)。带 <keyword> 时按关键词搜索;不带则列出热门 + 我最近用过的话题。供在正文里嵌入话题 mention 取合法值。",
43442
+ "access": "read",
43443
+ "domain": "mp.xueqiu.com",
43444
+ "strategy": "cookie",
43445
+ "browser": true,
43446
+ "args": [
43447
+ {
43448
+ "name": "keyword",
43449
+ "type": "str",
43450
+ "required": false,
43451
+ "positional": true,
43452
+ "help": "话题关键词(不含 #);留空则返回热门 + 历史话题"
43453
+ }
43454
+ ],
43455
+ "columns": [
43456
+ "source",
43457
+ "id",
43458
+ "name"
43459
+ ],
43460
+ "type": "js",
43461
+ "modulePath": "xueqiu/hashtags.js",
43462
+ "sourceFile": "xueqiu/hashtags.js",
43463
+ "navigateBefore": "https://mp.xueqiu.com"
43464
+ },
41337
43465
  {
41338
43466
  "site": "xueqiu",
41339
43467
  "name": "hot",
@@ -41533,6 +43661,59 @@
41533
43661
  "sourceFile": "xueqiu/stock.js",
41534
43662
  "navigateBefore": "https://xueqiu.com"
41535
43663
  },
43664
+ {
43665
+ "site": "xueqiu",
43666
+ "name": "stocks",
43667
+ "description": "搜索雪球个股($股票$),返回代码 + 名称,供在正文里嵌入股票 mention 取合法值。",
43668
+ "access": "read",
43669
+ "domain": "mp.xueqiu.com",
43670
+ "strategy": "cookie",
43671
+ "browser": true,
43672
+ "args": [
43673
+ {
43674
+ "name": "keyword",
43675
+ "type": "str",
43676
+ "required": true,
43677
+ "positional": true,
43678
+ "help": "股票关键词(名称/代码片段,不含 $)"
43679
+ }
43680
+ ],
43681
+ "columns": [
43682
+ "symbol",
43683
+ "name",
43684
+ "exchange"
43685
+ ],
43686
+ "type": "js",
43687
+ "modulePath": "xueqiu/stocks.js",
43688
+ "sourceFile": "xueqiu/stocks.js",
43689
+ "navigateBefore": "https://mp.xueqiu.com"
43690
+ },
43691
+ {
43692
+ "site": "xueqiu",
43693
+ "name": "users",
43694
+ "description": "搜索雪球用户(@某人),返回用户 id + 昵称,供在正文里 @用户取合法值。",
43695
+ "access": "read",
43696
+ "domain": "mp.xueqiu.com",
43697
+ "strategy": "cookie",
43698
+ "browser": true,
43699
+ "args": [
43700
+ {
43701
+ "name": "keyword",
43702
+ "type": "str",
43703
+ "required": true,
43704
+ "positional": true,
43705
+ "help": "用户昵称关键词(不含 @)"
43706
+ }
43707
+ ],
43708
+ "columns": [
43709
+ "user_id",
43710
+ "name"
43711
+ ],
43712
+ "type": "js",
43713
+ "modulePath": "xueqiu/users.js",
43714
+ "sourceFile": "xueqiu/users.js",
43715
+ "navigateBefore": "https://mp.xueqiu.com"
43716
+ },
41536
43717
  {
41537
43718
  "site": "xueqiu",
41538
43719
  "name": "watchlist",
@@ -43054,6 +45235,87 @@
43054
45235
  "navigateBefore": false,
43055
45236
  "siteSession": "persistent"
43056
45237
  },
45238
+ {
45239
+ "site": "yuque",
45240
+ "name": "article",
45241
+ "description": "发布语雀文章(知识库文档)。正文默认为 Markdown,外链图片自动转存到语雀图床。",
45242
+ "access": "write",
45243
+ "domain": "www.yuque.com",
45244
+ "strategy": "cookie",
45245
+ "browser": true,
45246
+ "args": [
45247
+ {
45248
+ "name": "title",
45249
+ "type": "str",
45250
+ "required": true,
45251
+ "positional": true,
45252
+ "help": "文章标题"
45253
+ },
45254
+ {
45255
+ "name": "text",
45256
+ "type": "str",
45257
+ "required": false,
45258
+ "positional": true,
45259
+ "help": "文章正文(Markdown 格式;或用 --file 读文件)"
45260
+ },
45261
+ {
45262
+ "name": "file",
45263
+ "type": "str",
45264
+ "required": false,
45265
+ "help": "正文文件路径(UTF-8,Markdown 格式)"
45266
+ },
45267
+ {
45268
+ "name": "html",
45269
+ "type": "boolean",
45270
+ "required": false,
45271
+ "help": "把正文当 HTML 输入(语雀仍转 lake 发布)"
45272
+ },
45273
+ {
45274
+ "name": "draft",
45275
+ "type": "boolean",
45276
+ "required": false,
45277
+ "help": "仅保存草稿,不发布"
45278
+ },
45279
+ {
45280
+ "name": "execute",
45281
+ "type": "boolean",
45282
+ "required": false,
45283
+ "help": "实际执行写操作。不加此参数命令拒绝写入。"
45284
+ }
45285
+ ],
45286
+ "columns": [
45287
+ "status",
45288
+ "outcome",
45289
+ "message",
45290
+ "target_type",
45291
+ "target",
45292
+ "created_target",
45293
+ "created_url"
45294
+ ],
45295
+ "type": "js",
45296
+ "modulePath": "yuque/article.js",
45297
+ "sourceFile": "yuque/article.js",
45298
+ "navigateBefore": "https://www.yuque.com"
45299
+ },
45300
+ {
45301
+ "site": "yuque",
45302
+ "name": "whoami",
45303
+ "description": "查看当前语雀登录账号信息。",
45304
+ "access": "read",
45305
+ "domain": "www.yuque.com",
45306
+ "strategy": "cookie",
45307
+ "browser": true,
45308
+ "args": [],
45309
+ "columns": [
45310
+ "logged_in",
45311
+ "user_id",
45312
+ "username"
45313
+ ],
45314
+ "type": "js",
45315
+ "modulePath": "yuque/whoami.js",
45316
+ "sourceFile": "yuque/whoami.js",
45317
+ "navigateBefore": "https://www.yuque.com"
45318
+ },
43057
45319
  {
43058
45320
  "site": "zhihu",
43059
45321
  "name": "answer",
@@ -43196,6 +45458,68 @@
43196
45458
  "sourceFile": "zhihu/answer-detail.js",
43197
45459
  "navigateBefore": "https://www.zhihu.com"
43198
45460
  },
45461
+ {
45462
+ "site": "zhihu",
45463
+ "name": "article",
45464
+ "description": "Publish a Zhihu article (文章/专栏). Body is Markdown by default; images are auto-rehosted to Zhihu.",
45465
+ "access": "write",
45466
+ "domain": "zhuanlan.zhihu.com",
45467
+ "strategy": "cookie",
45468
+ "browser": true,
45469
+ "args": [
45470
+ {
45471
+ "name": "title",
45472
+ "type": "str",
45473
+ "required": true,
45474
+ "positional": true,
45475
+ "help": "Article title"
45476
+ },
45477
+ {
45478
+ "name": "text",
45479
+ "type": "str",
45480
+ "required": false,
45481
+ "positional": true,
45482
+ "help": "Article body (Markdown by default; pass --html for raw HTML)"
45483
+ },
45484
+ {
45485
+ "name": "file",
45486
+ "type": "str",
45487
+ "required": false,
45488
+ "help": "Article body file path (UTF-8, Markdown by default)"
45489
+ },
45490
+ {
45491
+ "name": "html",
45492
+ "type": "boolean",
45493
+ "required": false,
45494
+ "help": "Treat body as raw HTML instead of Markdown"
45495
+ },
45496
+ {
45497
+ "name": "draft",
45498
+ "type": "boolean",
45499
+ "required": false,
45500
+ "help": "Save as draft only; do not publish"
45501
+ },
45502
+ {
45503
+ "name": "execute",
45504
+ "type": "boolean",
45505
+ "required": false,
45506
+ "help": "Actually create/publish. Without it the command refuses to write."
45507
+ }
45508
+ ],
45509
+ "columns": [
45510
+ "status",
45511
+ "outcome",
45512
+ "message",
45513
+ "target_type",
45514
+ "target",
45515
+ "created_target",
45516
+ "created_url"
45517
+ ],
45518
+ "type": "js",
45519
+ "modulePath": "zhihu/article.js",
45520
+ "sourceFile": "zhihu/article.js",
45521
+ "navigateBefore": "https://zhuanlan.zhihu.com"
45522
+ },
43199
45523
  {
43200
45524
  "site": "zhihu",
43201
45525
  "name": "collection",
@@ -43615,6 +45939,50 @@
43615
45939
  "siteSession": "persistent",
43616
45940
  "defaultWindowMode": "foreground"
43617
45941
  },
45942
+ {
45943
+ "site": "zhihu",
45944
+ "name": "pin",
45945
+ "description": "Publish a Zhihu pin (想法/short post)",
45946
+ "access": "write",
45947
+ "domain": "www.zhihu.com",
45948
+ "strategy": "cookie",
45949
+ "browser": true,
45950
+ "args": [
45951
+ {
45952
+ "name": "text",
45953
+ "type": "str",
45954
+ "required": false,
45955
+ "positional": true,
45956
+ "help": "Pin text content"
45957
+ },
45958
+ {
45959
+ "name": "file",
45960
+ "type": "str",
45961
+ "required": false,
45962
+ "help": "Pin text file path (UTF-8)"
45963
+ },
45964
+ {
45965
+ "name": "execute",
45966
+ "type": "boolean",
45967
+ "required": false,
45968
+ "help": "Actually publish the pin. Without it the command refuses to write."
45969
+ }
45970
+ ],
45971
+ "columns": [
45972
+ "status",
45973
+ "outcome",
45974
+ "message",
45975
+ "target_type",
45976
+ "target",
45977
+ "created_target",
45978
+ "created_url",
45979
+ "author_identity"
45980
+ ],
45981
+ "type": "js",
45982
+ "modulePath": "zhihu/pin.js",
45983
+ "sourceFile": "zhihu/pin.js",
45984
+ "navigateBefore": "https://www.zhihu.com"
45985
+ },
43618
45986
  {
43619
45987
  "site": "zhihu",
43620
45988
  "name": "pins",