Autopilot: Claim SCOT token rewards automatically | 自动领取 SCOT 代币奖励

介绍

其实一直想写这个叫 Autopilot 的小工具,用于自动领取 SCT、PAL 等 SCOT 代币奖励,原因是 Steem Engine 在中国大陆访问比较迟缓,且 rewards 功能总需手动领取也比较麻烦。

上周 @julian2013 也提了这个问题,所以还是想尽快把这个服务完成。于是今天写了一下这个小的服务,希望对大家有用。

目前这个服务的介绍页面在 https://steem-driver.github.io/autopilot/


Autonomous Car

Image Source: Wikipedia - Autonomous Car | CC BY-SA 4.0

基本功能

对于注册了服务的用户,每小时自动领取 (PAL, SCT, ZZAN, etc.) 等 所有SCOT 代币

如何注册服务

为了使用这个服务,您需要:

  1. 通过 steemconnect 的授权功能 https://steemconnect.com/authorize/@self-driving 给 @self-driving 账户授予发帖(Posting)权力。通过 steemconnect 授权完成后,可以通过在 steemd https://steemd.com/@{你的账户}Authorities 区域查看是否已经给 @self-driving 授权成功
  2. 正式服务推出时会提供注册界面,但目前还没有时间做前端页面,所以需要用户从注册的账户代理 2 SP 到 @self-driving 作为注册的验证步骤。可以通过行长的代理工具 https://steemyy.com/sp-delegate-form/ 进行代理,delegatee 中填写 self-driving。Autopilot 程序会通过检查代理的情况来获取用户名单,帮助用户自动领取奖励。等正式的注册页面上线后,用户可以随时取消 SP 代理。

后续计划

  1. 完善这个服务本身的功能和用户体验
  2. 添加新的功能,例如针对 SCOT 社区 设计的自动投票功能,对于 SE token 的市场价格预警等等

之后我们会进一步完善和更新这些开发计划。

如有任何问题,欢迎留言和提供建议。


Introduction

Autopilot is a automated bot that aims at easing your daily life at Steem and Steem Engine. https://steem-driver.github.io/autopilot/


Autonomous Car

Image Source: Wikipedia - Autonomous Car | CC BY-SA 4.0

Current Features

  1. Automatically claim the SCOT tokens (PAL, SCT, ZZAN, etc.) for the users of this service every hour

How to Use

In order to register for autopilot,

  1. Authorize @self-driving account with steemconnect https://steemconnect.com/authorize/@self-driving to grant the posting authority. You can check whether you did this successfully in Authorities section in https://steemd.com/@{your_account}
  2. Delegate at least 2 SP to @self-driving account as a service registration step, so autopilot knows you want to enable the service. The delegation tool such as https://steemyy.com/sp-delegate-form/ can be used for the delegation. We need this delegation step because we don’t have a decent UI for this service yet. We’ll cancel the needs for delegation after this service gets mature, and you can undelegate the SP then.

Future Plan

  • Improve the Autopilot UI and user experience
  • support more “autopilot” features for the users in the future, such as a smarter vote bot for SCOT communities and applications, alert for token price trends / patterns, etc.

For any questions, please feel free to share your ideas and comments here.


This page is synchronized from the post: ‘Autopilot: Claim SCOT token rewards automatically | 自动领取 SCOT 代币奖励’

《Steem指南》steemh.org 回来了!

steemh.org 重生记

《Steem 指南》快讯:域名 steemh.org 停用 中,大鹏 @dapeng 宣布 steemh.org 已经过期,不再指向《Steem指南》。

自此以后,人间不再有 steemh.org。

之后的一段时间中,我们使用 http://steem-guides.github.io/steemh/ 作为《Steem指南》的域名。链接太长,相信很多人记不住,只好默默收藏。

今天半夜睡不着,爬起来想注册一个域名,顺手查了一下 steemh.org 依然可以使用,于是买了2年的服务。略加配置之后,我们目前又可以通过 https://steemh.org 访问新手们亟需的《Steem指南》了!!!

