Blog Forge

支持多平台发布的AI博客内容生成工具,可自动生成SEO优化文章并直接发布。

已扫描
适合谁
自媒体博主、企业内容运营人员
不适合谁
无网络环境使用者、无需自动化发布需求的个人笔记用户
国内可用性
需网络配置。可能需要网络配置或第三方服务可访问。
安装难度
新手友好(★☆☆)。基于终端操作、依赖、API Key 和本地环境要求的初步判断。

安装与下载

openclaw skills install @theshadowrose/blog-forge

Skill 说明

命令、参数、文件名以原文为准

BlogForge — 全流程博客文章生成器

BlogForge 是一个用于 AI 辅助代理的技能,能够从简单的主题、可选关键词和期望语气,生成完整且经过 SEO 优化的博客文章。它通过结构化提示、可读性分析、人性化后处理,并支持直接发布到主流博客平台。

功能特性

  • 多模型支持:支持 Anthropic Claude、OpenAI GPT 以及本地 Ollama 模型
  • SEO 优化:关键词密度控制、元描述生成、结构化标题
  • 可读性分析:Flesch-Kincaid 评分、句子/单词/音节数统计
  • 人性化处理流程:注入缩略语、调整句式节奏、重构段落结构
  • 直接发布功能:通过一次方法调用,将草稿发布至 Medium、WordPress 或 Ghost
  • 零外部依赖:仅使用 Node.js 内置的 httpshttpcrypto 模块

方法说明

generatePost(options)

生成一篇完整的博客文章。

参数:

