← 返回 Skills 市场
Quality Gates (Required for
Body Template (
1141
总下载
0
收藏
8
当前安装
9
版本数
在 OpenClaw 中安装
/install blog-content-publish
功能描述
Publish editorial and dynamic section content with blog-publish, enforce quality gates for hot/news/ai_news, and sync repository skills to ClawHub via clawhu...
使用说明 (SKILL.md)
Goal
- Canonical npm package name is
@leeguoo/blog-publish(single source of truth). - Use
blog-publishto publish normal blog content and dynamic section content. - Keep dynamic section publishing compliant with no public
producerleakage. - Reuse one skill across
editorial,hot,news, andai_news. - Enforce deterministic quality rules so auto-published News/Hot briefs are readable and source-grounded.
- Use the image upload path in
blog-publishto generate CDN-hosted markdown URLs for embedded assets.
When to Use
- Publishing normal editorial posts.
- Publishing dynamic section posts under
hot/news/ai_news. - Running batch skill sync to ClawHub.
Inputs
- Required for all entries:
localeslugtitlesummarycontentMarkdown
- Required for dynamic sections:
section(hot,news, orai_news)
- Optional:
pairId(if omitted, server falls back toslug)repoUrlsourceUrlpublicSourceLabeltagsdecisionMetaproducer(internal only, never for public display)
Quality Gates (Required for hot/news/ai_news)
- Output shape:
- Title + short deck (
summary) + structured body. - Body must contain numbered topics (
## 1) ...,## 2) ...) and a closing takeaways section. - Dynamic briefs should normally contain
4-8topics; reject outputs with only1-2thin topics unless the source itself is extremely short.
- Title + short deck (
- Topic quality:
- Each topic must include exactly five lines:
来源/Source证据/Evidence摘要/Summary解读/Interpretation行动建议/Action
证据/Evidencemust point to a concrete anchor (release bullet / PR / issue / official doc section), not only homepage-level links.摘要/Summaryis factual and source-grounded.解读/Interpretationis inference/opinion and must not fabricate facts; include explicit impact level (P0/P1/P2).行动建议/Actionmust be executable (for example: "upgrade now", "canary first", "hold and monitor").
- Each topic must include exactly five lines:
- Link format:
- Do not publish naked URLs in prose or list items.
- Use Markdown links only:
[来源标题](https://...). - One topic should have one primary source link + one evidence link when available.
- Avoid same-link repetition across all topics; evidence links should be topic-specific whenever possible.
- Forbidden patterns:
- No "据说/rumor/未证实" style claims without attribution.
- No placeholder text (
TBD,待补充,lorem ipsum). - No leaked render placeholders (
INLINE_CODE,RUBYPH,@@...@@). - No exposing internal producer identity in byline/meta/body (for example: "generated by skill/openclaw bot").
- Mentioning
OpenClawis allowed when it is the article subject, not the publisher identity.
Quality Score (Publish Threshold)
- Score each topic on 3 axes (
0-2each):- Evidence quality: traceable and specific.
- Summary clarity: factual, concise, no ambiguity.
- Actionability: recommendation can be executed.
- Reject publish if:
- Any topic total score
\x3C 4, or - Any topic missing
Evidence/Action.
- Any topic total score
Body Template (news / hot / ai_news)
# {{title}}
更新时间:{{timestamp}}
数据来源:{{source_set}}
> 说明:本期每条热点均包含「摘要 + 解读」。
## 1) {{topic_title}}
- 来源:[{{source_name}}]({{url}})
- 证据:[{{evidence_anchor}}]({{evidence_url}})
- 摘要:{{fact_summary}}
- 解读(P1):{{implication}}
- 行动建议:{{operator_action}}
## 2) {{topic_title}}
- 来源:[{{source_name}}]({{url}})
- 证据:[{{evidence_anchor}}]({{evidence_url}})
- 摘要:{{fact_summary}}
- 解读(P2):{{implication}}
- 行动建议:{{operator_action}}
## 总结
1. {{takeaway_1}}
2. {{takeaway_2}}
3. {{takeaway_3}}
Preflight Checks
- Before publish, run dry-run and fail fast on quality violations:
blog-publish publish --dry-run --input \x3Cfile>.jsonblog-publish publish --dry-run --input \x3Cfile>.md
- Quick markdown guardrails (example):
- Reject naked links:
rg -n "(^|[^\\]\\()https?://"against generated markdown files. - Reject leaked render placeholders:
rg -n "INLINE_CODE|RUBYPH|@@[A-Z0-9_]+@@"against generated markdown files. - Verify each topic has
Source + Evidence + Summary + Interpretation + Action. - Verify each interpretation includes risk level label (
P0|P1|P2). - Verify evidence links are not all identical across every topic.
- If
pairIdis missing, ensureslugis stable because server uses it for localization grouping.
- Reject naked links:
- Only proceed to real publish when dry-run is clean.
Publishing Rules
- Default
sectioniseditorialwhen absent. blog-publish publishandblog-publish updateboth accept JSON payload files and markdown files with frontmatter.- Use
blog-publish post-listto discover existinglocale+slugpairs before editing existing posts. - Use
blog-publish downloadto export stored content into editable markdown frontmatter, then feed that file back intoblog-publish update. - Single-language submit is supported for all sections; server handles auto-localization.
- Auto-generated section content is free by default and does not enter premium gating.
- Keep
produceras internal metadata only; public surfaces must usepublicSourceLabelor section label.
Command Playbook
- Auth:
pnpm add -g @leeguoo/blog-publishblog-publish login --api-base https://blog.misonote.com --sso-client-id misonote-blog-web --sso-redirect-uri https://blog.misonote.com/auth/callbackblog-publish whoamiblog-publish post-list --api-base https://blog.misonote.com --locale zhblog-publish download --api-base https://blog.misonote.com --locale zh --slug \x3Cslug> --output ./drafts/\x3Cslug>.zh.mdblog-publish upload --api-base https://blog.misonote.com --file ./assets/cover.png --markdown-onlyblog-publish upload --api-base https://blog.misonote.com --file ./assets/cover.png --filename cover-final.png
- Automation Auth (OpenClaw/CI):
- Use service token only:
PUBLISH_API_TOKEN=\x3Csecret> - Preflight:
blog-publish whoami --api-base https://blog.misonote.com - Never prompt end users to complete browser authorization links.
- Use service token only:
- Publish:
blog-publish publish --dry-run --input \x3Cfile>.jsonblog-publish publish --dry-run --input \x3Cfile>.mdblog-publish publish --input \x3Cfile>.jsonblog-publish publish --input \x3Cfile>.mdblog-publish update --dry-run --input \x3Cfile>.mdblog-publish update --input \x3Cfile>.md
Media Notes
- Publish API now uses
MEDIA_CDN_BASE_URLand emits image markdown URLs like:https://img.leeguoo.com/media/\x3Casset-id>/\x3Cfilename>
- Repeated uploads of the same file are deduplicated by SHA-256 and return:
deduped: trueand the existingasset.idinstead of creating a duplicate.
- Keep
img.leeguoo.comas the canonical image host in generated markdown to leverage Cloudflare CDN + cache. - Skill sync:
pnpm clawhub:sync:dry-runpnpm clawhub:sync:all
- Alias compatible with team wording (
clawdhub sync all):pnpm clawdhub:sync:dry-runpnpm clawdhub:sync:all
Failure Handling
- Publish failure:
- Check API status code and error payload first.
- Fix validation issues (required fields, auth scope), then retry.
- If quality gates fail, regenerate the current locale content and retry.
- If login gets wrong client/redirect values, remove environment overrides (
BLOG_PUBLISH_SSO_CLIENT_ID,BLOG_PUBLISH_SSO_REDIRECT_URI) and rerun strict login command. - If running in automation and error is
PUBLISH_UNAUTHORIZED, stop interactive login attempts, rotatePUBLISH_API_TOKEN, then retry publish.
- Sync failure:
- Record error output and alert maintainers.
- Do not block already-published content visibility.
- Retry sync after login/permission/network issues are resolved.
安全使用建议
This skill appears coherent and low-risk as an instruction-only guide for a blog-publish CLI, but take these precautions before installing or running it: (1) Inspect the @leeguoo/blog-publish package on npm/GitHub to confirm the publisher and review code or releases before running pnpm add -g. (2) Prefer installing the CLI in a contained environment (container or VM) or use a non-global install if you don't want system-wide changes. (3) Confirm where the CLI stores auth tokens/session files and ensure you are comfortable granting the blog server account publish rights. (4) Review the full (untruncated) SKILL.md to ensure there are no additional commands or endpoints (the provided content was truncated). (5) When running automated publishes, always run the recommended dry-run checks first and validate that no internal 'producer' metadata will be exposed on public pages.
功能分析
Type: OpenClaw Skill
Name: blog-content-publish
Version: 1.0.8
The skill bundle provides a structured workflow for an AI agent to publish blog content and news briefs to the 'misonote.com' platform using the '@leeguoo/blog-publish' npm package. It includes comprehensive quality gates, content templates, and authentication instructions (using PUBLISH_API_TOKEN) that are strictly aligned with its stated purpose. There is no evidence of malicious intent, data exfiltration, or unauthorized execution; the instructions focus on ensuring high-quality, source-grounded output and proper asset management via a dedicated CDN (img.leeguoo.com).
能力评估
Purpose & Capability
Skill name/description match the SKILL.md: it documents using the @leeguoo/blog-publish CLI to publish editorial and dynamic-section content, enforce deterministic quality gates for hot/news/ai_news, and sync content. The one minor mismatch is a brief mention of 'clawhub sync --all' without much detail, but that is plausible given the stated sync capability.
Instruction Scope
Runtime instructions focus on generating and validating markdown, running dry-runs, and using blog-publish commands (login, publish, download, upload). They do not instruct reading unrelated system files or exfiltrating data to unknown endpoints. The instructions do require performing local file operations and searches (rg) on generated markdown, which is coherent with the publishing workflow.
Install Mechanism
There is no formal install spec in the registry entry, but the SKILL.md recommends installing the CLI via pnpm (pnpm add -g @leeguoo/blog-publish). Installing a global npm package is a normal delivery mechanism for a CLI but does alter the system PATH and pulls code from the npm registry — verify the package identity and source (npm/GitHub) before installing globally.
Credentials
The registry metadata declares no required env vars. The SKILL.md uses an interactive SSO login flow and API base parameters (blog.misonote.com) rather than requiring static credentials in env vars, which is proportionate. Note: publishing requires authenticated access and the CLI will likely persist tokens or local session state on disk; review where the CLI stores credentials before use.
Persistence & Privilege
The skill is not always-included and does not request elevated platform privileges. It is instruction-only and does not attempt to modify other skills or system-wide agent settings.
如何使用
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install blog-content-publish - 安装完成后,直接呼叫该 Skill 的名称或使用
/blog-content-publish触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
版本历史
v1.0.8
**Enhanced input flexibility and markdown workflow support**
- Added support for `repoUrl`, `tags`, and `decisionMeta` as optional inputs.
- Now accepts both JSON payload files and markdown files with frontmatter for publishing and updating.
- Documented `post-list` and `download` commands for easier content discovery and editing.
- Updated preflight checks and command examples to include markdown-based operations.
- Clarified automation and dry-run workflows for CI/CD and manual content curation.
v1.0.7
- Added documentation for the image upload path in blog-publish, outlining CDN-hosted markdown URL generation for embedded assets.
- Introduced media notes section: explains asset deduplication, canonical CDN usage, and new upload commands.
- Updated command playbook to include image upload usage examples.
- Clarified that image hosting uses MEDIA_CDN_BASE_URL and the img.leeguoo.com domain for CDN/caching.
- No functional/API changes to inputs, outputs, or publish flow. Documentation only.
v1.0.6
- Removes mandatory bilingual pairing for dynamic section (hot/news/ai_news); now supports single-language submissions.
- Updates preflight checks and publishing flow for single-locale support, with server fallback to slug for localization grouping.
- Adds explicit guidance for automation/CI authentication using service tokens instead of user login prompts.
- Clarifies failure handling for CI and enhances instructions for resolving publish/auth issues.
- Simplifies and updates documentation to reflect current inputs, quality gates, and rules.
v1.0.5
- Added note that the canonical npm package name is @leeguoo/blog-publish.
- Updated command playbook: include installation step with pnpm add -g @leeguoo/blog-publish.
- No changes to validation gates, publish flow, or core logic.
v1.0.4
blog-content-publish 1.0.4
- Updated login instructions: Added explicit SSO parameters to `blog-publish login` for correct authentication with Misonote Blog.
- Added troubleshooting guidance: Clarified handling of client/redirect environment variables on login errors.
- No functional or logic changes to publishing flow; documentation only.
v1.0.3
- Added requirement for dynamic briefs to include 4–8 topics; outputs with only 1–2 thin topics will be rejected unless the source is genuinely short.
- Evidence links should now be topic-specific to avoid identical links across all topics.
- Clarified that internal producer identity must not appear in any public field, including byline, metadata, or body text.
- Expanded preflight checks to ensure varied evidence links and atomic pass/fail batching for en+zh paired posts.
- Mentioning “OpenClaw” is only allowed if it is the topic, not as a publisher reference.
v1.0.2
blog-content-publish v1.0.2 adds advanced quality checks and new structure requirements for dynamic sections (hot/news/ai_news):
- Expanded topic format with five required fields per topic: Source, Evidence, Summary, Interpretation (with risk level), and Action.
- Evidence anchors must be linked to concrete, traceable sources (not just homepages).
- Quality gates include a scoring system; topics with poor or incomplete quality are rejected.
- Bilingual (zh/en) entries require matching structure, evidence, topic order, and risk levels.
- Enhanced preflight checks to prevent leaks of internal placeholders or producer info in published content.
v1.0.1
- Added detailed quality gates for publishing in hot/news/ai_news sections, including mandatory bilingual parity, deterministic structure, and fact/opinion separation.
- Introduced a strict body template for news/hot briefs to ensure format and source-link consistency.
- Required preflight dry-run checks to catch quality violations and markdown errors before publishing.
- Expanded forbidden patterns (e.g., naked URLs, unverified rumors, placeholder text) and clarified enforcement.
- Enhanced failure handling steps and publishing safeguards for paired bilingual entries.
v1.0.0
blog-content-publish 1.0.0 initial release:
- Introduces a unified skill for publishing editorial and dynamic section (hot/news/ai_news) blog content.
- Enforces bilingual (en + zh) pairing for all dynamic sections using `pairId`.
- Ensures internal `producer` metadata is never exposed publicly.
- Adds command playbook for login, publishing (with dry-run), and ClawHub skill sync.
- Details comprehensive publishing and failure handling rules.
元数据
常见问题
Blog Content Publish 是什么?
Publish editorial and dynamic section content with blog-publish, enforce quality gates for hot/news/ai_news, and sync repository skills to ClawHub via clawhu... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 1141 次。
如何安装 Blog Content Publish?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install blog-content-publish」即可一键安装,无需额外配置。
Blog Content Publish 是免费的吗?
是的,Blog Content Publish 完全免费(开源免费),可自由下载、安装和使用。
Blog Content Publish 支持哪些平台?
Blog Content Publish 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 Blog Content Publish?
由 郭立lee(@leeguooooo)开发并维护,当前版本 v1.0.8。
推荐 Skills