《Steem指南》进展小记

自我们 4月 重新启动《Steem指南》 以来,我们陆续取得了一些进展:

  1. 发布了《Steem指南》修订计划,更新了第2章(HF20规则)、第6章(活动)、第8章(工具)、第9章(dApp)等。您可以在 https://steemh.org 读到最新的版本;
  2. 对《Steem指南》的编辑流程进行了自动化改造,不再依赖本地的RStudio开发环境,使得编辑、测试、预发布等步骤都能够在 GitHub 上自动进行了,并借助 HackMD 优化了在线编辑的体验。
  3. 启动了《Steem Engine手册》,并且已经更新了“入门”、“货币”、“开发”、“杂谈”等章节。我们为 steemh.org 也添加了子域名,这本书也可以用通过 https://steem-engine.steemh.org/ 链接来访问。
  4. 发布了 《Steem指南》激励计划,通过更大力度和丰富的激励机制,让编辑和作者的贡献获得丰厚的回报、更有乐趣。
  5. 获得了 SCT 团队的 1000 SCT 赞助,并可能将 《指南》翻译为韩文版,走向国际化。
  6. 建立了一个实力不俗的 专栏编辑部, 持续在专业领域深耕,提高编辑工作的质量与可持续性。

此外,我们还发布了一些《Steem指南》的子项目,比如:

  1. Steem Links http://steem-guides.github.io/links/zh : 分享 Steem 上的常用链接(或将改为:http://links.steemh.org/zh ) ;
  2. 花名册 https://steem-guides.github.io/roster/: 帮助记忆 CN 区用户的别名或绰号 (或将改为:http://roster.steemh.org);
  3. CN区小门童 @cn-hello:向CN区新人介绍新手村 @team-cn 和 《Steem指南》

然后,今天,我们迎来了 https://steemh.org 的重生!

希望这些工作有助于推动 CN区新手融入社区、让大家更好地在 Steem 成长和玩耍~

历史与未来

我们无法确知 Steem 的未来怎样、我们无法肯定区块链技术带来的一定是进步、我们无法预知人类文明的前途是光明的,但我们确信当下的工作对于周遭的社区中的朋友们是有益的,是可以激发更多人的潜力的,也或将帮助文明抵达更好的未来。

既然如此,“自反而缩,虽千万人,吾往矣”,只需继续前进即可,不问东西。

对于《Steem指南》的未来,除了我们已经达成和正在推动的,我还有一些其他的想法,有的仍不成熟,也需要更强大的执行力,例如:

  1. 继续改进编辑部的工作效率和自动化水平,制造工具、解放双手、激发创意。
  2. 推出一本名为《Steem 财富之道》http://fortune.steemh.org/ 的小册子,谈谈新手村从贫困村逐渐走向小康的过程,以及关于财富之道的谋略心法,以及我一直想写的《货币哲学》等内容;为了不给编辑部增加太多负担,这部册子我可能前期个人先来做一些编辑。
  3. 与更多社区如 ZZAN 等热衷于帮助新人的社区建立联系与合作,同时让《指南》的国际化取得一些进展;
  4. 探索《指南》等出版物的商业化的可能性,给创作者带来更多实利,帮助社区更好的分享经验与智慧。

感谢大家长久以来对此书的关注。欢迎继续向《Steem指南》投稿和提供建议。

本图由 @maiyude 设计


This page is synchronized from the post: ‘《Steem指南》steemh.org 回来了!’

编辑部的故事:《Steem指南》编辑部渐入佳境



欢迎参与《Steem指南》的编写

专栏编辑

在上一篇 《Steem指南》激励计划 中我们提到招募“专栏编辑”以用于更好的支持《Steem指南》《Steem Engine手册》的审稿、编辑和分享。随后很快得到了踊跃的支持,目前已经组成了用 @ericet 村长、@minloulou 迷路、@aaronli 阿柔、 @jianan 嘉楠 和 @robertyan 我 组成的编辑小组,每人负责编辑其中的部分内容。@jianan 前几天也介绍了编辑部的情况

