@gobing-ai/knowledge-kit 0.0.37 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (157) hide show
  1. package/.claude-plugin/marketplace.json +1 -1
  2. package/dist/board/collect/index.css +654 -16
  3. package/dist/board/collect/index.js +191 -64
  4. package/dist/board/daily-voice/index.css +679 -12
  5. package/dist/board/daily-voice/index.js +185 -66
  6. package/dist/board/itc/index.css +679 -13
  7. package/dist/board/itc/index.js +188 -66
  8. package/dist/index.js +2864 -139
  9. package/package.json +3 -2
  10. package/plugins/generations/content-gen/dist/index.js +158 -12
  11. package/plugins/generations/core-facts-gen/dist/index.js +158 -12
  12. package/plugins/generations/daily-article-gen/dist/index.js +158 -12
  13. package/plugins/generations/dailynews-gen/dist/index.js +158 -12
  14. package/plugins/generations/episode-plan-gen/dist/index.js +158 -12
  15. package/plugins/generations/gemini-tts/README.md +4 -3
  16. package/plugins/generations/gemini-tts/dist/index.js +158 -12
  17. package/plugins/generations/image-gen/dist/index.js +158 -12
  18. package/plugins/generations/news-report-gen/dist/index.js +158 -12
  19. package/plugins/generations/omni-voice-gen/README.md +15 -4
  20. package/plugins/generations/omni-voice-gen/profiles.json +1 -2
  21. package/plugins/generations/voice-gen/dist/index.js +158 -12
  22. package/plugins/generations/voxcpm-tts/README.md +21 -1
  23. package/plugins/generations/voxcpm-tts/dist/index.js +173 -13
  24. package/plugins/generations/voxcpm-tts/scripts/audit-speaker-consistency.py +109 -0
  25. package/plugins/generations/voxcpm-tts/src/voxcpm-client.ts +28 -1
  26. package/plugins/ingestions/aihot-ingest/dist/index.js +158 -12
  27. package/plugins/ingestions/horizon-ingest/dist/index.js +158 -12
  28. package/plugins/ingestions/last30days-ingest/dist/index.js +158 -12
  29. package/plugins/ingestions/web-search/dist/index.js +158 -12
  30. package/plugins/kk/commands/workflow-run.md +56 -18
  31. package/plugins/kk/decisions/kk-itc.yaml +46 -0
  32. package/plugins/kk/decisions/kk-seo-keyword.yaml +57 -0
  33. package/plugins/kk/decisions/kk-seo-page.yaml +230 -0
  34. package/plugins/kk/decisions/kk-seo-pair.yaml +21 -0
  35. package/plugins/kk/decisions/kk-seo-site.yaml +90 -0
  36. package/plugins/kk/plugin.json +1 -1
  37. package/plugins/kk/publish-presets/chinese-article.json +14 -0
  38. package/plugins/kk/publish-presets/technical-article.json +14 -0
  39. package/plugins/kk/references/smart-seo-attribution.md +85 -0
  40. package/plugins/kk/scripts/daily-stages.ts +42 -2
  41. package/plugins/kk/scripts/itc-stages.ts +25 -118
  42. package/plugins/kk/scripts/kk-workflow-stages.ts +38 -1
  43. package/plugins/kk/scripts/seo-decisions.ts +491 -0
  44. package/plugins/kk/scripts/seo-enrich.ts +728 -0
  45. package/plugins/kk/scripts/seo-facts.ts +610 -0
  46. package/plugins/kk/scripts/seo-fetch.ts +766 -0
  47. package/plugins/kk/scripts/seo-report.ts +460 -0
  48. package/plugins/kk/scripts/seo-rules.ts +1882 -0
  49. package/plugins/kk/scripts/seo-stages.ts +1044 -0
  50. package/plugins/kk/skills/article-adapt/SKILL.md +2 -2
  51. package/plugins/kk/skills/smart-seo/SKILL.md +183 -0
  52. package/plugins/kk/skills/smart-seo/references/method.md +126 -0
  53. package/plugins/kk/skills/smart-seo/references/narrative.md +125 -0
  54. package/plugins/kk/skills/smart-seo/references/operations.md +209 -0
  55. package/plugins/kk/skills/smart-seo/references/seo-geo-sources.md +90 -0
  56. package/plugins/kk/workflows/feature-verification.yaml +28 -24
  57. package/plugins/kk/workflows/kk-daily-ai-voice2.yaml +85 -17
  58. package/plugins/kk/workflows/kk-itc-author.yaml +406 -0
  59. package/plugins/kk/workflows/kk-itc.yaml +208 -682
  60. package/plugins/kk/workflows/kk-smart-seo.yaml +251 -0
  61. package/plugins/publishings/bilibili-pub/dist/index.js +21782 -0
  62. package/plugins/publishings/bilibili-pub/dist/profile-check.js +20410 -0
  63. package/plugins/publishings/bilibili-pub/package.json +20 -0
  64. package/plugins/publishings/bilibili-pub/plugin.json +12 -0
  65. package/plugins/publishings/bilibili-pub/src/flow.ts +1296 -0
  66. package/plugins/publishings/bilibili-pub/src/index.ts +139 -0
  67. package/plugins/publishings/bilibili-pub/src/profile-check.ts +19 -0
  68. package/plugins/publishings/bilibili-pub/src/selectors.ts +222 -0
  69. package/plugins/publishings/bilibili-pub/tsconfig.json +4 -0
  70. package/plugins/publishings/cnblogs-pub/dist/index.js +21383 -0
  71. package/plugins/publishings/cnblogs-pub/dist/profile-check.js +20412 -0
  72. package/plugins/publishings/cnblogs-pub/package.json +19 -0
  73. package/plugins/publishings/cnblogs-pub/plugin.json +12 -0
  74. package/plugins/publishings/cnblogs-pub/src/flow.ts +708 -0
  75. package/plugins/publishings/cnblogs-pub/src/index.ts +172 -0
  76. package/plugins/publishings/cnblogs-pub/src/profile-check.ts +24 -0
  77. package/plugins/publishings/cnblogs-pub/src/selectors.ts +104 -0
  78. package/plugins/publishings/cnblogs-pub/tsconfig.json +4 -0
  79. package/plugins/publishings/csdn-pub/dist/index.js +21552 -0
  80. package/plugins/publishings/csdn-pub/dist/profile-check.js +20963 -0
  81. package/plugins/publishings/csdn-pub/package.json +19 -0
  82. package/plugins/publishings/csdn-pub/plugin.json +12 -0
  83. package/plugins/publishings/csdn-pub/src/index.ts +1178 -0
  84. package/plugins/publishings/csdn-pub/src/profile-check.ts +23 -0
  85. package/plugins/publishings/csdn-pub/tsconfig.json +4 -0
  86. package/plugins/publishings/emdash-pub/dist/index.js +158 -12
  87. package/plugins/publishings/emdash-pub/plugin.json +22 -1
  88. package/plugins/publishings/infoq-pub/dist/index.js +160 -12
  89. package/plugins/publishings/infoq-pub/dist/profile-check.js +160 -12
  90. package/plugins/publishings/infoq-pub/plugin.json +21 -0
  91. package/plugins/publishings/jike-pub/dist/index.js +21379 -0
  92. package/plugins/publishings/jike-pub/dist/profile-check.js +20951 -0
  93. package/plugins/publishings/jike-pub/package.json +19 -0
  94. package/plugins/publishings/jike-pub/plugin.json +12 -0
  95. package/plugins/publishings/jike-pub/src/index.ts +800 -0
  96. package/plugins/publishings/jike-pub/src/profile-check.ts +21 -0
  97. package/plugins/publishings/jike-pub/tsconfig.json +4 -0
  98. package/plugins/publishings/juejin-pub/dist/index.js +160 -12
  99. package/plugins/publishings/juejin-pub/dist/profile-check.js +160 -12
  100. package/plugins/publishings/juejin-pub/plugin.json +21 -0
  101. package/plugins/publishings/medium-pub/dist/index.js +158 -12
  102. package/plugins/publishings/medium-pub/plugin.json +22 -1
  103. package/plugins/publishings/podcast-pub/dist/index.js +158 -12
  104. package/plugins/publishings/qiita-pub/dist/index.js +158 -12
  105. package/plugins/publishings/qiita-pub/plugin.json +24 -1
  106. package/plugins/publishings/shipinhao-pub/dist/index.js +21715 -0
  107. package/plugins/publishings/shipinhao-pub/dist/profile-check.js +20431 -0
  108. package/plugins/publishings/shipinhao-pub/package.json +19 -0
  109. package/plugins/publishings/shipinhao-pub/plugin.json +12 -0
  110. package/plugins/publishings/shipinhao-pub/src/flow.ts +1323 -0
  111. package/plugins/publishings/shipinhao-pub/src/index.ts +173 -0
  112. package/plugins/publishings/shipinhao-pub/src/profile-check.ts +25 -0
  113. package/plugins/publishings/shipinhao-pub/src/selectors.ts +241 -0
  114. package/plugins/publishings/shipinhao-pub/tsconfig.json +4 -0
  115. package/plugins/publishings/sspai-pub/dist/index.js +21371 -0
  116. package/plugins/publishings/sspai-pub/dist/profile-check.js +20414 -0
  117. package/plugins/publishings/sspai-pub/package.json +19 -0
  118. package/plugins/publishings/sspai-pub/plugin.json +12 -0
  119. package/plugins/publishings/sspai-pub/src/flow.ts +624 -0
  120. package/plugins/publishings/sspai-pub/src/index.ts +167 -0
  121. package/plugins/publishings/sspai-pub/src/profile-check.ts +25 -0
  122. package/plugins/publishings/sspai-pub/src/selectors.ts +122 -0
  123. package/plugins/publishings/sspai-pub/tsconfig.json +4 -0
  124. package/plugins/publishings/substack-pub/dist/index.js +160 -12
  125. package/plugins/publishings/substack-pub/dist/profile-check.js +160 -12
  126. package/plugins/publishings/substack-pub/plugin.json +21 -0
  127. package/plugins/publishings/surfdash-pub/dist/index.js +158 -12
  128. package/plugins/publishings/surfdash-pub/plugin.json +22 -1
  129. package/plugins/publishings/threads-pub/dist/index.js +158 -12
  130. package/plugins/publishings/wechatmp-pub/dist/index.js +1669 -502
  131. package/plugins/publishings/wechatmp-pub/dist/profile-check.js +204 -21
  132. package/plugins/publishings/wechatmp-pub/plugin.json +32 -0
  133. package/plugins/publishings/wechatmp-pub/src/cgi-draft.ts +540 -0
  134. package/plugins/publishings/wechatmp-pub/src/cgi-media.ts +380 -0
  135. package/plugins/publishings/wechatmp-pub/src/cgi.ts +485 -0
  136. package/plugins/publishings/wechatmp-pub/src/flow.ts +104 -0
  137. package/plugins/publishings/weibo-pub/dist/index.js +160 -12
  138. package/plugins/publishings/weibo-pub/dist/profile-check.js +160 -12
  139. package/plugins/publishings/weibo-pub/plugin.json +35 -0
  140. package/plugins/publishings/x-pub/dist/index.js +160 -12
  141. package/plugins/publishings/x-pub/dist/profile-check.js +160 -12
  142. package/plugins/publishings/x-pub/plugin.json +40 -0
  143. package/plugins/publishings/xhs-pub/dist/index.js +160 -12
  144. package/plugins/publishings/xhs-pub/dist/profile-check.js +160 -12
  145. package/plugins/publishings/xhs-pub/plugin.json +37 -0
  146. package/plugins/publishings/xiaoyuzhou-pub/dist/index.js +21491 -0
  147. package/plugins/publishings/xiaoyuzhou-pub/dist/profile-check.js +20417 -0
  148. package/plugins/publishings/xiaoyuzhou-pub/package.json +19 -0
  149. package/plugins/publishings/xiaoyuzhou-pub/plugin.json +12 -0
  150. package/plugins/publishings/xiaoyuzhou-pub/src/flow.ts +826 -0
  151. package/plugins/publishings/xiaoyuzhou-pub/src/index.ts +174 -0
  152. package/plugins/publishings/xiaoyuzhou-pub/src/profile-check.ts +26 -0
  153. package/plugins/publishings/xiaoyuzhou-pub/src/selectors.ts +125 -0
  154. package/plugins/publishings/xiaoyuzhou-pub/tsconfig.json +4 -0
  155. package/plugins/publishings/zenn-pub/dist/index.js +158 -12
  156. package/plugins/publishings/zenn-pub/plugin.json +22 -1
  157. package/plugins/generations/omni-voice-gen/voices/robin-news.wav +0 -0
