Install
openclaw skills install @haiyangchenbj/editorial-topic-portfolio-skillThis skill should be used when evaluating a portfolio of technology, AI, data, cloud, or enterprise-software content topics. It normalizes Notion or Markdown...
openclaw skills install @haiyangchenbj/editorial-topic-portfolio-skillname: editorial-topic-portfolio slug: editorial-topic-portfolio-skill displayName: Editorial Topic Portfolio description: > This skill should be used when evaluating a portfolio of technology, AI, data, cloud, or enterprise-software content topics. It normalizes Notion or Markdown/JSON/CSV inputs, applies factual, timeliness, originality, argument-capacity, positioning, and privacy gates, scores eligible topics, selects one primary and two backups, produces merge/watch/covered/abandon decisions, and prepares a confirmed Notion writeback preview. By default, it never writes to Notion without two explicit confirmations; a workspace with a documented standing instruction to sync every routine review may use that instruction as the authorization, but must still generate a change preview and perform readback verification. 中文触发词: 选题评估, 选题组合, 竞争密度, 原创空间, Notion选题库, 内容排期 description_zh: 选题组合评估与写作排期 description_en: Editorial topic portfolio not_for:
Evaluate a batch of technology / AI / data / cloud / enterprise-software topics and output the current cycle's 1 primary-write + 2 backups, plus merge / watch / short-note / covered-track / abandon decisions. Uses Routing + Prompt Chaining: pass hard gates first, then score and solve the portfolio.
industry-deep-dive-pipeline.Read references/evaluation-gates.md, references/scoring-model.md, and references/portfolio-rules.md for fields and rules.
python scripts/normalize_topics.py --input <input.md|input.json|input.csv> --output <run-dir>/01-normalized-topics.json
02-gate-precheck.json.03-evidence-review.md.For each topic, output G0—G5:
Output 04-gate-results.json. BLOCK cannot be offset by score.
For topics passing hard gates or recoverable HOLD, fill 0—5 raw scores:
Deduct for fact uncertainty, competition heating, angle too broad, recent repetition, and public risk, to get net score. Run:
python scripts/calculate_scores.py --input <run-dir>/04-gate-results.json --output <run-dir>/05-scores.json
WRITE_NOW and 2 BACKUP.MERGE, WATCH, SHORT_NOTE, COVERED_TRACK, or ABANDON.06-portfolio-decision.md.Pause, confirm:
No change-set generation before confirmation.
Generate 07-change-preview.md and 07-change-set.json, listing per item:
Run:
python scripts/validate_change_set.py --input <run-dir>/07-change-set.json --output <run-dir>/07-change-set-validation.json --enforce
Explicitly list target database, page count, fields, and actions. Batch writeback only after the second confirmation.
Notion writeback must follow:
NOTION_TOKEN, NOTION_TOPIC_DATABASE_ID, and mapping come from secure config.Default read-only adapter:
NODE_PATH=<managed-node-workspace> node scripts/notion_topic_adapter.js read > <run-dir>/08-notion-read.json
Write capability must be driven by a separate, reviewed change set; real-time writeback must not be an unconditional auto-action.
Output 09-readback-verification.md.
Convert the primary to an industry-deep-dive-pipeline case brief, preserving facts, competition, core hypothesis, suggested angle, risks, counter-arguments, and series relationship. Do not write the body directly.
COVERED_TRACK, unless there is a clear new fact or new judgment.| Scenario | Action |
|---|---|
| Input field missing | Mark NEEDS_INPUT, stop scoring that item |
| Fact or policy unverifiable | BLOCK_FACT or HOLD_EVIDENCE, no primary/backup |
| Timeliness expired, no increment | BLOCK_STALE or COVERED_TRACK |
| Insufficient originality space | MERGE or BLOCK_SATURATED |
| Single event insufficient carrying capacity | SHORT_NOTE or BLOCK_THIN |
| Positioning/privacy conflict | BLOCK_BOUNDARY or PRIVATE_ONLY |
| Portfolio not exactly 1+2 | Block change-set, re-solve or await manual override |
| Notion token/mapping missing | Stop, do not read, do not write |
| Notion writeback partial failure | Pause batch, record success/fail/skip, do not blindly retry all |
| Readback mismatch | Retry once and cross-validate; if still mismatch, keep incomplete |
| First tool failure | Retry same action 1—2 times, then switch tool stack |
<run-dir>/
├── 01-normalized-topics.json
├── 02-gate-precheck.json
├── 03-evidence-review.md
├── 04-gate-results.json
├── 05-scores.json
├── 06-portfolio-decision.md
├── 07-change-preview.md
├── 07-change-set.json
├── 07-change-set-validation.json
├── 08-writeback-result.json
└── 09-readback-verification.md
Each round's report must include: primary, two backups, other dispositions, hard-gate blockers, net scores, writeback status, and next-step handoff.
references/evaluation-gates.md: G0—G5 hard gates.references/scoring-model.md: 100-point model and deductions.references/portfolio-rules.md: portfolio, lifecycle, and idempotency rules.references/notion-adapter-interface.md: private Notion adapter boundary.references/replay-evaluation.md: two sets of historical replays.