目前每个人负责的专栏如下:

image.png

我对于目前的编辑部的阵容还是很期待的:

  1. 村长:@julian2013 称村长为 manual 小王子,年产说明书上百篇,名不虚传;
  2. 迷路:迷路作为资深投资专家,JJM大户,对币圈的研究手到擒来;
  3. 阿柔:阿柔作为社区元老,魅力无边,说社交、活动、八卦、评论,娓娓道来;
  4. 嘉楠:嘉楠自己建有 dApp 的小站,在各类平台常介绍区块链和应用,此中高手;
  5. 阿盐:编辑开发和数据相关的问题,不太费力;介绍入门和操作相关的,暂时也能支持。

目前周一到周五的板块,只要有投稿更新,我们会尽量保持完成编辑并分享进展。周六和周日的板块的更新,频率会稍低一些,由编辑自由安排。

欢迎关注 @steem-guides 账户,订阅《Steem指南》周报的每日更新~

此外,如果还有热心的社区成员,对于【入门与操作】、【开发与数据】、【杂谈与人物】等板块感兴趣,欢迎联系我们申请加入~

编辑部的故事

编辑部刚刚成立,大家也还在学习和磨合阶段,包括工具的使用(GitHub、HackMD等)、审阅的流程等等。但已经不断有新的产出,我觉得进展还是很不错的;接下来几天还会有更多内容更新。

昨天在编辑部群里,和阿柔八卦大学住宿的一些往事,非常有趣。

闲聊让我想起大陆上世纪90年代一部流行的情景戏剧《编辑部的故事》,该编辑部负责《人间指南》的编辑,似乎和《Steem指南》可以遥相呼应。

详情可见豆瓣的描述:

位于北京某处的《人间指南》编辑部,聚集着六位性格各异知识工作者。

老年知识分子里:主编老陈(吕齐 饰)对待工作兢兢业业、认真负责;牛大姐(童正维 饰)快人快语、疾恶如仇;老刘(张瞳 饰)胆小怕事,体现着传统知识分子懦弱的一面;

中年知识分子余德利(侯耀华 饰)善于接受新事物 ,聪明圆滑,带着点市井江湖的习气。青年一派,李冬宝(葛优 饰)想法前卫,正直善良,总想和机敏美丽的女同事戈玲(吕丽萍 饰)处处对象,无奈戈玲心高气傲,对待貌不惊人的冬宝不冷不热,若即若离。

因工作关系,编辑部的同仁经常接触社会各阶层的人物,光怪陆离,三教九流,改革开放大潮下的人生百态在小小的编辑部内一一呈现……

本片被称为中国第一部电视系列喜剧,由赵宝刚和金炎联合指导,马未都、王朔、冯小刚担任编剧。



image from douban

这部剧以贫嘴闻名,其中的演员与剧组在现在看来都是顶级的大腕。虽然是部喜剧,但折射的却是人间百态。有兴趣的朋友,可以看看《人工智能人》一篇,李玲玉扮演的人工智能人也颇有趣味。

《Steem指南》的编辑部,看尽Steem的百态,也会演绎出自己的故事。

欢迎继续投稿

最近 ZZAN 上线以后,我们也希望借助 ZZAN 的审查力量支持和鼓励《Steem指南》的作者们,欢迎作者们继续积极踊跃投稿,并添加 #zzan 标签获得审查支持。



征稿信息可以查看以下内容。但投稿主题并不受征稿范围限制。

# 书籍 链接
1 《Steem指南》修订 https://github.com/steem-guides/steemh/issues/12
2 《Steem Engne手册》 https://github.com/steem-guides/steem-engine/issues/3

This page is synchronized from the post: ‘编辑部的故事:《Steem指南》编辑部渐入佳境’

《Steem指南》激励计划

本文介绍 《Steem指南》激励计划

