"状态 开发实现方面已经完成,正式发布! B3log 构思 [链接] 目前已经基本实现, [链接] 和[链接]现在已经可以稳定地进行帖子、回帖内容交互: 使用 Solo 独立博客发布博文、评论会自动发 ...."

内容 API 开放,欢迎各位独立博客主进行连接

状态

  • 开发实现方面已经完成,正式发布!

B3log 构思

B3log 构思 目前已经基本实现, Solo黑客派现在已经可以稳定地进行帖子、回帖内容交互:

  • 使用 Solo 独立博客发布博文、评论会自动发布到黑客派社区
  • 在黑客派社区上发布帖子、回帖也会自动发布到 Solo 独立博客

这样可以为博主带来更多的关注和互动,同时社区通过内容聚合也能够吸引更多用户。

经过一段时间的实践验证,我们觉得内容交互的 API 可以不仅限于 Solo ,而应该开放给所有独立博客,让大家都加入进来共建这个生态!

内容 API

核心内容 API 一共有 4 个。前 3 个 APIs 由社区服务器实现,提供给博客进行调用;第 4 个 API 由博客实现,提供给社区进行调用:

  1. 博客发布博文 -> 社区发布帖子:在博客发布博文的同时调用社区的发帖,将博文内容同步到社区
  2. 博客更新博文 -> 社区更新帖子:在博客更新博文的同时调用社区的更新,将博文内容同步到社区
  3. 博客发布评论 -> 社区发布回帖:在博客发布评论的同时调用社区的回帖,将评论内容同步到社区
  4. 社区发布回帖 -> 博客发布评论:在社区回帖的同时调用博客的发布评论,将回帖内容同步到博客

通过这 4 个 APIs 就可以实现博客和社区的相互连接,理论上博客还需要实现两个帖子同步博客的 APIs,不过一般不常用,所以可以不必实现。

社区账号

要连接到社区前需要先到社区注册账号,其中最关键的是:

  • 注册时候使用的邮箱必须和博客用户的邮箱一致(调用 API 指定的实参),因为这个邮箱是用来鉴别连接身份的

另外,还需要进行一下设置,请参考 黑客派客户端同步设置

API 描述

上面我们介绍了基本原理,下面就是各个 API 的详细描述了:

发布/更新文章

发布文章和更新文章使用相同的 API,如果 article.id 已经存在则视为更新操作。

调用地址

参数

在 POST body 中指定 JSON 格式的实参:

{
    "article": {
        "id": "1165070220000", 
        "title": "这是一篇测试文章", 
        "permalink": "/test-post", 
        "tags": "tag1, tag2", 
        "content": "Test"
    }, 
    "client": {
        "title": "我的个人博客", 
        "host": "http://xxx.com", 
        "email": "test@hacpai.com", 
        "key": "xxxx"
    }
}
  • article.id:客户端的文章 id,如果该 id 文章在社区已经存在,则视为更新文章
  • article.title:文章标题
  • article.permalink:客户端固定链接
  • article.tags:文章标签,英文输入状态的逗号分隔
  • article.content:文章内容,HTML 或 Markdown 格式
  • client.title:客户端标题,比如博客的名字
  • client.host:客户端 URL
  • client.email:账号邮箱,需要和社区注册的账号邮箱一致
  • client.key:账号同步 Key,需要和社区中配置的一致

发布评论

调用地址

参数

在 POST body 中指定 JSON 格式的实参:

{
    "comment": {
        "id": "1165070220000", 
        "articleId": "1164070220000", 
        "content": "Test comment", 
        "authorName": "Daniel", 
        "authorEmail": "dl88250@gmail.com"
    }, 
    "client": {
        "title": "我的个人博客", 
        "host": "http://xxx.com", 
        "email": "test@hacpai.com", 
        "key": "xxxx"
    }
}
  • comment.id:客户端的评论 id
  • comment.articleId:该条评论所对应的客户端文章 id
  • comment.content:评论内容,HTML 或 Markdown 格式
  • comment.authorName:评论人名称,可选
  • comment.authorEmail:评论人邮箱,可选
  • client.title:客户端标题,比如博客的名字
  • client.host:客户端 URL
  • client.email:账号邮箱,需要和社区注册的账号邮箱一致
  • client.key:账号同步 Key,需要和社区中配置的一致

接收评论

接收评论的接口由客户端自己实现,这里给出的是社区去调用时候的规范。

调用地址

  • 调用用户在社区设置的 "客户端收评接口" 地址
  • 使用 POST 方法

参数

在 POST body 中指定 JSON 格式的实参:

