@gobing-ai/knowledge-kit 0.0.37 → 0.1.0

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 +477 -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 +202 -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
@@ -494,6 +494,7 @@ function ItcModule() {
494
494
  const [results, setResults] = useState(null);
495
495
  const [config, setConfig] = useState(null);
496
496
  const [progress, setProgress] = useState(null);
497
+ const [filterQuery, setFilterQuery] = useState("");
497
498
  const historyBusy = useRef(false);
498
499
  const readerBusy = useRef(false);
499
500
  const selectionRef = useRef(selection);
@@ -564,44 +565,99 @@ function ItcModule() {
564
565
  const artifacts = results === null ? [] : artifactViews(results, readerOrigin);
565
566
  const steps = progressRows(progress);
566
567
  const selectedRow = rows.find((row) => row.id === selection.runId);
568
+ const filteredRows = useMemo(() => {
569
+ const q = filterQuery.trim().toLowerCase();
570
+ if (q === "")
571
+ return rows;
572
+ return rows.filter((r) => r.id.toLowerCase().includes(q) || r.status.toLowerCase().includes(q));
573
+ }, [rows, filterQuery]);
567
574
  return /* @__PURE__ */ jsxs("div", {
568
575
  className: "kk-board kk-board-itc",
569
576
  children: [
570
577
  /* @__PURE__ */ jsxs("header", {
571
578
  className: "kk-board-header",
572
579
  children: [
573
- /* @__PURE__ */ jsx("h1", {
574
- children: "IT Content"
575
- }),
576
- /* @__PURE__ */ jsxs("p", {
580
+ /* @__PURE__ */ jsxs("div", {
581
+ className: "kk-board-header-left",
577
582
  children: [
578
- "Run ",
579
- /* @__PURE__ */ jsx("code", {
580
- children: selection.runId ?? "none selected"
583
+ /* @__PURE__ */ jsxs("div", {
584
+ className: "kk-board-header-title-row",
585
+ children: [
586
+ /* @__PURE__ */ jsx("h1", {
587
+ children: "IT Content"
588
+ }),
589
+ selectedRow ? /* @__PURE__ */ jsx("span", {
590
+ className: `kk-badge ${selectedRow.status === "done" ? "kk-badge-success" : selectedRow.status === "failed" ? "kk-badge-failed" : "kk-badge-running"}`,
591
+ children: selectedRow.status
592
+ }) : null
593
+ ]
581
594
  }),
582
- " · ",
583
- selectedRow?.status ?? "status unknown",
584
- " ·",
585
- " ",
586
- freshnessLabel(readerRefresh)
595
+ /* @__PURE__ */ jsxs("p", {
596
+ children: [
597
+ "Run ",
598
+ /* @__PURE__ */ jsx("code", {
599
+ children: selection.runId ?? "none selected"
600
+ }),
601
+ " · ",
602
+ freshnessLabel(readerRefresh),
603
+ summary === null ? "" : ` · Outcome ${summary.outcome ?? "unknown"} · ${results?.availability ?? "unverified"}`
604
+ ]
605
+ })
587
606
  ]
588
607
  }),
589
- summary === null ? null : /* @__PURE__ */ jsxs("p", {
608
+ /* @__PURE__ */ jsxs("div", {
609
+ className: "kk-board-header-right",
590
610
  children: [
591
- "Outcome ",
592
- summary.outcome ?? "unknown",
593
- " · ",
594
- results?.availability ?? "unverified"
611
+ /* @__PURE__ */ jsxs("div", {
612
+ className: "kk-board-run-filter-group",
613
+ children: [
614
+ /* @__PURE__ */ jsx("input", {
615
+ type: "text",
616
+ className: "kk-board-run-filter-input",
617
+ placeholder: "Filter runs...",
618
+ value: filterQuery,
619
+ onChange: (e) => setFilterQuery(e.target.value),
620
+ "aria-label": "Filter runs"
621
+ }),
622
+ /* @__PURE__ */ jsxs("label", {
623
+ className: "kk-board-run-selector",
624
+ children: [
625
+ "Run",
626
+ /* @__PURE__ */ jsxs("select", {
627
+ value: selection.runId ?? "",
628
+ onChange: (event) => setSelection((state) => ({ ...state, runId: event.target.value || null })),
629
+ children: [
630
+ /* @__PURE__ */ jsx("option", {
631
+ value: "",
632
+ children: rows.length === 0 ? "No runs recorded" : filteredRows.length === 0 ? "No matching runs" : "Select a run"
633
+ }),
634
+ filteredRows.map((row) => /* @__PURE__ */ jsxs("option", {
635
+ value: row.id,
636
+ children: [
637
+ row.id,
638
+ " — ",
639
+ row.status
640
+ ]
641
+ }, row.id))
642
+ ]
643
+ })
644
+ ]
645
+ })
646
+ ]
647
+ }),
648
+ /* @__PURE__ */ jsx("button", {
649
+ type: "button",
650
+ onClick: () => void loadReader(),
651
+ title: "Refresh run data",
652
+ children: "↻ Refresh"
653
+ }),
654
+ selection.runId === null ? null : /* @__PURE__ */ jsx("a", {
655
+ href: selectionPath(selection, window.location.search, MODULE_PATH),
656
+ className: "kk-btn-action",
657
+ title: "Permanent link",
658
+ children: "\uD83D\uDD17 Link"
659
+ })
595
660
  ]
596
- }),
597
- /* @__PURE__ */ jsx("button", {
598
- type: "button",
599
- onClick: () => void loadReader(),
600
- children: "Refresh"
601
- }),
602
- selection.runId === null ? null : /* @__PURE__ */ jsx("a", {
603
- href: selectionPath(selection, window.location.search, MODULE_PATH),
604
- children: "Permanent link to this view"
605
661
  })
606
662
  ]
607
663
  }),
@@ -615,30 +671,6 @@ function ItcModule() {
615
671
  children: TAB_LABELS[candidate]
616
672
  }, candidate))
617
673
  }),
618
- /* @__PURE__ */ jsxs("label", {
619
- className: "kk-board-run-selector",
620
- children: [
621
- "Run",
622
- /* @__PURE__ */ jsxs("select", {
623
- value: selection.runId ?? "",
624
- onChange: (event) => setSelection((state) => ({ ...state, runId: event.target.value || null })),
625
- children: [
626
- /* @__PURE__ */ jsx("option", {
627
- value: "",
628
- children: rows.length === 0 ? "No runs recorded" : "Select a run"
629
- }),
630
- rows.map((row) => /* @__PURE__ */ jsxs("option", {
631
- value: row.id,
632
- children: [
633
- row.id,
634
- " — ",
635
- row.status
636
- ]
637
- }, row.id))
638
- ]
639
- })
640
- ]
641
- }),
642
674
  rows.length === 0 ? /* @__PURE__ */ jsxs("p", {
643
675
  className: "kk-board-empty",
644
676
  children: [
@@ -693,25 +725,115 @@ function SummaryPanel({ facts, results }) {
693
725
  return /* @__PURE__ */ jsx("p", {
694
726
  children: "No captured results for the selected run."
695
727
  });
696
- return /* @__PURE__ */ jsx("dl", {
697
- className: "kk-board-facts",
698
- children: facts.map((fact) => /* @__PURE__ */ jsxs("div", {
699
- children: [
700
- /* @__PURE__ */ jsx("dt", {
701
- children: fact.label
702
- }),
703
- /* @__PURE__ */ jsxs("dd", {
728
+ const summary = itcSummary(results);
729
+ const readyTargets = summary.targets.filter((t) => t.state === "live" || t.state === "draft").length;
730
+ return /* @__PURE__ */ jsxs("div", {
731
+ style: { display: "flex", flexDirection: "column", gap: "0.875rem" },
732
+ children: [
733
+ /* @__PURE__ */ jsxs("div", {
734
+ className: "kk-stat-grid",
735
+ children: [
736
+ /* @__PURE__ */ jsxs("div", {
737
+ className: "kk-stat-card",
738
+ children: [
739
+ /* @__PURE__ */ jsx("span", {
740
+ className: "kk-stat-label",
741
+ children: "Article Outcome"
742
+ }),
743
+ /* @__PURE__ */ jsx("span", {
744
+ className: "kk-stat-value",
745
+ children: summary.outcome ?? "—"
746
+ }),
747
+ /* @__PURE__ */ jsx("span", {
748
+ className: "kk-stat-sub",
749
+ children: "IT Content pipeline"
750
+ })
751
+ ]
752
+ }),
753
+ /* @__PURE__ */ jsxs("div", {
754
+ className: "kk-stat-card",
755
+ children: [
756
+ /* @__PURE__ */ jsx("span", {
757
+ className: "kk-stat-label",
758
+ children: "Publish Targets"
759
+ }),
760
+ /* @__PURE__ */ jsxs("span", {
761
+ className: "kk-stat-value",
762
+ children: [
763
+ readyTargets,
764
+ " / ",
765
+ summary.targets.length
766
+ ]
767
+ }),
768
+ /* @__PURE__ */ jsx("span", {
769
+ className: "kk-stat-sub",
770
+ children: "Platforms prepared"
771
+ })
772
+ ]
773
+ }),
774
+ /* @__PURE__ */ jsxs("div", {
775
+ className: "kk-stat-card",
776
+ children: [
777
+ /* @__PURE__ */ jsx("span", {
778
+ className: "kk-stat-label",
779
+ children: "Judge Verdict"
780
+ }),
781
+ /* @__PURE__ */ jsx("span", {
782
+ className: "kk-stat-value",
783
+ children: summary.judge?.verdict ?? "—"
784
+ }),
785
+ /* @__PURE__ */ jsxs("span", {
786
+ className: "kk-stat-sub",
787
+ children: [
788
+ "Confidence: ",
789
+ summary.judge?.confidence ?? "—"
790
+ ]
791
+ })
792
+ ]
793
+ }),
794
+ /* @__PURE__ */ jsxs("div", {
795
+ className: "kk-stat-card",
796
+ children: [
797
+ /* @__PURE__ */ jsx("span", {
798
+ className: "kk-stat-label",
799
+ children: "Revision Rounds"
800
+ }),
801
+ /* @__PURE__ */ jsx("span", {
802
+ className: "kk-stat-value",
803
+ children: summary.revisions.revise ?? 0
804
+ }),
805
+ /* @__PURE__ */ jsxs("span", {
806
+ className: "kk-stat-sub",
807
+ children: [
808
+ summary.revisions.autoRevise ?? 0,
809
+ " automated revisions"
810
+ ]
811
+ })
812
+ ]
813
+ })
814
+ ]
815
+ }),
816
+ /* @__PURE__ */ jsx("dl", {
817
+ className: "kk-board-facts",
818
+ children: facts.map((fact) => /* @__PURE__ */ jsxs("div", {
704
819
  children: [
705
- fact.value,
706
- " ",
707
- /* @__PURE__ */ jsx("span", {
708
- className: "kk-board-state",
709
- children: fact.availability
820
+ /* @__PURE__ */ jsx("dt", {
821
+ children: fact.label
822
+ }),
823
+ /* @__PURE__ */ jsxs("dd", {
824
+ children: [
825
+ fact.value,
826
+ " ",
827
+ /* @__PURE__ */ jsx("span", {
828
+ className: "kk-board-state",
829
+ children: fact.availability
830
+ })
831
+ ]
710
832
  })
711
833
  ]
712
- })
713
- ]
714
- }, fact.label))
834
+ }, fact.label))
835
+ })
836
+ ]
715
837
  });
716
838
  }
717
839
  function PreviewBlock({ preview }) {