You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js调用Blogger API创建文章成功但内容为空问题求助

解决Node.js调用Blogger API创建空白文章的问题

嘿,我来帮你搞定这个问题!你说调用API后收到成功提示,但文章是空的——这种情况我之前也踩过坑,90%的概率是你传递文章内容的格式不对,没符合Blogger API v3的要求。结合你给出的代码片段(用了官方的googleapis库),我给你拆解下问题和解决方法:

核心问题:请求体结构错误

当使用googleapis的Blogger客户端时,posts.insert接口要求你把文章的标题、内容放在requestBody这个参数里,而不是直接作为顶层参数传递。如果没这么做,API会忽略你传递的标题和内容,自然就生成空白文章了。

修正后的示例代码

假设你已经完成了OAuth2授权流程(拿到了有效的authClient),正确的调用代码应该是这样的:

const { google } = require('googleapis');
const blogger = google.blogger('v3');

// 替换成你自己的授权客户端(比如通过OAuth2获取的)
const authClient = /* 你的授权对象,例如:new google.auth.OAuth2(...) 并完成授权 */;

// 异步创建博客文章
async function createBlogPost() {
  try {
    const response = await blogger.posts.insert({
      blogId: '你的博客ID', // 替换成目标博客的ID
      auth: authClient,
      requestBody: {
        title: '我的测试文章标题',
        content: '<h1>Hello Blogger!</h1><p>这是通过Node.js API创建的文章内容,支持HTML格式哦</p>'
      }
    });
    
    console.log('文章创建成功,链接:', response.data.url);
  } catch (error) {
    console.error('创建失败:', error.message);
  }
}

// 执行创建
createBlogPost();

关键注意事项

  • requestBody是核心:必须把title和content嵌套在requestBody对象里,这是googleapis库的规范,它会自动把这个对象转换成Blogger API需要的JSON请求体。
  • 内容格式:content字段需要是HTML格式,纯文本也可以,但用HTML标签能更好地控制文章排版。
  • 博客ID验证:确保你用的blogId是正确的——可以通过Blogger后台的“设置”→“基本设置”找到,或者调用blogger.blogs.getByUrl接口通过博客网址获取。
  • 授权范围:确认你的OAuth2授权请求包含了https://www.googleapis.com/auth/blogger这个权限范围,没有的话可能会导致写入内容失败(不过你已经能创建空白文章,这个概率较低,但还是建议检查)。

如果之前你是把title和content直接写在posts.insert的参数顶层,比如这样:

// 错误示例!不要这么写
blogger.posts.insert({
  blogId: 'xxx',
  auth: authClient,
  title: '测试标题', // 这里直接放顶层会被忽略
  content: '测试内容'
})

那肯定会生成空白文章,赶紧改成上面的正确格式就行~

内容的提问来源于stack exchange,提问作者Maher Afrasiab

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 09:24:48