@geoly-ai/social-hub-cli 0.3.13 → 0.3.14
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.
- package/CHANGELOG.md +10 -0
- package/dist/cmd-manifest.json +2 -2
- package/package.json +1 -1
- package/skills/manifest.json +1 -1
- package/skills/reddit-content-rewrite/SKILL.md +6 -0
- package/skills/reddit-content-writing/SKILL.md +9 -0
- package/skills/reddit-matrix.lock.json +3 -3
- package/skills/reddit-strategy-shared/SKILL.md +5 -0
- package/skills/reddit-strategy-shared/references/content-review-gate.md +51 -1
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,16 @@ All notable changes to `@geoly-ai/social-hub-cli` are documented in this file.
|
|
|
4
4
|
|
|
5
5
|
Release workflow: `pnpm release:cli` → `pnpm publish:cli`.
|
|
6
6
|
|
|
7
|
+
## [0.3.14] - 2026-08-05
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- reddit-\* 改为本仓库直接维护 —— 补 --relock 模式,恢复被误还原的作者关系轴说明
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- 还原 4 个 vendored reddit skill —— 冻结区不接受本地修改
|
|
16
|
+
|
|
7
17
|
## [0.3.13] - 2026-08-05
|
|
8
18
|
|
|
9
19
|
### Added
|
package/dist/cmd-manifest.json
CHANGED
package/package.json
CHANGED
package/skills/manifest.json
CHANGED
|
@@ -359,6 +359,12 @@ ExplicitStructureSpec:
|
|
|
359
359
|
- `title` + `body` 的完整帖子调用 `social-hub content post-review`
|
|
360
360
|
- 仅标题候选可作为 `CandidateOnly` 返回,但必须标注不可直接发布、`ContentReviewStatus: NotRun`、`ReadyForUse: No`;一旦配正文,必须按完整帖子重新审核
|
|
361
361
|
- 评论/回复调用 `social-hub content review`,并传入 subreddit、帖子和父评论上下文
|
|
362
|
+
- 知道所回帖子的确切 permalink 时带上 `thread.threadPermalink`,不知道就省略。作者关系
|
|
363
|
+
(`authorRelation`)由 Hub 自行派生:请求侧的 `authorRelationHint` 只是**非权威提示**、
|
|
364
|
+
不是身份声明,虚假声称 `post_author` 是 **422 硬失败**而非降级;`post_author`
|
|
365
|
+
**不加分**,`Update ...` 开头既不扣分也不加分。**不得**为了改变评分而添加 permalink、
|
|
366
|
+
hint 或 update 式开头。完整规则与需记录的派生值见
|
|
367
|
+
`../reddit-strategy-shared/references/content-review-gate.md` §3.05
|
|
362
368
|
- 先选择审核模式:最终发布账号未确定时省略 `accountId`,使用 ContentOnly;已确定时传真实账号,使用 AccountBound。Hub 要求显式品牌关系时,从已批准的策略绑定传 `brandContext`,不得猜测;`stage` 不确定时省略,不传任意值
|
|
363
369
|
- 首次请求使用 `rewrite: true, attempt: 1`
|
|
364
370
|
- `completed/revise` 时,应用 Hub 的 `optimized` 或 `dimensions.issues`,保留事实和内容功能后,用改后的**完整文本** `attempt: 2` 重审
|
|
@@ -80,6 +80,15 @@ C-B/C-NB, and rows that were previously low risk.
|
|
|
80
80
|
arbitrary `stage` value.
|
|
81
81
|
3. Send `rewrite: true, attempt: 1`. Inspect `executionStatus` before
|
|
82
82
|
`verdict`.
|
|
83
|
+
For a comment/reply, include `thread.threadPermalink` when you know the
|
|
84
|
+
permalink of the exact post being replied to; omit it otherwise. Hub uses it
|
|
85
|
+
to derive `authorRelation` itself — the request-side `authorRelationHint` is
|
|
86
|
+
a non-authoritative hint, not an identity claim, and a false `post_author`
|
|
87
|
+
claim is a hard 422, not a downgrade. `post_author` grants **no score bonus**
|
|
88
|
+
and an `Update ...` opening is neither penalised nor rewarded. Never add a
|
|
89
|
+
permalink, a hint, or an update-style opening to move the score. Full rules
|
|
90
|
+
and the derived values to record:
|
|
91
|
+
`../reddit-strategy-shared/references/content-review-gate.md` §3.05.
|
|
83
92
|
4. On `completed/revise`, apply each listed issue without changing approved
|
|
84
93
|
facts, SKU bindings, disclosures, or the post/comment function. **Do not
|
|
85
94
|
adopt the returned `optimized` draft wholesale if it changes any protected
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
"contentSha256": "501408ce9cd1be969ac91c672523cde18bdbb6118836e032539ef30af98f2711"
|
|
8
8
|
},
|
|
9
9
|
"reddit-strategy-shared": {
|
|
10
|
-
"contentSha256": "
|
|
10
|
+
"contentSha256": "9ffdae74106e1b93b265bd89f6b0b1674f2b37a9dafd43c4a50129ac75f85862"
|
|
11
11
|
},
|
|
12
12
|
"reddit-phase-research": {
|
|
13
13
|
"contentSha256": "e1818757ae92019448a454b956cb38c9cabc7e3c4762da4a6e4a765d687b8dc6"
|
|
@@ -19,10 +19,10 @@
|
|
|
19
19
|
"contentSha256": "841d9e9928126553af0211da7d74a69af92076fc00d800dff2243075359b2157"
|
|
20
20
|
},
|
|
21
21
|
"reddit-content-writing": {
|
|
22
|
-
"contentSha256": "
|
|
22
|
+
"contentSha256": "9b2f4cda552d5f76b3ab289504f84db599245e7245297a9d974cc55143872d8d"
|
|
23
23
|
},
|
|
24
24
|
"reddit-content-rewrite": {
|
|
25
|
-
"contentSha256": "
|
|
25
|
+
"contentSha256": "3e7df833877fc81a46d66ab7c827fac386a1413862724179e87570d773ab8935"
|
|
26
26
|
},
|
|
27
27
|
"reddit-delivery-check": {
|
|
28
28
|
"contentSha256": "234d7fd1d8f2db68444674c20418c836c1b2488305b20399114dec89a0de32fc"
|
|
@@ -94,6 +94,11 @@ it is delivered to the next skill or presented as ready:
|
|
|
94
94
|
- post (`title` + `body`) -> `social-hub content post-review`
|
|
95
95
|
- comment/reply -> `social-hub content review`
|
|
96
96
|
|
|
97
|
+
Author-relation semantics (`authorRelation` / `authorRelationHint` /
|
|
98
|
+
`threadPermalink`) are defined in one place only —
|
|
99
|
+
`references/content-review-gate.md` §3.05. It is a Hub-derived identity check,
|
|
100
|
+
not a scoring option; do not restate or reinterpret it elsewhere.
|
|
101
|
+
|
|
97
102
|
The producer must apply Hub `revise` feedback and submit the changed draft
|
|
98
103
|
again within the Hub attempt limit. `executionStatus=completed` with
|
|
99
104
|
`verdict=pass` is necessary for content review.
|
|
@@ -125,13 +125,18 @@ social-hub content review -t <team-id> -j '{
|
|
|
125
125
|
"postBody": "<post body or concise factual summary>",
|
|
126
126
|
"parentComment": "<required for a reply>",
|
|
127
127
|
"topComments": ["<relevant top comments>"],
|
|
128
|
-
"subredditToneHint": "<tone>"
|
|
128
|
+
"subredditToneHint": "<tone>",
|
|
129
|
+
"threadPermalink": "<permalink of the exact post being reviewed, when known>"
|
|
129
130
|
},
|
|
130
131
|
"rewrite": true,
|
|
131
132
|
"attempt": 1
|
|
132
133
|
}'
|
|
133
134
|
```
|
|
134
135
|
|
|
136
|
+
`threadPermalink` (also settable as `--thread-permalink`) must be the permalink of
|
|
137
|
+
the **exact post this comment belongs to**, or be omitted. It is not a scoring
|
|
138
|
+
option: see the author-relation section below.
|
|
139
|
+
|
|
135
140
|
Always inspect `executionStatus` before `verdict`:
|
|
136
141
|
|
|
137
142
|
For AccountBound, add the selected account to either payload:
|
|
@@ -151,6 +156,7 @@ property for ContentOnly.
|
|
|
151
156
|
| `degraded`, timeout, 5xx, auth/context failure | Not passed. Do not use a local self-score as a substitute. Fix Hub availability and rerun. |
|
|
152
157
|
| HTTP 400 invalid request | Fix the payload schema or omit an unsupported `stage`; do not count the failed request as an attempt or pass. |
|
|
153
158
|
| HTTP 422 requesting explicit brand context | Resolve an approved `brandKey`/`campaignId` from Hub context or user-approved strategy; do not guess. |
|
|
159
|
+
| HTTP 422 `AUTHOR_RELATION_MISMATCH` | Hard failure, not a downgrade. You claimed `authorRelationHint: post_author` and Hub's post snapshot shows the publishing account is not that post's author. No LLM call was made and a security audit was written. Do not retry, and do not swap in a different permalink. Verify the publishing account and the permalink, or drop the hint and rerun. |
|
|
154
160
|
| `revise` after the service attempt limit | Not passed. Stop with `ReadyForNextSkill: No`; do not loop forever or lower the standard. |
|
|
155
161
|
|
|
156
162
|
The current Hub review service supports two attempts. `rewrite: true` lets Hub
|
|
@@ -159,6 +165,48 @@ facts, SKU bindings, disclosure requirements, subreddit constraints, and the
|
|
|
159
165
|
requested content function. Review the actual final text, not only the model's
|
|
160
166
|
suggested score.
|
|
161
167
|
|
|
168
|
+
## 3.05 Author relation (`authorRelation`) — derived by Hub, never declared
|
|
169
|
+
|
|
170
|
+
`commentType` says where the comment sits (`top_level` / `reply`).
|
|
171
|
+
`authorRelation` says **who is speaking** (`post_author` / `other` / `unknown`).
|
|
172
|
+
They are two independent axes; read both.
|
|
173
|
+
|
|
174
|
+
**Authoritative source.** `authorRelation` and `authorRelationEvidence` appear
|
|
175
|
+
only in the **response**. Hub derives them from the publishing account, the
|
|
176
|
+
permalink of the post under review, and Hub's own snapshot of that post. The
|
|
177
|
+
request field `authorRelationHint` (CLI: `--author-relation-hint`) is an optional,
|
|
178
|
+
**non-authoritative** hint. It is not proof of identity, it is never echoed back
|
|
179
|
+
as the verdict, and evidence always overrides it — claiming `other` while the
|
|
180
|
+
evidence shows you are the author still yields `post_author`.
|
|
181
|
+
|
|
182
|
+
**Evidence conditions.** `post_author` / `verified_snapshot` is possible only when
|
|
183
|
+
the publishing account, the reviewed post's permalink, Hub's snapshot of that
|
|
184
|
+
post, and the snapshot's subreddit + title binding to this thread all line up.
|
|
185
|
+
Sending a hint, or sending a permalink for which Hub has no snapshot, does not
|
|
186
|
+
produce it. Never substitute another post, a guessed account, or an alternative
|
|
187
|
+
permalink to obtain a verifiable combination.
|
|
188
|
+
|
|
189
|
+
**Conflict and unavailability.** An explicit `post_author` claim contradicted by
|
|
190
|
+
the verified author is a **hard 422 `AUTHOR_RELATION_MISMATCH`**: no LLM call, a
|
|
191
|
+
security audit is written, and neither a retry nor a different permalink fixes it.
|
|
192
|
+
Missing permalink, missing snapshot, `[deleted]` author, no account, or a failed
|
|
193
|
+
thread binding yields `unknown` / `unavailable` — reviewed on the **ordinary
|
|
194
|
+
baseline**, not blocked and not penalised for it.
|
|
195
|
+
|
|
196
|
+
**Scoring boundary.** `post_author` carries **no score bonus**. It only widens
|
|
197
|
+
which concrete developments count as a valid thread anchor (progress, experiments,
|
|
198
|
+
results, failed attempts since the original post). Weights, thresholds, and the
|
|
199
|
+
required evidence strength are unchanged, and compliance, authenticity,
|
|
200
|
+
specificity, and repetition requirements are not relaxed. An opening such as
|
|
201
|
+
`Update in case anyone lands here later` is a neutral discourse marker: it is
|
|
202
|
+
**not penalised and not rewarded**; only the concrete material after it is
|
|
203
|
+
assessed, and a vague update can still hit the context-anchoring hard line and be
|
|
204
|
+
blocked.
|
|
205
|
+
|
|
206
|
+
> Agent rule: never add a hint, a permalink, or an update-style opening in order
|
|
207
|
+
> to move the score. Send only facts that already exist in this real thread and
|
|
208
|
+
> can be checked.
|
|
209
|
+
|
|
162
210
|
## 3.1 Structure protection on Hub `optimized` (v2.12.25)
|
|
163
211
|
|
|
164
212
|
The Hub review is the **last remaining normalization exit**: it can silently
|
|
@@ -220,6 +268,8 @@ Use this compact record shape:
|
|
|
220
268
|
- Scores: <authoritative score(s), if returned>
|
|
221
269
|
- HubRecordIds: <review/audit ids, if returned>
|
|
222
270
|
- HubRunOrRequestIds: <ids, if returned>
|
|
271
|
+
- AuthorRelation: post_author | other | unknown | NotReturned | NotApplicable (**copy the server-derived response value; never record the hint you sent.** `NotApplicable` for a post review; `NotReturned` when no successful response carried it — including a `AUTHOR_RELATION_MISMATCH` 422, where the CLI deliberately does not surface the server's derived values)
|
|
272
|
+
- AuthorRelationEvidence: verified_snapshot | verified_live | unavailable | mismatch | NotReturned | NotApplicable
|
|
223
273
|
- BrandFitReviewRequired: true | false
|
|
224
274
|
- AccountCandidateFeedback: <summary or None>
|
|
225
275
|
- ReviewMode: ContentOnly | AccountBound
|