@@ -0,0 +1,251 @@
1
+ ---
2
+ # kk-smart-seo — evidence-grounded SEO/GEO audit (feature G9, task 0285).
3
+ #
4
+ # preflight -> collect -> check -> enrich -> judge -> score -> narrative -> report -> done|partial
5
+ #
6
+ # Eight stages over the existing `kk stage run seo-*` actions plus ONE bounded narrative
7
+ # agent.run. No new workflow engine, no scheduler, no Board surface (design §3/§13).
8
+ #
9
+ # Contract notes that matter when editing this file:
10
+ # * Deterministic actions pass quoted environment data, never templated shell source:
11
+ # `kk stage run seo-<stage> "$work_dir"`. Workflow vars are exported to the shell env, so a
12
+ # value with spaces or shell metacharacters stays one literal argv entry, and a NUL byte is
13
+ # refused by the stage validators.
14
+ # * preflight atomically writes `.spur/run/<run-id>-seo-work-dir.txt` (plain text, the resolved
15
+ # absolute workspace). `file.read.into-var` projects that exact run-bound file back into
16
+ # `work_dir` before collection, so an allocated directory (empty `work_dir`) binds correctly.
17
+ # * Required stages use an `action-ok` edge to the next stage and a default `always` edge to
18
+ # `failed`. Optional evidence (PSI/CrUX, semantic decisions) is persisted by its stage as an
19
+ # availability outcome and the stage still exits 0 — an unavailable optional input is a
20
+ # `partial` report, never a failed run.
21
+ # * `report` chooses `done` vs `partial` from the validated `report.json.status`; an absent or
22
+ # malformed report falls through to `failed`.
23
+ # * `iterationBound: 12` covers the eight stages plus the terminal hop with no open loop.
24
+ # * The narrative has no revision loop: one fresh `agent.run`, `timeoutMs: 120000`, an
25
+ # unconditional edge to `report`, and `onError: continue` so an absent or invalid narrative
26
+ # degrades to the labeled deterministic summary instead of failing the audit.
27
+ "$schema": "@gobing-ai/spur/schemas/state-machine-workflow.schema.json"
28
+ name: kk-smart-seo
29
+ kind: state-machine
30
+ version: "2"
31
+ description: >-
32
+ Read-only SEO/GEO audit for one public URL: bounded collection, deterministic checks,
33
+ optional measured evidence, typed semantic judgments, deterministic scoring, an optional
34
+ validated narrative and a JSON/Markdown report.
35
+ initialState: preflight
36
+ terminalStates:
37
+ - done
38
+ - partial
39
+ - failed
40
+ failureStates:
41
+ - failed
42
+ iterationBound: 12
43
+ vars:
44
+ # Path to the UTF-8 JSON options file (max 64 KiB, strict schema — see seo-facts.validateOptions).
45
+ options_file: ""
46
+ # Empty asks preflight to allocate .works/kk-smart-seo/<UTC-stamp>-<run-id>; a non-empty value
47
+ # must name an absent or empty directory (overwrite is refused). Preflight rewrites this var from
48
+ # the run-bound work-dir file, so the resolved absolute path is authoritative below.
49
+ work_dir: ""
50
+ # Seeded by the engine; declared here so the schema keeps every var explicit.
51
+ __runId: ""
52
+
53
+ states:
54
+ - id: preflight
55
+ description: >-
56
+ Validate the options file, allocate or verify the run workspace, install the run-bound
57
+ work-dir file and (require_decisions=true) prove the four SEO decision catalogs are served.
58
+ onEnter:
59
+ - kind: shell
60
+ options:
61
+ command: >-
62
+ kk stage run seo-preflight "$work_dir" "$options_file" "$__runId" true
63
+ - kind: file.read.into-var
64
+ options:
65
+ path: ".spur/run/${vars.__runId}-seo-work-dir.txt"
66
+ var: work_dir
67
+
68
+ - id: collect
69
+ description: >-
70
+ Bounded public-site collection: robots, sitemaps, scoped redirects and per-page facts,
71
+ all inside one shared page/request/byte/deadline budget.
72
+ onEnter:
73
+ - kind: shell
74
+ options:
75
+ command: >-
76
+ kk stage run seo-collect "$work_dir"
77
+
78
+ - id: check
79
+ description: >-
80
+ Deterministic offline rule assessment over the collected facts: one explicit
81
+ pass/fail/unknown/not-applicable row per rule and eligible subject.
82
+ onEnter:
83
+ - kind: shell
84
+ options:
85
+ command: >-
86
+ kk stage run seo-check "$work_dir"
87
+
88
+ - id: enrich
89
+ description: >-
90
+ Optional measured evidence (PSI lab + CrUX field, imported visibility). Disabled or
91
+ unavailable evidence is persisted as an availability outcome and the stage exits 0.
92
+ onEnter:
93
+ - kind: shell
94
+ options:
95
+ command: >-
96
+ kk stage run seo-enrich "$work_dir"
97
+
98
+ - id: judge
99
+ description: >-
100
+ Typed semantic judgments through `spur decision` against the four SEO catalogs. Fallback,
101
+ malformed, low-certainty or unavailable results stay unknown/review; deadline exhaustion
102
+ leaves the remaining questions explicitly unassessed and the stage still exits 0.
103
+ onEnter:
104
+ - kind: shell
105
+ options:
106
+ command: >-
107
+ kk stage run seo-judge "$work_dir"
108
+
109
+ - id: score
110
+ description: >-
111
+ Deterministic scoring, stable finding/action IDs, prioritization and the audit artifact.
112
+ Refuses to overwrite an existing audit in the same workspace.
113
+ onEnter:
114
+ - kind: shell
115
+ options:
116
+ command: >-
117
+ kk stage run seo-score "$work_dir"
118
+
119
+ - id: narrative
120
+ description: >-
121
+ ONE bounded narrative attempt. The agent selects allow-listed headings and fixed
122
+ fact/action/limit templates pointing at recorded audit records; it cannot introduce prose,
123
+ measurements, diagnoses or predictions. Absent/invalid output is rejected and the report
124
+ falls back to its deterministic summary — never an audit failure (onError: continue).
125
+ onEnter:
126
+ - kind: agent.run
127
+ onError: continue
128
+ options:
129
+ role: coder
130
+ session: fresh
131
+ timeoutMs: 120000
132
+ answerFile: "${vars.work_dir}/narrative.json"
133
+ expectFile: "${vars.work_dir}/narrative.json"
134
+ input: >-
135
+ Author the optional Smart SEO narrative offline; change no file but this artifact.
136
+ Source: ${vars.work_dir}/audit.json. Its SHA-256 covers the exact file bytes (shasum -a 256).
137
+ Reply with exactly one JSON object, captured verbatim as narrative.json:
138
+ {"schemaVersion":1,"runId":"<audit.runId>","auditDigest":"<sha256>","sections":[{"heading":"summary|priorities|limits","claims":[{"template":"fact|action|limit","evidenceRef":{"artifact":"audit.json","jsonPointer":"/facts/<key>|/actions/<id>|/limits/<key>"}}]}]}
139
+ Only those three headings, templates and pointer roots are accepted. No other keys anywhere (a prose `text` field rejects the whole narrative). At most 30 claims; each pointer must address a record present in audit.json. Select and order recorded references; never invent a measurement, unit, diagnosis or prediction.
140
+ If no valid narrative is possible, reply with exactly {} - the report then falls back to its deterministic summary.
141
+
142
+ - id: report
143
+ description: >-
144
+ Materialize report.json and report.md, validating the optional narrative against the audit
145
+ digest first. Report status decides the terminal state: done, or partial when requested
146
+ evidence was unavailable.
147
+ onEnter:
148
+ - kind: shell
149
+ options:
150
+ command: >-
151
+ kk stage run seo-report "$work_dir"
152
+
153
+ - id: done
154
+ description: >-
155
+ Terminal — every requested stage assessed its eligible evidence and every artifact was
156
+ materialized with a complete status.
157
+ - id: partial
158
+ description: >-
159
+ Terminal — successful artifact delivery with missing requested evidence. Not a failure:
160
+ coverage and limits in the report name what was unavailable.
161
+ - id: failed
162
+ description: Terminal — a required stage failed or the report could not be materialized.
163
+
164
+ transitions:
165
+ - from: preflight
166
+ to: collect
167
+ description: Options validated, workspace bound and (when required) SEO catalogs served.
168
+ guard:
169
+ kind: action-ok
170
+ - from: preflight
171
+ to: failed
172
+ terminalReason: failed-check
173
+ description: Invalid options, unusable workspace, unserved decision catalogs or stage error.
174
+
175
+ - from: collect
176
+ to: check
177
+ description: Collection completed within budget.
178
+ guard:
179
+ kind: action-ok
180
+ - from: collect
181
+ to: failed
182
+ terminalReason: failed-check
183
+ description: Collection failed (network policy, malformed predecessor input or stage error).
184
+
185
+ - from: check
186
+ to: enrich
187
+ description: Every rule/eligible-subject row assessed and checks.json written.
188
+ guard:
189
+ kind: action-ok
190
+ - from: check
191
+ to: failed
192
+ terminalReason: failed-check
193
+ description: Assessment could not be produced from the collected evidence.
194
+
195
+ - from: enrich
196
+ to: judge
197
+ description: Optional evidence resolved to available/unavailable outcomes.
198
+ guard:
199
+ kind: action-ok
200
+ - from: enrich
201
+ to: failed
202
+ terminalReason: failed-check
203
+ description: Invalid supplied visibility input or an enrichment stage error.
204
+
205
+ - from: judge
206
+ to: score
207
+ description: Judgment pass finished (including deadline exhaustion with unassessed remainder).
208
+ guard:
209
+ kind: action-ok
210
+ - from: judge
211
+ to: failed
212
+ terminalReason: failed-check
213
+ description: The decision catalog contract was violated or the stage errored.
214
+
215
+ - from: score
216
+ to: narrative
217
+ description: audit.json materialized with stable IDs and scores.
218
+ guard:
219
+ kind: action-ok
220
+ - from: score
221
+ to: failed
222
+ terminalReason: failed-check
223
+ description: Scoring failed or refused to overwrite an existing audit.
224
+
225
+ # Unconditional: the narrative is optional, so every outcome continues to reporting.
226
+ - from: narrative
227
+ to: report
228
+ description: Narrative attempt settled (valid, absent or rejected) — materialize the report.
229
+ guard:
230
+ kind: always
231
+
232
+ - from: report
233
+ to: done
234
+ description: report.json materialized with status "done".
235
+ guard:
236
+ kind: shell
237
+ options:
238
+ command: >-
239
+ test -f "$work_dir/report.json" && jq -e '.status == "done"' "$work_dir/report.json" >/dev/null
240
+ - from: report
241
+ to: partial
242
+ description: report.json materialized with status "partial" (missing requested evidence).
243
+ guard:
244
+ kind: shell
245
+ options:
246
+ command: >-
247
+ test -f "$work_dir/report.json" && jq -e '.status == "partial"' "$work_dir/report.json" >/dev/null
248
+ - from: report
249
+ to: failed
250
+ terminalReason: failed-check
251
+ description: Absent or malformed report.json — no JSON report can be certified.