参数类型必填默认值说明
topicstring博客文章的主题
keywordsstring[][]要优化的目标 SEO 关键词
tonestring'conversational'写作风格(如 'professional''casual''technical'
wordCountnumber1500目标字数
modelstring'anthropic/claude-sonnet-4-20250514'带有提供商标识的模型名称
humanizebooleantrue是否应用人性化后处理

返回值: { content, title, meta, readability, wordCount }

示例:

const forge = new BlogForge();

const post = await forge.generatePost({
  topic: "2025 年远程工作的未来",
  keywords: ["远程工作", "混合办公", "生产力"],
  tone: "对话式",
  wordCount: 1800,
  model: "anthropic/claude-sonnet-4-20250514"
});

console.log(post.title);
// "为什么远程工作不会消失——以及接下来会发生什么"

console.log(post.readability);
// { fleschKincaid: 8.2, avgSentenceLength: 16.4, avgSyllablesPerWord: 1.4 }

console.log(post.meta);
// "探索 2025 年远程工作的未来……"

使用 OpenAI 模型:

const post = await forge.generatePost({
  topic: "容器园艺入门指南",
  keywords: ["容器园艺", "小空间", "城市花园"],
  tone: "友好",
  model: "openai/gpt-4o"
});

使用本地 Ollama 模型:

const post = await forge.generatePost({
  topic: "理解 Rust 的所有权模型",
  tone: "技术性",
  model: "ollama/llama3"
});

analyzeReadability(text)

分析任意文本的可读性。

参数:

参数类型必填说明
textstring待分析的文本内容

返回值: { fleschKincaid, avgSentenceLength, avgSyllablesPerWord }

示例:

const forge = new BlogForge();

const stats = forge.analyzeReadability(
  "短句有效。它们有力。而长句则往往在多个从句和想法中徘徊,最终才抵达结论。"
);

console.log(stats);
// { fleschKincaid: 7.1, avgSentenceLength: 12.3, avgSyllablesPerWord: 1.5 }

publishPost(options)

将生成的(或任意)博客文章发布到 Medium、WordPress 或 Ghost。

参数:

参数类型必填说明
contentstringMarkdown 格式的博客内容
titlestring文章标题
platformstring'medium''wordpress''ghost'
credentialsobject平台专用凭证(见下文)

各平台凭证格式:

  • Medium{ token: "your-integration-token" }
  • WordPress{ url: "https://yoursite.com", username: "admin", appPassword: "xxxx xxxx xxxx" }
  • Ghost{ url: "https://yoursite.com", adminApiKey: "id:secret" }

返回值: { success, url, id, platform }

示例 — Medium:

const forge = new BlogForge();

const post = await forge.generatePost({
  topic: "打造 SaaS 的 10 个经验教训",
  tone: "个人化"
});

const result = await forge.publishPost({
  content: post.content,
  title: post.title,
  platform: "medium",
  credentials: {
    token: process.env.MEDIUM_INTEGRATION_TOKEN
  }
});

console.log(result);
// { success: true, url: "https://medium.com/@you/10-lessons-abc123", id: "abc123", platform: "medium" }

示例 — WordPress:

const result = await forge.publishPost({
  content: post.content,
  title: post.title,
  platform: "wordpress",
  credentials: {
    url: process.env.WP_URL,
    username: process.env.WP_USERNAME,
    appPassword: process.env.WP_APP_PASSWORD
  }
});

示例 — Ghost:

const result = await forge.publishPost({
  content: post.content,
  title: post.title,
  platform: "ghost",
  credentials: {
    url: process.env.GHOST_URL,
    adminApiKey: process.env.GHOST_ADMIN_API_KEY
  }
});

完整端到端示例

markdown

Blog Forge

快速开始

const BlogForge = require('./blogforge');
const forge = new BlogForge();

async function createAndPublish() {
  // 生成文章
  const post = await forge.generatePost({
    topic: "为什么每个开发者都应该在2025年学习SQL",
    keywords: ["SQL", "数据库", "开发者技能", "后端"],
    tone: "对话式",
    wordCount: 2000,
    model: "anthropic/claude-sonnet-4-20250514",
    humanize: true
  });

  console.log(`已生成: "${post.title}" (${post.wordCount} 字数)`);
  console.log(`可读性: Flesch-Kincaid 阶段 ${post.readability.fleschKincaid}`);

  // 发布到 Medium 作为草稿
  const result = await forge.publishPost({
    content: post.content,
    title: post.title,
    platform: "medium",
    credentials: { token: process.env.MEDIUM_INTEGRATION_TOKEN }
  });

  console.log(`已发布草稿: ${result.url}`);
}

createAndPublish().catch(console.error);

人性化处理流程

当启用 humanize: true(默认值)时,BlogForge 会对 AI 生成的内容进行以下后处理,使其更接近自然语言表达:

  1. 缩写注入:以约 60% 的概率将正式表达转换为口语化形式(如 "is not" → "isn't","do not" → "don't" 等),增加语言多样性
  2. 句子节奏变化:检测段落中所有句子长度相似的情况,随机拆分其中一句以创造节奏差异
  3. 段落节奏变化:识别连续 3 个以上字符数相近的段落,选择一个在句末处进行拆分
  4. 过渡短语添加:偶尔在段落前添加自然过渡语句(如 "说到底:"、"简单来说:"、"实际上:" 等)

支持的模型

提供商前缀示例是否需要 API 密钥
Anthropicanthropic/anthropic/claude-sonnet-4-20250514是(ANTHROPIC_API_KEY
OpenAIopenai/openai/gpt-4o是(OPENAI_API_KEY
Ollamaollama/ollama/llama3否(本地运行)

更新日志

v1.0.3

  • 移除虚构统计数据的指令;生成的数据点现标记为示例用途

v1.0.2

  • 重命名内部 LLM 指令变量,避免被安全扫描工具误报

v1.0.1

  • 新增 _varyParagraphRhythm,支持全文段落节奏分析
  • 改进 _humanizeParagraph 缩写处理,保留大小写格式
  • 添加 WordPress 的 Markdown 转 HTML 功能,提升草稿清晰度
  • Ghost 发布改用 Lexical 格式(兼容 v5 API)
  • HTTP 请求辅助工具增加 120 秒超时,应对慢响应的 LLM
  • 修复以无声 'e' 和辅音+le 结尾单词的音节数计算错误

v1.0.0

  • 初版发布
  • 多提供方 LLM 支持(Anthropic、OpenAI、Ollama)
  • SEO 优化提示工程
  • Flesch-Kincaid 可读性分析
  • 人性化后处理流程
  • 支持 Medium、WordPress、Ghost 平台发布

免责声明

  • API 成本:使用 Anthropic 或 OpenAI 模型会产生按 token 计费的 API 费用。BlogForge 会发送约 500–1000 token 的指令块,加上生成输出约 1500–3000 token。请监控使用量。
  • 草稿发布:所有文章默认以草稿形式发布。请在公开前审阅内容。
  • AI 内容:生成内容需人工审核准确性。文中统计与数据点仅为示例,请独立核实任何声明。
  • 平台条款:请确保自动化发布行为符合各平台的服务条款。
  • 无担保:本技能按 MIT 许可证提供,作者不对生成内容或 API 费用承担任何责任。
T
@theshadowrose

已收录 2 个 Skill

相关推荐