The blog service has recently served around 20 users mainly in Steem Chinese community who have provided very positive feedback to the steemblog project.
Features
Convert all the posts of one or multiple steem accounts with Hexo into static pages, and publish them onto GitHub page or Netlify;
Provide smooth user experience to browse, classify and organize one’s blogs with the blog themes;
Make the posts updated daily with Travis CI or cron jobs to keep the blogs synchronized from Steem.
1. Example
By using steemblog, we could easily mirror @utopian-io’s posts into https://steemblog.github.io/@utopian-io/, where you could look at @utopian-io’s posts in the history, and search through all the posts, with better experience.
Comparing to Steemit, this looks to be a “real blog” and is cleaner and more responsive.
To deploy the project for yourself, you could fork https://github.com/steemblog/blog to your account, and setup the blog with travis-ci, by updating the environment viariables in travis project with your accounts.
GIT_USERNAME: your GitHub account
GIT_EMAIL: your GitHub account
GITHUB_PAT: your GitHub token
BLOG_REPO: the repo to deploy your GitHub pages
STEEM_ACCOUNTS: the steem accounts to synchronize the posts, separate by comma. e.g. utopian-io,robertyan
The interaction with Steem blockchain is built with beem project.
The blog generation is built with hexo blog framework.
The blog service by default used an customized hexo theme: steemblog/hexo-theme-icarus. The theme has good user experience, but the build speed is terrible. We did intensive enhancements to hexo-theme-icarus to increase the build speed by 20~100 times.
def_write_content(self, post): folder = self._get_content_folder() c = SteemComment(comment=post)
# retrieve necessary data from steem title = post.title.replace("'", "''") permlink = post["permlink"] body = c.get_compatible_markdown() position = self._get_position(body) date_str = post.json()["created"] date = date_str.replace('T', ' ') tags = "\n".join(["- {}".format(tag) for tag in c.get_tags()]) category = c.get_tags()[0] thumbnail = c.get_pic_url() or'' url = c.get_url()
However, the builds for some accounts with 1000+ posts and 200+ tags are extremely to build (take > 1 hour). In order to serve more accounts, we have to increase the build speed.
We used below strategies to accelerate the build process by 20~100x.
themes/icarus/layout/component/pjax_widget_ref.ejs Use reference to page instead build the page itself, which is critical to make incremental build possible.
We cannot show all the details of the implementation here, but how to build the blog from steem data, and how to make the build faster are the key efforts here to build a robust and efficient blog service.
Roadmap
While the steemblog service is easy to use for some users, it requires more enhancements.
Switch languages and themes easily;
Improve search performance; add search functionality by adding Google / Baidu search;
Support write back to Steem blockchain when neeeded.
Connect with steem-engine / SCOT, and help more Hexo users to post on steem
Promote the project to help more people who wants a better blog user experience.