@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
@@ -456,6 +456,7 @@ function DailyVoiceModule() {
456
456
  const [readerRefresh, setReaderRefresh] = useState(() => initialRefresh(ACTIVE_POLL_MS));
457
457
  const [results, setResults] = useState(null);
458
458
  const [config, setConfig] = useState(null);
459
+ const [filterQuery, setFilterQuery] = useState("");
459
460
  const historyBusy = useRef(false);
460
461
  const readerBusy = useRef(false);
461
462
  const selectionRef = useRef(selection);
@@ -522,44 +523,99 @@ function DailyVoiceModule() {
522
523
  const facts = results === null ? [] : dailySummaryFacts(results, now);
523
524
  const artifacts = results === null ? [] : artifactViews(results, readerOrigin);
524
525
  const selectedRow = rows.find((row) => row.id === selection.runId);
526
+ const filteredRows = useMemo(() => {
527
+ const q = filterQuery.trim().toLowerCase();
528
+ if (q === "")
529
+ return rows;
530
+ return rows.filter((r) => r.id.toLowerCase().includes(q) || r.status.toLowerCase().includes(q));
531
+ }, [rows, filterQuery]);
525
532
  return /* @__PURE__ */ jsxs("div", {
526
533
  className: "kk-board kk-board-daily-voice",
527
534
  children: [
528
535
  /* @__PURE__ */ jsxs("header", {
529
536
  className: "kk-board-header",
530
537
  children: [
531
- /* @__PURE__ */ jsx("h1", {
532
- children: "Daily AI Voice"
533
- }),
534
- /* @__PURE__ */ jsxs("p", {
538
+ /* @__PURE__ */ jsxs("div", {
539
+ className: "kk-board-header-left",
535
540
  children: [
536
- "Run ",
537
- /* @__PURE__ */ jsx("code", {
538
- children: selection.runId ?? "none selected"
541
+ /* @__PURE__ */ jsxs("div", {
542
+ className: "kk-board-header-title-row",
543
+ children: [
544
+ /* @__PURE__ */ jsx("h1", {
545
+ children: "Daily AI Voice"
546
+ }),
547
+ selectedRow ? /* @__PURE__ */ jsx("span", {
548
+ className: `kk-badge ${selectedRow.status === "done" ? "kk-badge-success" : selectedRow.status === "failed" ? "kk-badge-failed" : "kk-badge-running"}`,
549
+ children: selectedRow.status
550
+ }) : null
551
+ ]
539
552
  }),
540
- " · ",
541
- selectedRow?.status ?? "status unknown",
542
- " ·",
543
- " ",
544
- freshnessLabel(readerRefresh)
553
+ /* @__PURE__ */ jsxs("p", {
554
+ children: [
555
+ "Run ",
556
+ /* @__PURE__ */ jsx("code", {
557
+ children: selection.runId ?? "none selected"
558
+ }),
559
+ " · ",
560
+ freshnessLabel(readerRefresh),
561
+ summary === null ? "" : ` · Outcome ${summary.outcome ?? "unknown"} · ${results?.availability ?? "unverified"}`
562
+ ]
563
+ })
545
564
  ]
546
565
  }),
547
- summary === null ? null : /* @__PURE__ */ jsxs("p", {
566
+ /* @__PURE__ */ jsxs("div", {
567
+ className: "kk-board-header-right",
548
568
  children: [
549
- "Outcome ",
550
- summary.outcome ?? "unknown",
551
- " · ",
552
- results?.availability ?? "unverified"
569
+ /* @__PURE__ */ jsxs("div", {
570
+ className: "kk-board-run-filter-group",
571
+ children: [
572
+ /* @__PURE__ */ jsx("input", {
573
+ type: "text",
574
+ className: "kk-board-run-filter-input",
575
+ placeholder: "Filter runs...",
576
+ value: filterQuery,
577
+ onChange: (e) => setFilterQuery(e.target.value),
578
+ "aria-label": "Filter runs"
579
+ }),
580
+ /* @__PURE__ */ jsxs("label", {
581
+ className: "kk-board-run-selector",
582
+ children: [
583
+ "Run",
584
+ /* @__PURE__ */ jsxs("select", {
585
+ value: selection.runId ?? "",
586
+ onChange: (event) => setSelection((state) => ({ ...state, runId: event.target.value || null })),
587
+ children: [
588
+ /* @__PURE__ */ jsx("option", {
589
+ value: "",
590
+ children: rows.length === 0 ? "No runs recorded" : filteredRows.length === 0 ? "No matching runs" : "Select a run"
591
+ }),
592
+ filteredRows.map((row) => /* @__PURE__ */ jsxs("option", {
593
+ value: row.id,
594
+ children: [
595
+ row.id,
596
+ " — ",
597
+ row.status
598
+ ]
599
+ }, row.id))
600
+ ]
601
+ })
602
+ ]
603
+ })
604
+ ]
605
+ }),
606
+ /* @__PURE__ */ jsx("button", {
607
+ type: "button",
608
+ onClick: () => void loadReader(),
609
+ title: "Refresh run data",
610
+ children: "↻ Refresh"
611
+ }),
612
+ selection.runId === null ? null : /* @__PURE__ */ jsx("a", {
613
+ href: selectionPath(selection, window.location.search, MODULE_PATH),
614
+ className: "kk-btn-action",
615
+ title: "Permanent link",
616
+ children: "\uD83D\uDD17 Link"
617
+ })
553
618
  ]
554
- }),
555
- /* @__PURE__ */ jsx("button", {
556
- type: "button",
557
- onClick: () => void loadReader(),
558
- children: "Refresh"
559
- }),
560
- selection.runId === null ? null : /* @__PURE__ */ jsx("a", {
561
- href: selectionPath(selection, window.location.search, MODULE_PATH),
562
- children: "Permanent link to this view"
563
619
  })
564
620
  ]
565
621
  }),
@@ -573,30 +629,6 @@ function DailyVoiceModule() {
573
629
  children: TAB_LABELS[candidate]
574
630
  }, candidate))
575
631
  }),
576
- /* @__PURE__ */ jsxs("label", {
577
- className: "kk-board-run-selector",
578
- children: [
579
- "Run",
580
- /* @__PURE__ */ jsxs("select", {
581
- value: selection.runId ?? "",
582
- onChange: (event) => setSelection((state) => ({ ...state, runId: event.target.value || null })),
583
- children: [
584
- /* @__PURE__ */ jsx("option", {
585
- value: "",
586
- children: rows.length === 0 ? "No runs recorded" : "Select a run"
587
- }),
588
- rows.map((row) => /* @__PURE__ */ jsxs("option", {
589
- value: row.id,
590
- children: [
591
- row.id,
592
- " — ",
593
- row.status
594
- ]
595
- }, row.id))
596
- ]
597
- })
598
- ]
599
- }),
600
632
  rows.length === 0 ? /* @__PURE__ */ jsxs("p", {
601
633
  className: "kk-board-empty",
602
634
  children: [
@@ -651,25 +683,112 @@ function SummaryPanel({ facts, results }) {
651
683
  return /* @__PURE__ */ jsx("p", {
652
684
  children: "No captured results for the selected run."
653
685
  });
654
- return /* @__PURE__ */ jsx("dl", {
655
- className: "kk-board-facts",
656
- children: facts.map((fact) => /* @__PURE__ */ jsxs("div", {
657
- children: [
658
- /* @__PURE__ */ jsx("dt", {
659
- children: fact.label
660
- }),
661
- /* @__PURE__ */ jsxs("dd", {
686
+ const summary = dailySummary(results);
687
+ const liveChannels = summary.channels.filter((c) => c.state === "live").length;
688
+ return /* @__PURE__ */ jsxs("div", {
689
+ style: { display: "flex", flexDirection: "column", gap: "0.875rem" },
690
+ children: [
691
+ /* @__PURE__ */ jsxs("div", {
692
+ className: "kk-stat-grid",
693
+ children: [
694
+ /* @__PURE__ */ jsxs("div", {
695
+ className: "kk-stat-card",
696
+ children: [
697
+ /* @__PURE__ */ jsx("span", {
698
+ className: "kk-stat-label",
699
+ children: "Episode Outcome"
700
+ }),
701
+ /* @__PURE__ */ jsx("span", {
702
+ className: "kk-stat-value",
703
+ children: summary.outcome ?? "—"
704
+ }),
705
+ /* @__PURE__ */ jsx("span", {
706
+ className: "kk-stat-sub",
707
+ children: summary.articleTitle ? summary.articleTitle.slice(0, 32) : "Daily podcast"
708
+ })
709
+ ]
710
+ }),
711
+ /* @__PURE__ */ jsxs("div", {
712
+ className: "kk-stat-card",
713
+ children: [
714
+ /* @__PURE__ */ jsx("span", {
715
+ className: "kk-stat-label",
716
+ children: "Distribution"
717
+ }),
718
+ /* @__PURE__ */ jsxs("span", {
719
+ className: "kk-stat-value",
720
+ children: [
721
+ liveChannels,
722
+ " / ",
723
+ summary.channels.length
724
+ ]
725
+ }),
726
+ /* @__PURE__ */ jsx("span", {
727
+ className: "kk-stat-sub",
728
+ children: "Channels published live"
729
+ })
730
+ ]
731
+ }),
732
+ /* @__PURE__ */ jsxs("div", {
733
+ className: "kk-stat-card",
734
+ children: [
735
+ /* @__PURE__ */ jsx("span", {
736
+ className: "kk-stat-label",
737
+ children: "Quality Score"
738
+ }),
739
+ /* @__PURE__ */ jsx("span", {
740
+ className: "kk-stat-value",
741
+ children: summary.quality?.overallScore ?? "—"
742
+ }),
743
+ /* @__PURE__ */ jsx("span", {
744
+ className: "kk-stat-sub",
745
+ children: summary.quality?.passed ? "Passed QC standard" : "Under evaluation"
746
+ })
747
+ ]
748
+ }),
749
+ /* @__PURE__ */ jsxs("div", {
750
+ className: "kk-stat-card",
751
+ children: [
752
+ /* @__PURE__ */ jsx("span", {
753
+ className: "kk-stat-label",
754
+ children: "Safety Verdict"
755
+ }),
756
+ /* @__PURE__ */ jsx("span", {
757
+ className: "kk-stat-value",
758
+ children: summary.safety?.verdict ?? "—"
759
+ }),
760
+ /* @__PURE__ */ jsxs("span", {
761
+ className: "kk-stat-sub",
762
+ children: [
763
+ "Confidence: ",
764
+ summary.safety?.confidence ?? "—"
765
+ ]
766
+ })
767
+ ]
768
+ })
769
+ ]
770
+ }),
771
+ /* @__PURE__ */ jsx("dl", {
772
+ className: "kk-board-facts",
773
+ children: facts.map((fact) => /* @__PURE__ */ jsxs("div", {
662
774
  children: [
663
- fact.value,
664
- " ",
665
- /* @__PURE__ */ jsx("span", {
666
- className: "kk-board-state",
667
- children: fact.availability
775
+ /* @__PURE__ */ jsx("dt", {
776
+ children: fact.label
777
+ }),
778
+ /* @__PURE__ */ jsxs("dd", {
779
+ children: [
780
+ fact.value,
781
+ " ",
782
+ /* @__PURE__ */ jsx("span", {
783
+ className: "kk-board-state",
784
+ children: fact.availability
785
+ })
786
+ ]
668
787
  })
669
788
  ]
670
- })
671
- ]
672
- }, fact.label))
789
+ }, fact.label))
790
+ })
791
+ ]
673
792
  });
674
793
  }
675
794
  function ChannelList({ channels }) {