为了加速《Steem指南》的修订和《Steem Engine手册》的创立,我们发布了《Steem指南》激励计划,给予《Steem指南》的作者们和编辑们更好的回馈与鼓励,集结CN区和KR区的力量,帮助我们更有效地总结和沉淀 Steem 世界内的知识和攻略,助力社区和新人快速成长。

新闻:SteemCoinpan 将把《Steem指南》翻译成韩文版,并赞助1000 SCT支持《Steem指南》发展

@jack8831 Jack 作为 SteemCoinpan 的创始人,代表 SteemCoinpan 向《Steem指南》账户 @steem-guides 赞助了 1000 SCT,用于支持《Steem指南》发展,并希望将组织人员将《Steem指南》翻译成韩文版,用于更好地在韩语世界推广和使用Steem。

@jack8831 认为《Steem指南》的结构更为系统,可以更好的帮助KR区了解Steem。我们很高兴看到《Steem指南》能走出CN区,也代表了对它有所贡献的作者和编辑们的努力得到了更多人的认可。

需要注意的是,《Steem指南》遵循CC BY 4.0协议,故而对于它的分享、演绎甚至商业目的,在正确的署名的前提下,符合版权的法律要求。

我们赞同 SteemCoinpan 对它的翻译工作,感谢对《Steem指南》工作的大力支持,并乐意配合和支持《Steem指南》的国际化。

同时,借助 SteemCoinpan 赞助的 1000 SCT,我们希望进一步提升《Steem指南》对作者们和编辑们的支持与奖励,帮助知识的分享者们,更好地传播知识,同时获取更丰富、多样的回报。这是我们推动《Steem指南》进一步前进和进化的新的契机。



SCT赞助《Steem指南》,创建更好知识库

激励计划

@steem-guides 目前拥有1000 以上SCT以及近500的NBC,是用于激励团队的经济基础。

为了更好地激励团队参与贡献,@steem-guides 将 stake 所有 SCT,用于点赞作者和编辑,同时提供更丰富的奖励机制。

具体的激励计划如下:

激励方案(编辑)

编辑职责

为了保证《Steem指南》的持续更新与发展,我们将招募每日的【专题编辑】,负责过去一周相关【专题】的(1)周报发布和(2)稿件编辑。

  1. 周报:每周相关专题投稿和精华的总结;
  2. 编辑:审阅本周内投稿,编辑入《Steem指南》和《Steem Engine手册》

每日专题的分布:

时间 内容 《Steem指南》章节 《Steem Engine手册》章节
周一 入门与操作 1, 3, 4, 5 1
周二 原理与规则 2 2
周三 区块链与货币 10, 14 4
周四 社交与活动 6, 7 3, 4
周五 应用与工具 8, 9 3, 5
周六 开发与数据 11, 12, 13 6
周日 杂谈与人物 15, 17 7

编辑奖励

  1. 日常奖励:周报奖励(2 NBC)+ 编辑奖励(2~3 NBC)
  2. 通过 @steem-guides 发布周报的 SBD 和 SCT 奖励的一半
  3. 点赞奖励:@steem-guides 将持续点赞编辑的帖子

如何成为编辑

如果你是以上提到的某一领域的专家,就快来申请吧!!!

  1. 在本文下留言想申请的【专题】,并转发本文;
  2. 我们将根据编辑在这方面的经验和知识,进行审核并决定。

激励方案(作者)

作者贡献

作者投稿通常有3种方式:

  1. 自主创作有趣的内容并投稿;
  2. 根据《Steem指南》、《Steem Engine手册》的征稿要求投稿;
  3. 分享自己过去书写的文章,提交链接。

对于以上3种方式,我们都将进行奖励。