{
    "comment": {
        "articleId": "", 
        "content": "",
        "contentHTML": "",
        "ua": "",
        "ip": "",
        "authorName": "", 
        "authorEmail": "", 
        "authorURL": "",
        "isArticleAuthor": true,
        "time": 1457784330398
    }, 
    "client": {
        "key": ""
    }
}
  • comment.articleId:该条评论所对应的客户端文章 id
  • comment.content:评论内容,Markdown 格式
  • comment.contentHTML:评论内容, HTML 格式
  • comment.ua:User-Agent,可能为空字符串 ""
  • comment.ip:IP,可能为空字符串 ""
  • comment.authorName:评论人名称
  • comment.authorEmail:评论人邮箱
  • comment.authorURL:评论人 URL
  • comment.isArticleAuthor:评论人是否是文章作者
  • comment.time:评论时间,格式为时间毫秒
  • client.key:账号同步 Key,需要和社区中配置的一致

注意:从社区同步评论到博客时,收评接口实现评论保存后不能在走同步回社区的逻辑。

基础实现

我们会提供一些主流编程语言的 API 基础实现,方便博客主调整代码。

TBD


完整插件

欢迎大家来实现自己所用博客的插件~


OK,要做什么我应该已经介绍清楚了,大家怎么看呢?

0   6   0   3   0      
93 回帖  
  • noah • 10 个月前

    想法不错

    1   0   0  
  • zempty • 10 个月前

    其实我想问,在初始化solo帐号的时候用的是一个邮箱,后期通过修改数据库换成另外的邮箱,是否设置同步就没效了?

    1   0   0  
  • 88250 • 10 个月前

    @zempty 千万不要手动修改数据库....不然很多未知问题的

    0   0   0  
  • R • 10 个月前

    搞一个CSDN这样的首页——全球最大IT和画家社区! smile

    1   0   0  
  • 88250 • 10 个月前

    @R 要搞就搞全宇宙 smirk

    0   0   0  
  • R • 10 个月前

    @88250 宇宙人不用网络交流的,用脑电波直接发信号的

    0   0   0  
  • zempty • 10 个月前

    @88250 遇到了,改了之后,之前的文章不能删除,同步功能失效。

    0   0   0  
  • 88250 • 10 个月前

    @zempty 社区这边的邮箱倒是可以改,管理员可改,你需要么?

    1   0   0  
  • zempty • 10 个月前

    @88250 可以吗?帮我改为新的,不然我永远都无法从solo同步文章到社区了。怎样发私信啊?

    0   0   0  
  • 88250 • 10 个月前

    @zempty 到我的主页上面,然后头像下面

    0   0   0  
  • hfu946 • 10 个月前

    神奇的功能~

    1   0   0  
  • mainlove • 10 个月前

    好 调一下

    0   0   0  
  • zonghua • 10 个月前

    写个Wordpress的插件?

    0   0   0  
  • 88250 • 10 个月前

    @zonghua 我不会,你来帮忙么

    0   0   0  
  • 88250 • 10 个月前

    @mainlove Y,帮忙一下啊

    0   0   0  
  • zonghua • 10 个月前

    @88250 若干小时后应该可以完成插件

    0   0   0  
  • 88250 • 10 个月前

    @zonghua 还有个收评论的接口我整理一下

    0   0   0  
  • DT27 • 10 个月前

    @88250 社区同步到博客的数据格式列一下~

    0   0   0  
  • 88250 • 10 个月前

    @DT27 @zonghua

    好的,稍后我整理一下博客收文章、更新文章、收评论的接口规范

    0   0   0  
  • ivan • 10 个月前

    0   0   0  
  • ivan • 10 个月前

    0   0   0  
  • 88250 • 10 个月前

    @ivan 嗯?

    0   0   0  
  • ivan • 10 个月前

    @88250 试了下录音功能

    1   0   0  
  • zonghua • 10 个月前
    0   0   0  
  • zonghua • 10 个月前

    @zonghua 都是null

    `function post_article($post_id, $post, $update){
    test($update);
    }

    function update_article($post_ID, $post_after, $post_before){
    test($post_before);
    }
    `

    0   0   0  
  • 88250 • 10 个月前

    @zonghua 啥情况?

    0   0   0  
  • DT27 • 10 个月前

    @88250 就等博客接收数据的接口了。。。

    0   0   0  
  • 88250 • 10 个月前

    @DT27 好的,我今天内整理出来,发布的接口调试通了?

    0   0   0  
  • DT27 • 10 个月前

    @88250 写好了,还没测,调试方面不太会,只会上线实测。。。

    0   0   0  
  • 88250 • 10 个月前

    @DT27 你是担心发布测试数据到社区还是?

    0   0   0