@geoly-ai/social-hub-cli 0.1.5 → 0.1.7

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.
@@ -1,13 +1,16 @@
1
1
  import { requireClient, resolveTeamId } from "./client.js";
2
- import { parseJsonOption, printResult, withCliErrorBoundary } from "./output.js";
2
+ import { parseJsonOption, printResult, withCliErrorBoundary, } from "./output.js";
3
3
  export function registerOpsRuntime(program) {
4
4
  const ops = program.command("ops").description("OpenClaw Agent 任务运行时");
5
- const agentOpt = ["--agent <agentId>", "Agent 标识"];
5
+ const agentRequired = [
6
+ "--agent <agentId>",
7
+ "Agent 标识(OpenClaw 执行岗 ID)",
8
+ ];
6
9
  ops
7
10
  .command("claim-next")
8
11
  .description("领取下一条可执行任务")
9
12
  .requiredOption("-t, --team <teamId>", "Team UUID")
10
- .option(...agentOpt)
13
+ .requiredOption(...agentRequired)
11
14
  .option("--account <socialAccountId>", "限定账号")
12
15
  .option("--lease-seconds <n>", "租约秒数", "300")
13
16
  .action(async (opts) => {
@@ -26,7 +29,7 @@ export function registerOpsRuntime(program) {
26
29
  .description("领取指定任务")
27
30
  .requiredOption("-t, --team <teamId>", "Team UUID")
28
31
  .requiredOption("--job <jobId>", "Scheduled job UUID")
29
- .option(...agentOpt)
32
+ .requiredOption(...agentRequired)
30
33
  .option("--lease-seconds <n>", "租约秒数", "300")
31
34
  .action(async (opts) => {
32
35
  await withCliErrorBoundary(async () => {
@@ -43,7 +46,7 @@ export function registerOpsRuntime(program) {
43
46
  .command("heartbeat")
44
47
  .requiredOption("-t, --team <teamId>", "Team UUID")
45
48
  .requiredOption("--job <jobId>", "Job UUID")
46
- .option(...agentOpt)
49
+ .requiredOption(...agentRequired)
47
50
  .action(async (opts) => {
48
51
  await withCliErrorBoundary(async () => {
49
52
  const teamId = resolveTeamId(opts.team);
@@ -58,7 +61,7 @@ export function registerOpsRuntime(program) {
58
61
  .command("complete")
59
62
  .requiredOption("-t, --team <teamId>", "Team UUID")
60
63
  .requiredOption("--job <jobId>", "Job UUID")
61
- .option(...agentOpt)
64
+ .requiredOption(...agentRequired)
62
65
  .option("--permalink <url>", "Reddit permalink")
63
66
  .option("-j, --json <json>", "附加结果 JSON", "{}")
64
67
  .action(async (opts) => {
@@ -78,7 +81,7 @@ export function registerOpsRuntime(program) {
78
81
  .requiredOption("-t, --team <teamId>", "Team UUID")
79
82
  .requiredOption("--job <jobId>", "Job UUID")
80
83
  .requiredOption("--reason <code>", "标准失败原因枚举")
81
- .option(...agentOpt)
84
+ .requiredOption(...agentRequired)
82
85
  .option("--message <text>", "详情")
83
86
  .action(async (opts) => {
84
87
  await withCliErrorBoundary(async () => {
@@ -97,7 +100,7 @@ export function registerOpsRuntime(program) {
97
100
  .requiredOption("-t, --team <teamId>", "Team UUID")
98
101
  .requiredOption("--job <jobId>", "Job UUID")
99
102
  .requiredOption("--reason <code>", "标准跳过原因枚举")
100
- .option(...agentOpt)
103
+ .requiredOption(...agentRequired)
101
104
  .option("--message <text>", "详情")
102
105
  .action(async (opts) => {
103
106
  await withCliErrorBoundary(async () => {
@@ -114,6 +117,29 @@ export function registerOpsRuntime(program) {
114
117
  }
115
118
  export function registerAgentContext(program) {
116
119
  const query = program.command("query").description("Agent 结构化查询");
120
+ query
121
+ .command("account-pool-context")
122
+ .description("与 account-pools 相同:系统级 + 账号级板块池聚合(含 systemPools)")
123
+ .requiredOption("-t, --team <teamId>", "Team UUID")
124
+ .requiredOption("--account <ref>", "账号 UUID 或 handle")
125
+ .option("--industry <key>", "行业 key")
126
+ .option("--limit <n>", "条数", "50")
127
+ .option("--persona-aware <bool>", "按系统人设解析候选池", "true")
128
+ .option("--tier <tier>", "starter|advanced|all", "all")
129
+ .option("--include-debug", "输出 systemPools / personaPools / fallback")
130
+ .action(async (opts) => {
131
+ await withCliErrorBoundary(async () => {
132
+ const teamId = resolveTeamId(opts.team);
133
+ const res = await requireClient().listAccountPoolContext(teamId, opts.account, {
134
+ industry: opts.industry,
135
+ limit: Number(opts.limit),
136
+ personaAware: opts.personaAware !== "false",
137
+ tier: opts.tier,
138
+ includeDebug: Boolean(opts.includeDebug),
139
+ });
140
+ printResult(res);
141
+ });
142
+ });
117
143
  query
118
144
  .command("account-pools")
119
145
  .requiredOption("-t, --team <teamId>", "Team UUID")
@@ -1 +1 @@
1
- {"version":3,"file":"register-ops.js","sourceRoot":"","sources":["../src/register-ops.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-ops.js","sourceRoot":"","sources":["../src/register-ops.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@geoly-ai/social-hub-cli",
3
- "version": "0.1.5",
3
+ "version": "0.1.7",
4
4
  "type": "module",
5
5
  "description": "social-hub CLI for Social Ops Hub",
6
6
  "repository": {
package/skills/README.md CHANGED
@@ -4,12 +4,12 @@
4
4
 
5
5
  ### Skills 来源
6
6
 
7
- | 来源 | 命令 | 说明 |
8
- |------|------|------|
9
- | **bundled(默认)** | `social-hub skills install …` | npm 包内置,离线可用,与 CLI 版本对齐 |
10
- | **GitHub** | `--source github --repo geoly-ai/geoly-reddit [--ref main]` | 从 GitHub 拉取 `social-ops-hub/skills`,缓存 24h |
11
- | **skill.sh** | `--source skillsh --repo owner/name` | 与 GitHub 相同拉取逻辑(skill.sh 导入仓库) |
12
- | **local** | `--source local --local-path ./skills` | 本地目录 |
7
+ | 来源 | 命令 | 说明 |
8
+ | ------------------- | ----------------------------------------------------------- | ------------------------------------------------ |
9
+ | **bundled(默认)** | `social-hub skills install …` | npm 包内置,离线可用,与 CLI 版本对齐 |
10
+ | **GitHub** | `--source github --repo geoly-ai/geoly-reddit [--ref main]` | 从 GitHub 拉取 `social-ops-hub/skills`,缓存 24h |
11
+ | **skill.sh** | `--source skillsh --repo owner/name` | 与 GitHub 相同拉取逻辑(skill.sh 导入仓库) |
12
+ | **local** | `--source local --local-path ./skills` | 本地目录 |
13
13
 
14
14
  ```bash
15
15
  # 从 GitHub 安装最新 skill(缓存 ~/.cache/social-hub/skills/github/…)
@@ -74,13 +74,13 @@ skill add <org>/social-ops-hub/social-hub-ops-runtime
74
74
 
75
75
  ## 本地开发安装(任意 IDE)
76
76
 
77
- | 方式 | 说明 |
78
- |------|------|
77
+ | 方式 | 说明 |
78
+ | --------------- | ---------------------------------------------------------------------------------------------- |
79
79
  | **CLI(推荐)** | `social-hub skills install`(TUI)或 `social-hub skills install --agent cursor --global --yes` |
80
- | **npx** | `npx @geoly-ai/social-hub-cli skills bootstrap` |
81
- | **项目内脚本** | `pnpm skills:install` → 默认 `.agents/skills/` |
82
- | **指定目录** | `SKILLS_INSTALL_DIR=~/.cursor/skills pnpm skills:install` |
83
- | **符号链接** | `social-hub skills install --symlink --dir <path>` |
80
+ | **npx** | `npx @geoly-ai/social-hub-cli skills bootstrap` |
81
+ | **项目内脚本** | `pnpm skills:install` → 默认 `.agents/skills/` |
82
+ | **指定目录** | `SKILLS_INSTALL_DIR=~/.cursor/skills pnpm skills:install` |
83
+ | **符号链接** | `social-hub skills install --symlink --dir <path>` |
84
84
 
85
85
  ```bash
86
86
  # 默认:复制到 social-ops-hub/.agents/skills/
@@ -97,21 +97,22 @@ pnpm skills:check
97
97
 
98
98
  ## Skill 列表
99
99
 
100
- | Skill | 用途 |
101
- |-------|------|
102
- | [social-hub-cli](social-hub-cli) | 总路由 + 领域 skill 索引 |
103
- | [social-hub-shared](social-hub-shared) | config、auth、doctor、context |
104
- | [social-hub-ops-runtime](social-hub-ops-runtime) | claim / complete / fail |
105
- | [social-hub-openclaw-context](social-hub-openclaw-context) | DB 聚合上下文 |
106
- | [social-hub-accounts](social-hub-accounts) | 账号 CRUD、browser-envs、personas |
107
- | [social-hub-posts](social-hub-posts) | Reddit 帖快照 CRUD、batch-upsert |
108
- | [social-hub-calendar-jobs](social-hub-calendar-jobs) | 日历与任务 |
109
- | [social-hub-publishing](social-hub-publishing) | 发布闭环 |
100
+ | Skill | 用途 |
101
+ | ------------------------------------------------------------------ | --------------------------------- |
102
+ | [social-hub-cli](social-hub-cli) | 总路由 + 领域 skill 索引 |
103
+ | [social-hub-shared](social-hub-shared) | config、auth、doctor、context |
104
+ | [social-hub-ops-runtime](social-hub-ops-runtime) | claim / complete / fail |
105
+ | [social-hub-openclaw-context](social-hub-openclaw-context) | DB 聚合上下文 |
106
+ | [social-hub-accounts](social-hub-accounts) | 账号 CRUD、browser-envs、personas |
107
+ | [social-hub-posts](social-hub-posts) | Reddit 帖快照 CRUD、batch-upsert |
108
+ | [social-hub-style-curator](social-hub-style-curator) | style-marks、curator、style-guide |
109
+ | [social-hub-calendar-jobs](social-hub-calendar-jobs) | 日历与任务 |
110
+ | [social-hub-publishing](social-hub-publishing) | 发布闭环 |
110
111
  | [social-hub-events-observability](social-hub-events-observability) | events、dashboard、audit、reports |
111
- | [social-hub-graph-compliance](social-hub-graph-compliance) | 图谱与合规风控 |
112
- | [social-hub-admin](social-hub-admin) | 系统/团队管理、通知渠道 |
113
- | [social-hub-intelligence](social-hub-intelligence) | 板块情报与 insights |
114
- | [social-hub-migration](social-hub-migration) | 导入导出与 replay |
112
+ | [social-hub-graph-compliance](social-hub-graph-compliance) | 图谱与合规风控 |
113
+ | [social-hub-admin](social-hub-admin) | 系统/团队管理、通知渠道 |
114
+ | [social-hub-intelligence](social-hub-intelligence) | 板块情报与 insights |
115
+ | [social-hub-migration](social-hub-migration) | 导入导出与 replay |
115
116
 
116
117
  清单见 [manifest.json](manifest.json)。与 API/CLI 对齐情况见仓库 `docs/cli-api-coverage.md`。
117
118
 
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 1,
3
3
  "package": "social-ops-hub",
4
- "cliVersion": "0.1.5",
4
+ "cliVersion": "0.1.7",
5
5
  "repository": "social-ops-hub",
6
6
  "publish": {
7
7
  "registry": "https://skill.sh",
@@ -39,6 +39,11 @@
39
39
  "path": "social-hub-posts",
40
40
  "description": "Reddit 帖快照 CRUD、刷新、batch-upsert"
41
41
  },
42
+ {
43
+ "id": "social-hub-style-curator",
44
+ "path": "social-hub-style-curator",
45
+ "description": "style-marks 审核/沉淀、curator run、accounts style-guide"
46
+ },
42
47
  {
43
48
  "id": "social-hub-calendar-jobs",
44
49
  "path": "social-hub-calendar-jobs",
@@ -67,7 +72,12 @@
67
72
  {
68
73
  "id": "social-hub-intelligence",
69
74
  "path": "social-hub-intelligence",
70
- "description": "watchlists、hot-posts、tier-rules、runs、insights"
75
+ "description": "watchlists、hot-posts、runs、insights、fetch-by-*"
76
+ },
77
+ {
78
+ "id": "social-hub-subreddit-pools",
79
+ "path": "social-hub-subreddit-pools",
80
+ "description": "运营板块池 catalog、pool aliases、tier rules CRUD"
71
81
  },
72
82
  {
73
83
  "id": "social-hub-migration",
@@ -30,20 +30,22 @@ social-hub version --json
30
30
 
31
31
  ## 领域 Skill 路由
32
32
 
33
- | 场景 | Skill |
34
- |------|--------|
35
- | 鉴权 / config / doctor / context list·use·current | **`social-hub-shared`**(必读) |
36
- | OpenClaw 领任务 / 回填 | `social-hub-ops-runtime` |
37
- | 账号/任务上下文(DB) | `social-hub-openclaw-context` |
38
- | 社交账号 CRUD / browser-envs / personas | `social-hub-accounts` |
39
- | Reddit 帖快照 CRUD / batch-upsert | `social-hub-posts` |
40
- | 日历 / scheduled jobs | `social-hub-calendar-jobs` |
41
- | 发布闭环(brand→report) | `social-hub-publishing` |
42
- | 事件 / dashboard / audit / reports | `social-hub-events-observability` |
43
- | 图谱 / 合规 / 风控 | `social-hub-graph-compliance` |
44
- | settings / invites / members / api-keys | `social-hub-admin` |
45
- | 板块情报 / KOL / insights | `social-hub-intelligence` |
46
- | 导入导出 / runbook / openclaw-ingest | `social-hub-migration` |
33
+ | 场景 | Skill |
34
+ | ------------------------------------------------- | --------------------------------- |
35
+ | 鉴权 / config / doctor / context list·use·current | **`social-hub-shared`**(必读) |
36
+ | OpenClaw 领任务 / 回填 | `social-hub-ops-runtime` |
37
+ | 账号/任务上下文(DB) | `social-hub-openclaw-context` |
38
+ | 社交账号 CRUD / browser-envs / personas | `social-hub-accounts` |
39
+ | Reddit 帖快照 CRUD / batch-upsert | `social-hub-posts` |
40
+ | style-marks / curator / style-guide | `social-hub-style-curator` |
41
+ | 日历 / scheduled jobs | `social-hub-calendar-jobs` |
42
+ | 发布闭环(brand→report) | `social-hub-publishing` |
43
+ | 事件 / dashboard / audit / reports | `social-hub-events-observability` |
44
+ | 图谱 / 合规 / 风控 | `social-hub-graph-compliance` |
45
+ | settings / invites / members / api-keys | `social-hub-admin` |
46
+ | 板块情报 / KOL / insights | `social-hub-intelligence` |
47
+ | 运营板块池 catalog / aliases / tier rules | `social-hub-subreddit-pools` |
48
+ | 导入导出 / runbook / openclaw-ingest | `social-hub-migration` |
47
49
 
48
50
  命中上表场景时,**打开对应领域 skill**;不要在总路由里重复展开领域命令细节。
49
51
 
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: social-hub-intelligence
3
3
  description: >-
4
- 板块情报:watchlists、hot-posts、kol-intents、industry-poolstier-rules、runs、
5
- kol-profiles、fetch-by-*、insights/*、dispatch social-hub intelligence 子命令。
6
- 用户要盯 subreddit、拉热帖、行业池、情报派发、分层规则或洞察分析时用本 skill。
4
+ 板块情报:watchlists、hot-posts、kol-intents、runs、kol-profilesfetch-by-*、
5
+ insights/*、dispatch 等分析/抓取命令。运营板块池 CRUD 用 social-hub-subreddit-pools。
6
+ 用户要盯 subreddit、拉热帖、情报派发或洞察分析时用本 skill。
7
7
  metadata:
8
8
  cliVersion: ">=0.0.12"
9
9
  ---
@@ -13,10 +13,9 @@ metadata:
13
13
  > **前置条件:** 先阅读 [`../social-hub-shared/SKILL.md`](../social-hub-shared/SKILL.md),
14
14
  > 确认已 `auth login` 并 `context use <team-id>`。
15
15
 
16
- ## Watchlists 与行业池
16
+ ## Watchlists(只读行业池列表见 `social-hub-subreddit-pools` 或兼容 `industry-pools-list`)
17
17
 
18
18
  ```bash
19
- social-hub intelligence industry-pools-list -t <team-id>
20
19
  social-hub intelligence watchlists-list -t <team-id> [--campaign <uuid>]
21
20
  social-hub intelligence watchlists-create -t <team-id> -j '{"subreddit":"technology","tags":["core"]}'
22
21
  social-hub intelligence watchlists-update -t <team-id> --id <uuid> -j '{"tags":["updated"]}'
@@ -16,12 +16,12 @@ metadata:
16
16
 
17
17
  ## 与 shared 的分工
18
18
 
19
- | 命令 | 所在 skill |
20
- |------|------------|
21
- | `context list` / `use` / `current` | `social-hub-shared` |
22
- | `context account` / `context job` | 本 skill |
23
- | `query account-pools` / `subreddit-candidates` | 本 skill |
24
- | `export agent-context` | 本 skill(亦见 `social-hub-migration`) |
19
+ | 命令 | 所在 skill |
20
+ | ----------------------------------------------------------------------- | --------------------------------------- |
21
+ | `context list` / `use` / `current` | `social-hub-shared` |
22
+ | `context account` / `context job` | 本 skill |
23
+ | `query account-pools` / `account-pool-context` / `subreddit-candidates` | 本 skill |
24
+ | `export agent-context` | 本 skill(亦见 `social-hub-migration`) |
25
25
 
26
26
  ## 账号上下文
27
27
 
@@ -30,7 +30,7 @@ social-hub context account -t <team-id> --account A1 \
30
30
  --expand pools,events,jobs,persona,risk,env,guardrails,style,quota
31
31
  ```
32
32
 
33
- - `--expand pools`:persona-aware 板块池(含 `personaPools.expandedByKind` / `expandedPools` / `brandPools` / `fallback`)
33
+ - `--expand pools`:板块池**清单/上下文**(`pools`、`personaPools`、`systemPools`、`fallback`);**不含** `selectionWeight` / `cooldownUntil`(互动选板用 `query subreddit-candidates`)
34
34
  - `--expand persona`:账号绑定系统人设摘要
35
35
  - `--expand events`:该账号最近 20 条互动事件摘要
36
36
 
@@ -45,9 +45,11 @@ social-hub context job -t <team-id> --job <scheduledJobId>
45
45
  互动选板 **主读** `subreddit-candidates`;发布前查池可用 `account-pools`。
46
46
 
47
47
  ```bash
48
- # 账号级池列表(可选 debug)
48
+ # 账号板块聚合(系统级 + 账号级;与 account-pool-context 同响应)
49
49
  social-hub query account-pools -t <team-id> --account A1 \
50
50
  --limit 50 --persona-aware true --tier all --include-debug
51
+ # 或语义化别名:
52
+ social-hub query account-pool-context -t <team-id> --account A1 --include-debug
51
53
 
52
54
  # 互动/评论候选(默认带 diversity debug)
53
55
  social-hub query subreddit-candidates -t <team-id> --account A1 \
@@ -57,28 +59,30 @@ social-hub query subreddit-candidates -t <team-id> --account A1 \
57
59
  social-hub query subreddit-candidates -t <team-id> --account A1 --action browse
58
60
  ```
59
61
 
60
- | 参数 | 默认 | 说明 |
61
- |------|------|------|
62
- | `--persona-aware` | `true` | `false` 时仅 team `subreddit_industry_pools` |
63
- | `--tier` | `all` | `starter` / `advanced` / `all` |
64
- | `--include-debug` | `subreddit-candidates` 默认开启 | 输出 `personaPools`、`fallback`、`selectionWeight`、`cooldownUntil` 等 |
65
- | `--action` | 无 | `comment` / `browse` / `publish_post` 等,影响 `allowedActions` 与冷却 |
62
+ | 参数 | 默认 | 说明 |
63
+ | ----------------- | ------------------------------- | ---------------------------------------------------------------------- |
64
+ | `--persona-aware` | `true` | `true`:系统 catalog + 人设/品牌展开并集;`false`:仅系统级 catalog |
65
+ | `--tier` | `all` | `starter` / `advanced` / `all` |
66
+ | `--include-debug` | `subreddit-candidates` 默认开启 | 输出 `systemPools`、`personaPools`、`fallback`、`sourceScope` 等 |
67
+ | `--action` | 无 | `comment` / `browse` / `publish_post` 等,影响 `allowedActions` 与冷却 |
66
68
 
67
69
  **响应要点**(`subreddit-candidates`):
68
70
 
69
- | 字段 | 说明 |
70
- |------|------|
71
- | `items[].source` | `persona.redditRefs`、`persona.starterPoolRefs`、`persona.petPoolRefs`、`brand.binding`、`fallback_team_pool` |
72
- | `items[].poolKind` | `pet` / `common` / `industry` / `brand` / `direct` / `other` |
73
- | `items[].subreddit` | 可直接消费的 `r/Subreddit` 格式 |
74
- | `items[].selectionWeight` | 加权随机用;**禁止直接取 `items[0]`** |
75
- | `items[].cooldownUntil` | 未过期时禁止 `comment`/`reply` |
76
- | `items[].allowedActions` | 当前动作允许的操作 |
77
- | `personaPools.expandedByKind` | 按来源汇总:`direct` / `common` / `industry` / `pet` / `brand` 的 `r/...` 列表 |
78
- | `personaPools.expandedPools[].subreddits` | 每个 pool ref 展开后的具体板块(可多条) |
79
- | `personaPools.brandPools` | 账号品牌绑定及对应 `brand_pools.*` ref 展开结果 |
80
- | `personaPools.unresolvedRefs` | alias 表无法解析的 ref(含部分 `persona_pools.Pxx.*`) |
81
- | `fallback.reason` | `candidate_pool_exhausted` 须在 Agent 回执说明 |
71
+ | 字段 | 说明 |
72
+ | ----------------------------------------- | ---------------------------------------------------------------------------------------- |
73
+ | `items[].source` | `system_pool`、`persona.*`、`brand.binding`;`fallback_team_pool` 仅表示是否用系统池补足 |
74
+ | `items[].sourceScope` | `system`(全局 catalog)或 `account`(人设/品牌展开) |
75
+ | `items[].poolKind` | `pet` / `common` / `industry` / `brand` / `direct` / `other` |
76
+ | `systemPools.expandedByKind` | 系统级 pet/common/industry/brand 汇总(选板前先看) |
77
+ | `items[].subreddit` | 可直接消费的 `r/Subreddit` 格式 |
78
+ | `items[].selectionWeight` | 加权随机用;**禁止直接取 `items[0]`** |
79
+ | `items[].cooldownUntil` | 未过期时禁止 `comment`/`reply` |
80
+ | `items[].allowedActions` | 当前动作允许的操作 |
81
+ | `personaPools.expandedByKind` | 按来源汇总:`direct` / `common` / `industry` / `pet` / `brand` 的 `r/...` 列表 |
82
+ | `personaPools.expandedPools[].subreddits` | 每个 pool ref 展开后的具体板块(可多条) |
83
+ | `personaPools.brandPools` | 账号品牌绑定及对应 `brand_pools.*` ref 展开结果 |
84
+ | `personaPools.unresolvedRefs` | alias 表无法解析的 ref(含部分 `persona_pools.Pxx.*`) |
85
+ | `fallback.reason` | 如 `candidate_pool_exhausted` 须在 Agent 回执说明 |
82
86
 
83
87
  **Agent 门禁**:
84
88
 
@@ -14,6 +14,22 @@ metadata:
14
14
 
15
15
  Hub DB 是执行状态的真源;不要用 agent 工作区 `shared/*.md` 记录任务结果。
16
16
 
17
+ ## 空闲队列(`claim-next` 无任务)
18
+
19
+ 当没有可领取任务时,API 返回 **HTTP 200**(不是错误,也不是 `[hub-offline-fallback]`):
20
+
21
+ ```json
22
+ { "job": null, "code": "no_claimable_job", "message": "No claimable job" }
23
+ ```
24
+
25
+ HEARTBEAT / 矩阵岗应将此视为「当前无工作」,正常结束本轮,不要当作 Hub 故障重试。
26
+
27
+ ## 租约与 heartbeat
28
+
29
+ - 默认租约:**300 秒**(`--lease-seconds`,范围 30–3600)。
30
+ - 浏览器任务超过 **2 分钟** 或 `timeoutSeconds` 较大的 CRON:在环境启动后、进入 Reddit 互动循环前各打一次 `ops heartbeat`;长任务期间每 **120–180 秒** 续租一次。
31
+ - 已 `claim` 后 Hub 离线:**禁止**手改本地 calendar;保持 lease 直至超时或人工 `ops fail`。
32
+
17
33
  ## 推荐流程
18
34
 
19
35
  ```bash
@@ -48,10 +64,12 @@ social-hub ops skip -t <team-id> --job <jobId> --agent "$AGENT" --reason manual_
48
64
 
49
65
  ## 写操作护栏
50
66
 
51
- | 命令 | 要求 |
52
- |------|------|
53
- | `ops complete` | `permalink` 须为 reddit.com URL;先 `claim` 或 `claim-next` |
54
- | `ops fail` / `ops skip` | `--reason` 必须用文档枚举值 |
55
- | `ops claim` | 确认 `jobId` 来自 `jobs list`,勿猜测 UUID |
67
+ | 命令 | 要求 |
68
+ | ----------------------------------------------------------------------- | ----------------------------------------------------------- |
69
+ | `ops complete` | `permalink` 须为 reddit.com URL;先 `claim` 或 `claim-next` |
70
+ | `ops fail` / `ops skip` | `--reason` 必须用文档枚举值 |
71
+ | `ops claim` / `claim-next` / `heartbeat` / `complete` / `fail` / `skip` | **`--agent` 必填** |
72
+ | `ops claim` | 确认 `jobId` 来自 `jobs list`,勿猜测 UUID |
73
+ | `ops skip` | 配额/规则/前置条件不满足时用 `skip`;运行时异常用 `fail` |
56
74
 
57
75
  无 `--dry-run`;误操作后用 `fail`/`skip` 记录原因,勿改本地 Markdown 状态。
@@ -15,11 +15,12 @@ metadata:
15
15
 
16
16
  ## 职责边界
17
17
 
18
- | 做 | 不做 |
19
- |---|---|
20
- | Hub 内 Reddit 帖快照的查询、刷新、单条/批量写入 | 从飞书 Base、CSV、工作区 Markdown 读取并映射字段 |
21
- | 说明 `batch-upsert` JSON item 字段与幂等行为 | team 路由、外部 ETL 脚本、来源系统鉴权 |
22
- | 删除/刷新前提示风险 | `reddit import-feishu`(已废弃) |
18
+ | 做 | 不做 |
19
+ | ------------------------------------------------------------------------------------- | ------------------------------------------------ |
20
+ | Hub 内 Reddit 帖快照的查询、刷新、单条/批量写入 | 从飞书 Base、CSV、工作区 Markdown 读取并映射字段 |
21
+ | OpenClaw profile/post 扫描后的帖子表现回填(`score` / `commentsCount` / `viewCount`) | 浏览器采集、评论维护、style mark / curator |
22
+ | 说明 `batch-upsert` 的 JSON item 字段与幂等行为 | team 路由、外部 ETL 脚本、来源系统鉴权 |
23
+ | 删除/刷新前提示风险 | 用 `reddit import-feishu`(已废弃) |
23
24
 
24
25
  外部数据(飞书、表格、爬虫)应先在你自己的流程里整理成 JSON,再调用本模块命令写入 Hub。
25
26
 
@@ -56,14 +57,21 @@ social-hub reddit create-snapshot -t <team-id> -j '{
56
57
  "title": "Post title",
57
58
  "score": 0,
58
59
  "commentsCount": 0,
59
- "source": "manual"
60
+ "source": "manual",
61
+ "firstRepostLink": "https://www.reddit.com/r/example/comments/repost1/",
62
+ "secondRepostLink": null
60
63
  }'
61
64
 
62
- social-hub reddit update -t <team-id> --snapshot <uuid> -j '{"score":42,"commentsCount":3}'
65
+ social-hub reddit update -t <team-id> --snapshot <uuid> -j '{
66
+ "score": 42,
67
+ "commentsCount": 3,
68
+ "firstRepostLink": "https://www.reddit.com/r/example/comments/repost1/",
69
+ "secondRepostLink": "https://www.reddit.com/r/example/comments/repost2/"
70
+ }'
63
71
  social-hub reddit delete -t <team-id> --snapshot <uuid> # 危险:确认用户意图
64
72
  ```
65
73
 
66
- ## 批量 upsert(外部来源帖快照)
74
+ ## 批量 upsert(外部来源 / OpenClaw 扫描帖快照)
67
75
 
68
76
  ```bash
69
77
  social-hub reddit batch-upsert -t <team-id> -j '{
@@ -74,12 +82,17 @@ social-hub reddit batch-upsert -t <team-id> -j '{
74
82
  "title": "...",
75
83
  "score": 12,
76
84
  "commentsCount": 3,
85
+ "socialAccountId": "<account-uuid>",
77
86
  "source": "external",
78
87
  "feishuRecordId": "recXXX",
79
88
  "baseToken": "optional-base-token",
80
89
  "tableId": "optional-table-id",
81
90
  "viewCount": 100,
91
+ "upvoteRatio": 0.92,
82
92
  "brandRaw": "BrandName",
93
+ "publishDoc": "https://docs.example.com/publish",
94
+ "firstRepostLink": "https://www.reddit.com/r/example/comments/repost1/",
95
+ "secondRepostLink": "https://www.reddit.com/r/example/comments/repost2/",
83
96
  "rawPayload": { "custom": "fields" }
84
97
  }
85
98
  ]
@@ -89,7 +102,11 @@ social-hub reddit batch-upsert -t <team-id> -j '{
89
102
  ### Item 字段说明
90
103
 
91
104
  - **必填(推荐)**:`subreddit`;有真实 Reddit 链接时带 `permalink`
92
- - **可选**:`title`、`score`、`commentsCount`、`postedAt`、`source`、`rawPayload`
105
+ - **可选**:`title`、`score`、`commentsCount`、`viewCount`、`upvoteRatio`、`postedAt`、`source`、`publishDoc`、`rawPayload`
106
+ - **`socialAccountId`**:OpenClaw profile 扫描时建议带上(来自 `context account` 的 `account.id`),用于把快照归因到运营账号。
107
+ - **`viewCount`**:浏览/曝光。平台页面不可见时传 `null`,不要臆造。
108
+ - **`upvoteRatio`**:页面可读时传 0–1 小数;不可得时省略。
109
+ - **`firstRepostLink` / `secondRepostLink`**:首次/二次补发链接(nullable string)。用于 Hub 持久化与 Web 新增/编辑表单;**帖子表现列表不展示这两列**。飞书来源字段别名:`首次补发链接`、`二次补发链接`(见 `sync-feishu-reddit-via-hub-cli` / import 脚本)。`create-snapshot`、`update`、batch item 均支持。
93
110
  - **`feishuRecordId`**:飞书记录 ID。当输入来自飞书时,Hub 优先按 `(teamId, feishuRecordId)` 幂等;同一 permalink 对应不同飞书记录时,后续记录可能获得 `feishu.local` 占位 permalink
94
111
  - **无 permalink**:可只带 `feishuRecordId`(及 `baseToken`/`tableId`),Hub 会生成稳定占位 URL
95
112
 
@@ -105,3 +122,5 @@ social-hub reddit batch-upsert -t <team-id> -j '{
105
122
  需要手动补快照时用 `create-snapshot` 或 `batch-upsert`。
106
123
 
107
124
  **维护 CRON / 手动维护**:OpenClaw `reddit-post-reply-maintenance` Step 4.7 在 profile 扫描后应 `batch-upsert` 更新 `score` / `commentsCount` / `viewCount`(曝光);见 OpenClaw `hub-adapter.md` §5d 与 `references/cron-message-skeleton.md`。
125
+
126
+ **独立回填 CRON**:若只需要定期扫描已发帖表现、不要回复评论 / 不做 style curator,用 OpenClaw `reddit-post-data-backfill-cron`,它只负责 profile/post 扫描 → `reddit batch-upsert` → 回执/通知。
@@ -41,7 +41,7 @@ social-hub brands system-create -j '{"name":"My Brand","slug":"my-brand"}'
41
41
  social-hub brand-members system-list
42
42
  social-hub brand-members system-create -j '{"brandId":"<uuid>","userId":"<uuid>","role":"manager"}'
43
43
  social-hub accounts brand-bindings list -t <team-id> --account <uuid>
44
- social-hub accounts brand-bindings upsert -t <team-id> --account <uuid> -j '{"brandId":"<uuid>"}'
44
+ social-hub accounts brand-bindings add -t <team-id> --account <uuid> -j '{"brandId":"<uuid>"}'
45
45
  ```
46
46
 
47
47
  ## 草稿与计划(brandId 必填)
@@ -80,17 +80,36 @@ social-hub events append -t <team-id> --type post.published --payload '{"permali
80
80
 
81
81
  ## 写操作护栏
82
82
 
83
- | 操作 | 要求 |
84
- |------|------|
85
- | `drafts delete` / `plans cancel` | 先 `list`/`get` 核对 id;无 `--dry-run` |
86
- | `plans create` | JSON 含 `brandId` + `entries`;guardrail 失败会 400 |
87
- | `events append` | 带 `--external-ref` 幂等 |
83
+ | 操作 | 要求 |
84
+ | -------------------------------- | --------------------------------------------------- |
85
+ | `drafts delete` / `plans cancel` | 先 `list`/`get` 核对 id;无 `--dry-run` |
86
+ | `plans create` | JSON 含 `brandId` + `entries`;guardrail 失败会 400 |
87
+ | `events append` | 带 `--external-ref` 幂等 |
88
88
 
89
89
  ## 决策表
90
90
 
91
- | 场景 | 推荐 skill |
92
- |------|------------|
93
- | 只查/改 calendar 或 jobs | `social-hub-calendar-jobs` |
94
- | OpenClaw 领任务/回填 | `social-hub-ops-runtime` |
95
- | Reddit 帖表现/刷新 | `social-hub-posts` |
96
- | 仪表盘/审计/批量事件 | `social-hub-events-observability` |
91
+ | 场景 | 推荐 skill |
92
+ | ------------------------ | ------------------------------------------------------------- |
93
+ | 只查/改 calendar 或 jobs | `social-hub-calendar-jobs` |
94
+ | OpenClaw 领任务/回填 | `social-hub-ops-runtime` |
95
+ | Reddit 帖表现/刷新 | `social-hub-posts` |
96
+ | 仪表盘/审计/批量事件 | `social-hub-events-observability` |
97
+ | subreddit 规则缓存刷新 | `social-hub-graph-compliance`(`rule-caches-*`) |
98
+ | 板块情报 / hot-posts | `social-hub-intelligence` |
99
+ | 工作区 Markdown 批量导入 | `social-hub-migration`(`openclaw-ingest`);**非**运行时主写 |
100
+
101
+ ## OpenClaw 双模式(战略 vs 运行时)
102
+
103
+ | 模式 | 路径 | 何时用 |
104
+ | -------------- | ------------------------------------------------------------------------------ | ------------------------------- |
105
+ | **战略排期** | `brand → draft → plan → calendar_entry → scheduled_job` | 新活动、批量排期、品牌内容管线 |
106
+ | **运行时执行** | `ops claim-next/claim → 浏览器发帖 → events append → ops complete --permalink` | CRON/矩阵岗已存在 calendar job |
107
+ | **应急/遗留** | 直接 `calendar patch` + `events append` | 无 ops 链路或手工修补单条 entry |
108
+
109
+ 日常矩阵互动 CRON **不必**创建 draft/plan;发帖类 job 才走发布闭环。
110
+
111
+ ## Deferred(本 skill 不覆盖)
112
+
113
+ - **Bot Bouncer 黑名单**:`compliance blocklists-*`(见 `social-hub-graph-compliance`),勿用 `rule-caches --kind bot_bouncer`。
114
+ - **Agent 板块候选与 diversity**:`query subreddit-candidates`(见 `social-hub-openclaw-context`)。
115
+ - **风格沉淀**:`style-marks` / `curator run`(见 `social-hub-style-curator`)。