作者奖励

  1. 首次贡献奖励:只要投稿就有奖励
    1. 首次投稿奖励:+ 1 NBC
    2. 首次收稿奖励:+ 2 NBC
  2. 《Steem指南》资深作者的投稿奖励:稿件越多、质量越高,奖励越好
    1. 青铜作者(1 <= 收稿数 <= 3):每次收稿奖励 3 NBC
    2. 白银作者(3 < 收稿数 <= 10):根据质量,每次收稿奖励 4~5 NBC
    3. 黄金作者(收稿数 > 10):根据质量,每次收稿奖励 5~8 NBC
  3. 收稿时大力点赞支持:来自新手村和SCT的支持
    1. @steem-guides 点赞以及 @team-cn / @teamcn-sct 等拥有大量 SCT 账户跟赞
    2. 《Steem指南》优秀稿件容易获得更多转发和点赞,包括来自 SCT 审查的点赞
  4. 特别奖励:奖励高质量的知识分享
    1. 每周编辑部可推荐一篇【编辑推荐】,给予额外的3 NBC 奖励

如何成为作者

  1. 只要在你的帖子里添加 #steem-guides 标签即可;
  2. 为获得 SCT 支持,建议使用 #sct #sct-cn 标签;
  3. 如果标签不够用,可以使用 CN区改进过的客户端,支持10个标签


成为《Steem指南》编辑和作者

CN+KR区:互补与合作

除了推动《Steem指南》本身的持续进化,我们希望可以通过此项目也促进CN区和KR区更紧密的合作。在CN区和KR区都有希望帮助社区更好发展的伙伴们,若能将双方的资源进行更深度的整合和协作,有利于Steem社区的整体发展。

在此,我们也邀请 Steem 的韩语用户,向《Steem指南》和《Steem Engine手册》投稿,我们将邀请双语作者翻译并合并到中文版中,同时支持韩文版的发展。



中国龙 + 太极虎:龙吟虎啸,推动社区发展

《Steem指南》征稿

为了方便投稿作者阅读和查找征稿计划,我们在GitHub页面发布征稿需求。

# 书籍 链接
1 《Steem指南》修订 https://github.com/steem-guides/steemh/issues/12
2 《Steem Engne手册》 https://github.com/steem-guides/steem-engine/issues/3

征稿要求截图如下,点击链接查看更多。

项目1:《Steem指南》修订

image.png

项目2:《Steem Engne手册》

image.png

除此之外,作者也可以建立新的话题,并添加 #steem-guides 标签,主动发表文章投稿;或分享自己从前的文章给《Steem指南》或《Steem Engine手册》,获取《Steem指南》作者奖励。

致谢

最后,感谢《Steem指南》在过去、现在和未来的所有参与者。它将与CN社区同在,与Steem同在,与每一点通过写作此书帮助他人的善意同在。

本图由 @maiyude 设计


This page is synchronized from the post: ‘《Steem指南》激励计划’

CN区小门童 @cn-hello 回忆录:数据与统计

回顾

CN区小门童 @cn-hello 自2019年5月10日开始运行以来,持续帮助CN区的新人提供入门的建议和信息。在过去的一个多月里,它也帮助我们更方便的找到新人,并介绍他们加入新手村和融入社区。

但是,他也有很大的改进空间,比如在给新人提供建议时,可以增加常见问题、以及如何帮助新人更快速入门,比如更密切的跟踪新人的动态、提供建议,等等。

在运行了一个多月以后,@cn-hello 也积累了一定的数据,对于分析新人的融入和成长,也可以提供一些帮助。基于此,我们增加了一个每周发布的数据可视化报告,以便于了解新人的整体趋势。此数据分析报告以整体分析为目的,不展示个人数据、或者制造“新人榜”等。



(Image Source Pixabay)

统计

统计报告可以以此为例,https://busy.org/@cn-hello/cn-2019-06-19

其实此文是昨天测试时不小心发布出来的,原来计划在周日发布。但既然已经发送了,顺便先介绍一下它的目的和内容。

目前的报告较为简单,主要是包括加入的人数的简单统计:(1)本周新人统计;(2)过去3月新人统计;(3)所有数据的按月统计。

以下引用自 6月19日报告 CN区每周新人数据汇总 Newbies Weekly 2019-06-19。这系列的分析报告,今后将在周日晚10点发布。

7日内新手统计

过去7日,本门童接待了 12 位新手;下面是每日接待新手的情况。
weekly.png

