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...
数据来源:ClawHub。 在 ClawSkills 查看
选择你使用的 Agent
方法一:命令行安装(推荐)
推荐(无需提前安装 clawhub)
npx clawhub@latest --dir ~/.claude/skills install blog-content-publish或使用 clawhub CLI(需提前安装)
clawhub --dir ~/.claude/skills install blog-content-publish⚠️ 需要 Node.js 18+,没有 Node?请使用下方方法二直接下载 ZIP。 安装 Node.js →
方法二:手动下载安装(无需 Node)
下载 ZIP,解压后将文件夹放到以下路径,重启 Agent 即可:
安装路径
~/.claude/skills/blog-content-publish/💡解压后将文件夹放到上方路径,重启 Agent 即可生效
--- name: blog-content-publish description: Publish editorial and dynamic section content with blog-publish, enforce quality gates for hot/news/ai_news, and sync repository skills to ClawHub via clawhub sync --all. ---
@leeguoo/blog-publish (single source of truth).blog-publish to publish normal blog content and dynamic section content.producer leakage.editorial, hot, news, and ai_news.blog-publish to generate CDN-hosted markdown URLs for embedded assets.hot/news/ai_news. - locale - slug - title - summary - contentMarkdown
- section (hot, news, or ai_news)
- pairId (if omitted, server falls back to slug) - repoUrl - sourceUrl - publicSourceLabel - tags - decisionMeta - producer (internal only, never for public display)
hot/news/ai_news) - Title + short deck (summary) + structured body. - Body must contain numbered topics (## 1) ..., ## 2) ...) and a closing takeaways section. - Dynamic briefs should normally contain 4-8 topics; reject outputs with only 1-2 thin topics unless the source itself is extremely short.
- Each topic must include exactly five lines: - 来源/Source - 证据/Evidence - 摘要/Summary - 解读/Interpretation - 行动建议/Action - 证据/Evidence must point to a concrete anchor (release bullet / PR / issue / official doc section), not only homepage-level links. - 摘要/Summary is factual and source-grounded. - 解读/Interpretation is inference/opinion and must not fabricate facts; include explicit impact level (P0/P1/P2). - 行动建议/Action must be executable (for example: "upgrade now", "canary first", "hold and monitor").
- Do not publish naked URLs in prose or list items. - Use Markdown links only: 来源标题. - 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.
- 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 OpenClaw is allowed when it is the article subject, not the publisher identity.
0-2 each):- Evidence quality: traceable and specific. - Summary clarity: factual, concise, no ambiguity. - Actionability: recommendation can be executed.
- Any topic total score < 4, or - Any topic missing Evidence/Action.
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}}
- blog-publish publish --dry-run --input - blog-publish publish --dry-run --input
- 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 pairId is missing, ensure slug is stable because server uses it for localization grouping.
section is editorial when absent.blog-publish publish and blog-publish update both accept JSON payload files and markdown files with frontmatter.blog-publish post-list to discover existing locale + slug pairs before editing existing posts.blog-publish download to export stored content into editable markdown frontmatter, then feed that file back into blog-publish update.producer as internal metadata only; public surfaces must use publicSourceLabel or section label. - pnpm add -g @leeguoo/blog-publish - blog-publish login --api-base https://blog.misonote.com --sso-client-id misonote-blog-web --sso-redirect-uri https://blog.misonote.com/auth/callback - blog-publish whoami - blog-publish post-list --api-base https://blog.misonote.com --locale zh - blog-publish download --api-base https://blog.misonote.com --locale zh --slug - blog-publish upload --api-base https://blog.misonote.com --file ./assets/cover.png --markdown-only - blog-publish upload --api-base https://blog.misonote.com --file ./assets/cover.png --filename cover-final.png
- Use service token only: PUBLISH_API_TOKEN= - Preflight: blog-publish whoami --api-base https://blog.misonote.com - Never prompt end users to complete browser authorization links.
- blog-publish publish --dry-run --input - blog-publish publish --dry-run --input - blog-publish publish --input - blog-publish publish --input - blog-publish update --dry-run --input - blog-publish update --input
MEDIA_CDN_BASE_URL and emits image markdown URLs like: - https://img.leeguoo.com/media/
- deduped: true and the existing asset.id instead of creating a duplicate.
img.leeguoo.com as the canonical image host in generated markdown to leverage Cloudflare CDN + cache. - pnpm clawhub:sync:dry-run - pnpm clawhub:sync:all
clawdhub sync all): - pnpm clawdhub:sync:dry-run - pnpm clawdhub:sync:all
- 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, rotate PUBLISH_API_TOKEN, then retry publish.
- Record error output and alert maintainers. - Do not block already-published content visibility. - Retry sync after login/permission/network issues are resolved.
安装 Blog Content Publish 后,可以对 AI 说这些话来触发它
Help me get started with Blog Content Publish
Explains what Blog Content Publish does, walks through the setup, and runs a quick demo based on your current project
Use Blog Content Publish to publish editorial and dynamic section content with blog-publish, en...
Invokes Blog Content Publish with the right parameters and returns the result directly in the conversation
What can I do with Blog Content Publish in my documents & notes workflow?
Lists the top use cases for Blog Content Publish, with example commands for each scenario
将技能文件夹放到 ~/.claude/skills/blog-content-publish/ 目录(个人级,所有项目可用),或 .claude/skills/blog-content-publish/(项目级)。重启 AI 客户端后,用 /blog-content-publish 主动调用,或让 AI 根据上下文自动发现并使用。
Blog Content Publish 支持 Claude、Cursor、OpenClaw,可与这些 AI 平台无缝集成,扩展其能力。
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...
Blog Content Publish 属于「Documents & Notes」分类,该分类的技能帮助 AI 智能体在此领域执行专业任务。
Automate my documents & notes tasks using Blog Content Publish
Identifies repetitive steps in your workflow and sets up Blog Content Publish to handle them automatically