这里提到的静态博客,以hexo为例。我摸索出typecho转hexo的方法,包括文章转换和评论转换。在此记录一下转换的全过程。
这里有几个问题需要事先说明:
第一,我操作这次转换,不代表typecho不好,也不代表hexo好,二者各有优缺点。我折腾typecho转hexo,是根据自己已经掌握的hexo操作方法进行的。不代表我会放弃typecho而转移到hexo。
第二,转到静态博客(如hexo、jekyll等)之后,再将转换后的数据再转回动态博客(如typecho、wordpress等),有一定难度。如果您有转到静态博客的想法,请谨慎操作。
第三,评论存储需要使用第三方存储服务,此处使用的是Disqus。我目前还不清楚是否还有其他第三方评论系统和Disqus一样可以完美导入评论、存储所有的评论数据(包含昵称、评论者的网址等),且可以在评论列表访问留言者的网站。由于境内特殊的网络环境,使用Disqus需要一定的技术手段。目前有高手开发出了Disqus PHP Api,可以接入静态博客,实现墙内使用Disqus基础功能。
文章导出
文章导出。使用TypExport插件导出xml文件。
导入hexo
按照hexo官方文档的指导,导入到hexo。
首先,安装hexo-migrator-wordpress
插件。
$ npm install hexo-migrator-wordpress --save
插件安装完成后,执行下列命令来迁移所有文章。source
可以是xml文件路径或网址。
$ hexo migrate wordpress <source>
source
的位置便是xml放置的位置。可使用相对路径。
操作后,会在hexo文件夹中source/_posts
下看到自己的文章。每个md文件的文件名,与typecho中设置的固定连接中{slug}
的名字相同。
注:我试过一个php工具转出,但转出后文档的文件名和内文全是乱码。所以还是用上述方法比较稳妥。
保持链接相同
保持和原来的链接相同。之所以要保持相同,是为了能在disqus中匹配相应的Thread,保证文章和评论对应。如果不想和原来保持一致,需要在disqus中修改discussions内的链接地址,具体可在disqus网站查看操作方法,此处不予赘述。
操作过程:
设置hexo的_config.yml
和主题目录下的_config.yml
文件。
如果typecho的固定链接设置的是archives/{slug}.html
,那么在hexo和主题目录下的_config.yml
中,需要将归档页面文件夹名称改掉,以防和链接冲突。否则不用改。
如果typecho的固定链接设置的是archives/{slug}.html
,那么,需要修改hexo的_config.yml
中固定链接格式:
permalink: archives/:title.html
如果typecho的固定链接设置的是其他类似格式,便模仿修改即可。注意:如果typecho的固定链接设置的是cid
,那转换过来的固定链接就和原来的不同了,需要在导出xml之前将固定链接修改掉。
评论导入Disqus
评论导入。这个地方有个坑:如果直接用该xml导入disqus,那么在disqus的disscussions中显示的链接是?p=cid
,无法和原链接匹配,这会引起hexo博客寻找不到disqus内的thread,导致无法显示对应的评论。如果要回避这个问题,需要借助一个工具:Wordpress。
可以在本地环境(如phpstudy等)或云主机(包括虚拟主机、vps、云服务器、独立服务器等)中安装Wordpress,无论是Mysql还是sqlite安装均可,这里不涉及到数据库。
安装好后,在WordPress设置和typecho中相同的固定链接。设置好后,在WordPress后台运行导入工具,将typecho导出的xml文件导入。如果xml文件超出WordPress限制的大小(一般为2M),需要进行切割。我使用的是一个Windows下的绿色免安装无残留软件WXRsplit.exe,可将xml切割为符合大小的多个文件,并分别导入。
导入成功后,可在WordPress看到导入的文章和评论,链接和typecho博客相同。随后,在WordPress导出xml文件。将此xml文件导入disqus,在导入页面按提示操作即可。此处需要有初中英语基础。
成功导入disqus后,可在disqus中看到所有文章的评论。在disqus中,我发现,导入的评论内,留言者的名字如果超过3个汉字,那么第4个汉字及后面的文字便会变成一个占用2个字符的乱码。如果以后在disqus留言,超过3个汉字就不会这样了。出现这种情况到底是什么原因我不清楚。
同时会发现,在disqus中,留言者的头像不会显示为邮箱对应的Gravatar,这是由于欧盟的《通用数据保护条例》导致disqus没有存储用户的全部邮箱数据导致,详情请阅读这篇文章。Api作者暂时修复了这个问题,如果在disqus使用同样的邮箱再次评论,可以显示出Gravatar。
hexo连接Disqus
使用hexo连接自己的disqus账号。可以直接连接,也可以使用Disqus PHP Api。如果需要在hexo中使用Disqus PHP Api,可以参考官方文档和这篇文章。
按hexo官方文档的指导进行部署。部署结束后,访问自己的hexo博客便可以看到导入的文章和评论了。只要文章的链接和disqus中记录的文章链接相匹配,那么该文章对应的评论就会显示在评论区。
如果已经转移到静态博客,再将转换后的数据转回动态博客,有一定的操作难度。以WordPress为例,可以运行RSS导入工具,通过RSS方式导入文章。利用WordPress上面的disqus插件,连接到disqus,将评论数据从disqus内导入WordPress。如果想转入typecho,再通过WordPress To Typecho插件转换即可。注意:RSS导入,可能导入不全,因为一般只显示最近的10篇文章。
2019年4月11日更新:
告诉大家一个不需要hexo命令行的方法。
既然免不了用wordpress作为中转,那就直接在wordpress安装一个插件——jekyll export。经过它,可以导出md文档,从文件命名到格式,到附件等,全部打包好。尽管名字叫Jekyll,但是静态博客的格式是通用的(注意,Bitcron不是静态博客,Bitcron是不完全兼容静态博客的格式的),所以可导入任何静态博客,不需要再用文中提到的命令行了。配合《静态博客搭建方法》提到的在线操作方法,可以完美转入静态博客。
26 条回复
现在我很少折腾了。VPS倒是买了还几个。
VPS用来做啥了?
太能折腾了。
哈哈,折腾完挺累的,也不知道有何意义。因为我没打算永久转到hexo。
我的想法和楼上几位差不多,太折腾了。个人还是喜欢使用数据库的方式存储数据,万一有地方需要修改就特别的方便。
实际上我也是。正如文章中所说,这次折腾不代表我会放弃typecho而转移到hexo。更何况hexo从0开始的管理本身就很折腾。
膜拜大神!
你太抬举我了,我可不是大神,哈哈哈
wordpress是最好的博客程序。
typecho too.
我还是默默的用这个动态的博客程序吧= =、静态的速度快,但是感觉不行。。。
动态的也没感觉慢多少,typecho首页比静态的hexo首页慢100~200ms左右。不太敏感的人都感觉不出来。哪个喜欢用哪个就行了。
看过很多大佬的hexo静态博客也非常漂亮。突然也有冲动将博客整体移到Github。
看到文中很多次讲到WordPress,是需要把Typecho转移到WP,然后再到hexo吗?还是怎么个思路?看的我有点乱乱的……
我给你捋一下思路:
1.如果将博文转到hexo,用文中所述的插件导出xml。xml是wordpress格式,hexo官方文档中叙述的是“从wordpress转入”。所以,将博文从typecho转入hexo,不需要转入wordpress,只需要将导出的xml转入hexo即可。
2.如果将评论转入disqus,需要将typecho转入wordpress,再从wordpress导出xml文件,将此xml导入disqus。然后将disqus与Hexo进行接入,如果不需要使用api,则访客需要使用技术手段才能给你留言。如果使用api,则接入的过程有点复杂,详细见这篇文章:https://linhai1990.com/archives/84.html和api的官方文档:https://github.com/fooleap/disqus-php-api/blob/master/readme.md
Hexo 作为低(经济)成本的入门之选其实是不错的,只是文章数量多了之后效率也堪忧,另外可玩性比动态博客还是稍微差一些。
Disqus 的问题是现在 GDPR 生效之后没办法拿到评论者邮箱了…不然转起来是很方便的。当然境内访问困难也是个大问题。
我转出的90多篇文章,hexo从头编译,大概是19秒。可玩性确实啊,最近都没咋弄,代码也看不懂。disqus邮箱这个,人家注重隐私保护这个也是没办法。如果是正常用,肯定没问题。那个php api的作者改进了一下,暂时保存一个月邮箱,保证头像正常。
PHP API 那个我也短暂地使用过,在境内非得用 Disqus 的话确实是最好的解决方案了。但是有几点还是有些闹心。缓存的邮箱账号没办法迁移,邮件通知也不好搞,还有就是 PHP API 本身需要一个国外服务器做跳板,这个的门槛就偏高了。
这个反正真的相当折腾。我把api放到我的虚拟主机了。可是api毕竟不是官方原始程序,总会遇到一些问题。反正不是一般人能折腾得起的。我看到有些接入disqus的直接用官方程序了,最近因为节日原因不太好访问,我都没法给这些博客留言。
本来以为我就够能折腾的了,看了你这篇文章,感觉你比我还能折腾
哈哈哈,折腾折腾更健康
最开始用sablog,后来用点点、tumblr,在后来word press,在后来typecho,然后年纪大了不想折腾了,搞了个hexo,用cloudflare挂在GitHub pages上了,虽然以前的数据都在,但不想折腾,懒得恢复了。
你也是够折腾啊。
尽管重新开始了,但希望你坚持下去。
是的 hexo 不用维护数据库了,用git本地也有存档,编辑发布也 方便
是的,git真是个好东西。目前来说,我不会操作git,然后我就在线编译。在线传一个.md就行了,也非常方便。以后学一下git。
终于找到一个很变态的操作(修改程序,输出内容直接为markdown,然后制作专用模板,再批量下载所以文章…),typecho转hexo,晚上就跑路
修改程序,制作专用模板,再批量下载文章,你是咋做的?