1季度内新手统计

过去3个月(实际为6周左右),本门童接待了 110 位新手;下面是每周接待新手的情况。
quarterly.png

按月新手统计

自本门童出道以来,总计接待了 110 位新手;下面是每月接待新手的情况。
all.png

通过以上分析,我们可以看到每周加入CN区的新人(25~35级、使用 #cn 标签、并用中文写作)的数量在10~25之间,小门童一个月大概接引新人70~80人左右。

以上统计的数据源,来自 @cn-hello 每日将自己的回复和关注的新人的数据存入的 MongoDB 数据库。与 Steem 本身的数据比较而言,这个数据集主要是对刚加入的新手的行为的观察和记录。但此数据库暂时并没有设置为公开访问,如有需要,我们可以提供原始数据给研究者。

改进

这个数据分析报告目前比较基础。如果有人希望进一步了解和分析CN区新人的基本情况,它可以持续改进以提供更透明的可视化分析。

作为改进的方向之一,结合Steem用户的数据,此报告可以增加更多的分析内容和数据故事,以回答大家可能感兴趣的问题,例如:

  1. 新手的留存率如何?有多少新手在经过了1个月、3个月以后是依然活跃的?
  2. 新手在经过1~3个月之后,平均的声望和SP增长情况如何?以了解初期的生存困难程度。
  3. 新人初期最常用的标签是哪些?哪些标签的使用最频繁?哪些标签最有效?
  4. @cn-hello 确实帮助到新人了吗?他还可以如何改进?
  5. 等等…

本文的目的,一方面是介绍 @cn-hello 的初步的统计功能,另一方面也是向有兴趣的观察者请教可能还对哪些分析感兴趣,以及哪些洞察(insight)可以帮助我们更好的帮助新人,同时,也使得新人更好地理解初期的困难所在。

如果你对分析哪些问题感兴趣,也可以在本文留言讨论 :)


This page is synchronized from the post: ‘CN区小门童 @cn-hello 回忆录:数据与统计’

a new Hexo plugin [hexo-stop-tag-plugins] -- write pure markdown with Hexo

This post will introduce the development of a Hexo plugin hexo-stop-tag-plugins, which helps hexo users to disable built-in tag plugins / nunjucks syntax, and write with pure markdown syntax.

To be more precise, this post’s contribution include:

  1. a new hexo plugin and NPM package hexo-stop-tag-plugins
  2. one defect fix to hexo project, which is included in hexo 3.9.0 release)

Repository

  1. hexo plugin: https://github.com/think-in-universe/hexo-stop-tag-plugins
  2. submit plugin to hexo site: https://github.com/hexojs/site
  3. defect fixing of hexo: https://github.com/hexojs/hexo

Commit History

You might want to check the below commit history and PR to understand the contribution.

  1. All the commits of https://github.com/think-in-universe/hexo-stop-tag-plugins, and shipped 0.1.7 version to NPM hexo-stop-tag-plugins, with success test results and code coverage.
  2. Add the plugin to hexo site with Pull Request: https://github.com/hexojs/site/pull/966, and now hexo-stop-tag-plugins is available on the hexo plugins page https://hexo.io/plugins/
  3. Fixed the defect about disableNunjucks in the Pull Request: https://github.com/hexojs/hexo/pull/3573, and released in hexo 3.9.0 yesterday (check release note for details)

a new Hexo plugin: hexo-stop-tag-plugins


blog.png
Image Source: https://github.com/hexojs

Why did I create hexo-stop-tag-plugins?

(1) Issue when building blog from steem with steemblog

In my last post, I introduced steemblog, which is a blog service and tool built by @robertyan that synchronize your steem blogs into GitHub pages or other static site hosts, e.g. https://steemblog.github.io/@utopian-io/ ,
https://steemblog.github.io/@robertyan/

During the creation of steemblog, we met issues such as Failed to build when markdown body contains special chars when we’re synchronizing some Steem user’s posts in markdown into steemblog.

For example, the {%s} string in the below code block from the post https://steemd.com/@oflyhigh/mfc-access , will break the conversion from post’s source into html, with no html result returned.

sConnect.Format(TEXT(“ODBC;DRIVER={%s};DSN=’’;DBQ=%s;”), sDriver, sDBInfo);

This issue happens because hexo enables tag plugins by default, which relies on the nunjucks syntax, and there’s no settings to disable that by hexo users.

To make steemblog function well, we need to fix this issue.

(2) A common painful issue in hexo community

What’s more, this is a quite common issue complaint by a lot of hexo users. You can checkout relevant links and examples from my PR and issues, and examples are:

  1. https://github.com/hexojs/hexo/issues/2384
  2. https://github.com/hexojs/hexo/issues/1510
  3. https://github.com/hexojs/hexo/issues/1755
  4. https://github.com/hexojs/hexo/pull/2593

In order to overcome this pain for the hexo users who want to get more control over the tag plugins syntax, we implemented this hexo plugin hexo-stop-tag-plugins for those who suffered from the common issue.

How to Use

To use this plugin, you can check out the description in the NPM package: hexo-stop-tag-plugins

It’s as easy as install it with NPM.

1
$ npm install hexo-stop-tag-plugins --save

That’s it. Then your post will be rendered by hexo as pure markdown, and you can use packages like marked as the renderer.

Technology Stack

  • JavaScript (ES6) / NodeJS

Implementation

Below we’ll introduce how the plugin is implemented.

(1) set disableNunjucks at renderer level

The implementation of the plugin is not complex if you’re familiar with hexo’s source code. In project https://github.com/think-in-universe/hexo-stop-tag-plugins, we implemented the overrider.js to set the disableNunjucks property of renderer to true. Then hexo post renderer should skip the renderering with nunjucks.

We come up with this idea by reading thorough the renderer process of hexo, and look at relevant issues and pull requests in hexo repostiory.

override.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
/*
The module is created to disable the tag plugins (https://hexo.io/docs/tag-plugins)
and nunjucks syntax, which causes troubles in parsing markdown often
*/

'use strict';

const extensions = ['md', 'markdown', 'mkd', 'mkdn', 'mdwn', 'mdtxt', 'mdtext'];

module.exports = function(hexo) {

let stop_tag_plugins = true;

if (hexo.config.stop_tag_plugins === undefined || hexo.config.stop_tag_plugins === true) {
stop_tag_plugins = true;
} else {
stop_tag_plugins = false;
}
for (let ext of extensions) {
let renderer = hexo.render.renderer.get(ext);
if (renderer) {
renderer.disableNunjucks = stop_tag_plugins;
hexo.extend.renderer.register(ext, 'html', renderer);
}
}

};

index.js

1
2
3
4
5
6
7
/* global hexo */

'use strict';

var overrider = require('./lib/overrider');

overrider(hexo);

We also added sufficient test cases to test this plugin, which you can checkout in test folder.

However, what makes us frustration is that the code blocks in markdown are not renderered correctly after we set the disableNunjucks property, and only placeholder of the code block are displayed.

This should be an issue of hexo, and that leads us to fix the defect in hexo with PR #3573

(2) fix the problem with the disableNunjucks property in hexo project

To understand the issue, you can read more details in the PR: https://github.com/hexojs/hexo/pull/3573

The property disableNunjucks was introduced in PR #2593 by one contributor. However, it’s not added correctly and leads to problems.

To fix that, we modified lib/hexo/post.js in hexojs/hexo repository, which returns content after the placeholders (like a code block) are replaced.

lib/hexo/post.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
    // Render with markdown or other renderer
return ctx.render.render({
text: data.content,
path: source,
engine: data.engine,
toString: true,
onRenderEnd(content) {
// Replace cache data with real contents
data.content = cacheObj.loadContent(content);

// Return content after replace the placeholders
if (disableNunjucks) return data.content;

// Render with Nunjucks
return tag.render(data.content, data);
}
}, options);


The PR #2593 that introduced the
disableNunjucks property didn’t add tests. So, to assure the quality, added unit tests for the disableNunjucks property:

test/scripts/hexo/post.js

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

// test for PR [#3573](https://github.com/hexojs/hexo/pull/3573)
it('render() - (disableNunjucks === true)', () => {
const renderer = hexo.render.renderer.get('markdown');
renderer.disableNunjucks = true;

return post.render(null, {
content: fixture.content,
engine: 'markdown'
}).then(data => {
data.content.trim().should.eql(fixture.expected_disable_nunjucks);
}).then(data => {
renderer.disableNunjucks = false;
});
});

// test for PR [#3573](https://github.com/hexojs/hexo/pull/3573)
it('render() - (disableNunjucks === false)', () => {
const renderer = hexo.render.renderer.get('markdown');
renderer.disableNunjucks = false;

return post.render(null, {
content: fixture.content,
engine: 'markdown'
}).then(data => {
data.content.trim().should.eql(fixture.expected);
}).then(data => {
renderer.disableNunjucks = false;
});
});

test/fixtures/post_render.js

1
2
3
4
5
6
7
8
9
10
11
12
exports.expected_disable_nunjucks = [
'<h1 id="Title"><a href="#Title" class="headerlink" title="Title"></a>Title</h1>',
util.highlight(code, {lang: 'python'}),
'\n\n<p>some content</p>\n',
'<h2 id="Another-title"><a href="#Another-title" class="headerlink" title="Another title"></a>Another title</h2>',
'<p>{% blockquote %}<br>',
'quote content<br>',
'{% endblockquote %}</p>\n',
'<p>{% quote Hello World %}<br>',
'quote content<br>',
'{% endquote %}</p>'
].join('');


After this defect is fixed in hexo and released in hexo 3.9.0 version, we could say the hexo-stop-tags-plugin should work well for hexo users.

(3) publish the plugin to hexo/plugins and NPM

To make the plugin available to its users. We published it to NPM and hexo/plugins page.

The submission to hexo/plugins page is merged in PR: https://github.com/hexojs/site/pull/966

source/_data/plugins.yml

1
2
3
4
5
6
7
- name: hexo-stop-tag-plugins
description: Disable tag plugins for all markdown posts
link: https://github.com/think-in-universe/hexo-stop-tag-plugins
tags:
- markdown
- tag_plugins
- renderer

It takes a few days to have the plugin be reviewed and merged.

Retrospective

  1. The hexo repository reviewers are not that active, and may need close follow-up from contributor to make PR to be reviewed and merged.
  2. May need more thoughts and actions on how to push this plugin to the users who met the same issues.

Roadmap

  1. The disableNunjucks property is set at renderer level and applied to all the posts. User may need another setting to make it only applied to some of the posts, which is more flexible.
  2. hexo-stop-tag-plugins is quite useful if we want to bring more hexo blog writers onto Steem. It makes it easier for bi-directional integration between hexo and steem: hexo users can use the plugins to write posts that can be published onto Steem; Steem users can use the plugins to render and organize their steem posts with hexo.
  3. As a successor of this plugin, we may create another plugin that could make it easier for hexo users to share their posts onto Steem. And as a result, may introduce more developers and writers to Steem community.
  4. My long-term vision is to make better integration between Steem and GitHub features (such as GitHub pages), to make developers enjoy their work and life in blockchain era.

image.png
picture made by me which combines GitHub and Steem logos

How to Contribute

For anyone who wants to contribute to this project, feel free to fork https://github.com/think-in-universe/hexo-stop-tag-plugins, and submit Pull Requests.

Or please directly contact me (@robertyan) on Steem if you have any questions to discuss.

Github Account


To reviewers: this post is set to “development” category because it contains a new project (a hexo plugin), and defect fixing to “hexo” project contributed by myself. If you have any concern, feel free to reach out to me directly.


This page is synchronized from the post: ‘a new Hexo plugin [hexo-stop-tag-plugins] – write pure markdown with Hexo’

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×