markdown編寫微信公眾號(hào)

前言

早前進(jìn)入it這個(gè)行業(yè)就有寫博客的習(xí)慣帮孔,之前用的一款百度出的【百度空間】的產(chǎn)品祭务,當(dāng)時(shí)一些文章還有不少的瀏覽量中狂,可惜后來【百度空間】這款產(chǎn)品下線了屁柏,就這樣自己的一點(diǎn)小積累付諸東流了啦膜。后來接觸到了git和github。心想不能再被別人牽著鼻子走了淌喻,寫博客本地必須得留個(gè)備份僧家,正好git滿足這一點(diǎn),如是就在github上間了一個(gè)個(gè)人倉(cāng)庫(kù)裸删。把每次寫的博客commit上去八拱。但倉(cāng)庫(kù)的權(quán)限設(shè)置成了private,畢竟有些文章只是自己純粹的個(gè)人筆記涯塔,不太好公開了肌稻,隨著各大創(chuàng)作平臺(tái)的興起,掘金匕荸、簡(jiǎn)書爹谭、知乎、CSDN榛搔、還有微信公眾號(hào)诺凡,其中微信公眾號(hào)我覺得是一個(gè)非常不錯(cuò)的方式,因?yàn)橹灰脩絷P(guān)注药薯,博主就可以給其推送文章绑洛。在知識(shí)純粹分享的基礎(chǔ)上加了一點(diǎn)強(qiáng)行安利的意思。那么怎么把我github上面的文章導(dǎo)入到微信公眾號(hào)里面呢童本,下面就以我的這篇博文為例介紹下我是怎么操作的真屯。

阻礙的地方和解決思路

  • 微信公眾號(hào)不支持markdown格式,這個(gè)markdown-nice這款產(chǎn)品可以解決穷娱,免費(fèi)的親绑蔫!
  • github在線圖片鏈接直接粘貼到微信公眾號(hào)里是不能上傳的會(huì)抱這個(gè)錯(cuò):原因估計(jì)是因?yàn)楸粔α?/li>
image-20210206113635544.png
  • 這點(diǎn)可以用jsdelivr進(jìn)行CDN加速,比如有一張github圖片地址是:https://github.com/chuliangcai/study/blob/master/src/computer-science-education.jpg?raw=true study是倉(cāng)庫(kù)名泵额,分支是master配深,文件路徑是/src/computer-science-education.jpg,加速后的地址是:https://cdn.jsdelivr.net/gh/chuliangcai/study/src/computer-science-education.jpg
  • 由于過程中需要解析markdown嫁盲,flexmark是個(gè)不錯(cuò)的選擇篓叶。

開搞

  1. 選擇一篇寫好的本地文章,比如markdown寫微信公眾號(hào).md ,需要特別注意的是圖片一定要使用標(biāo)準(zhǔn)的markdown格式缸托,形如[圖片上傳失敗...(image-155a08-1619266052805)]左敌,否則后面轉(zhuǎn)換的時(shí)候會(huì)不支持。

  2. 在github新建一個(gè)倉(cāng)庫(kù)俐镐,設(shè)置成public 矫限,取名freedom寓意自由。做一個(gè)自由的????

image-20210206120334441.png
  1. 使用git clone https://github.com/chuliangcai/freedom.git 將倉(cāng)庫(kù)下載到本地
  2. 將本地文章拷貝到目標(biāo)倉(cāng)庫(kù)中佩抹。因?yàn)閱渭兊奈募截悷o法將引用的圖片一起拷走叼风,所以此處寫代碼進(jìn)行自動(dòng)拷貝,代碼如下:
package com.family.flexmark;

import java.io.File;
import java.io.FileReader;

import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;

import com.vladsch.flexmark.ast.Image;
import com.vladsch.flexmark.parser.Parser;
import com.vladsch.flexmark.util.ast.Node;
import com.vladsch.flexmark.util.collection.iteration.ReversiblePeekingIterator;
import com.vladsch.flexmark.util.data.MutableDataSet;

public class FlexMarkDemoApplication {
    private static String dirPath = "";
    public static File destFileDir;

    public static void main(String[] args) throws Exception {
        MutableDataSet options = new MutableDataSet();
        Parser parser = Parser.builder(options).build();
        String file = "/Users/chuliangcai/data/projects/blog/app/blog/editor/markdown寫微信公眾號(hào).md";
        String descFile = "/Users/chuliangcai/data/projects/freedom/technology/other/markdown寫微信公眾號(hào).md";
        dirPath = StringUtils.substringBeforeLast(file, "/");
        destFileDir = new File(StringUtils.substringBeforeLast(descFile, "/"));
        //noinspection ResultOfMethodCallIgnored
        destFileDir.mkdirs();
        FileUtils.copyFileToDirectory(new File(file), destFileDir);
        Node document = parser.parseReader(new FileReader(file));
        extractNode(document);
    }

    public static void extractNode(Node node) throws Exception {
        if (!node.hasChildren()) {
            return;
        }
        ReversiblePeekingIterator<Node> iterator = node.getChildIterator();
        while (iterator.hasNext()) {
            Node node1 = iterator.next();
            if (node1 instanceof Image) {
                Image image = (Image) node1;
                File imgFile = new File(dirPath + "/" + image.getUrl().toString());
                FileUtils.copyFileToDirectory(imgFile, destFileDir);
            } else {
                extractNode(node1);
            }
        }
    }
}

使用typora 打開freedom文件夾棍苹,查看效果无宿。

image-20210206122154575.png
  1. 提交文章git push
  2. 編寫java代碼將文章中的圖片全部轉(zhuǎn)換為jsdelivr的路徑,代碼如下
public class RegexDemo {

    public static final String OUTPUT_PATH = "/Users/chuliangcai/Desktop/markdown寫微信公眾號(hào).md";
    public static final Pattern PATTERN = Pattern.compile("!\\[[0-9a-zA-Z_.-]+]\\([0-9a-zA-Z_.-]+\\)");
    public static final String IMAGE_PATH_PREFIX = "https://cdn.jsdelivr.net/gh/chuliangcai/freedom/technology/algorithm/";

    public static void main(String[] args) throws Exception {
        FileInputStream fis = new FileInputStream("/Users/chuliangcai/data/projects/freedom/technology/other/markdown寫微信公眾號(hào).md");
        BufferedReader br = new BufferedReader(new InputStreamReader(fis));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(OUTPUT_PATH)));
        String str;
        while ((str = br.readLine()) != null) {
            Matcher matcher = PATTERN.matcher(str);
            if (matcher.find()) {
                String image = matcher.group();
                String fileName = StringUtils.substringBetween(image, "(", ")");
                String replaced = str.replace(image, "![" + fileName + "](" + IMAGE_PATH_PREFIX + fileName + ")");
                bw.write(replaced + "\n");
            } else {
                bw.write(str + "\n");
            }
        }
        br.close();
        bw.flush();
        bw.close();
    }
}
  1. 進(jìn)入markdown nice官網(wǎng)注冊(cè)賬戶
  2. 將剛才的輸出內(nèi)容拷貝到markdown編輯區(qū)域
image-20210206142803863.png
  1. 進(jìn)入微信公眾號(hào)后臺(tái)枢里,新建圖文素材懈贺,找個(gè)漂亮的首圖,粘貼剛才的內(nèi)容坡垫。

  2. 最終手機(jī)效果如下,效果滿分画侣!

image-20210206143255427.png

擴(kuò)展到其他平臺(tái)

讓自己的文章傳播出去吧

  • 知乎 markdown-nice就支持哦冰悠!


    image-20210424160847211.png
  • 簡(jiǎn)書博客園配乱、 csdn博客均支持markdown編輯器溉卓,直接拷貝進(jìn)去即可

不足之處

整個(gè)過程手動(dòng)的地方有點(diǎn)多,最好集成一下各大平臺(tái)的授權(quán)搬泥。然后做一個(gè)簡(jiǎn)單的桌面應(yīng)用桑寨。實(shí)現(xiàn)一鍵發(fā)布。

附錄

jsdelivr 網(wǎng)站地址:https://www.jsdelivr.com/?docs=gh
markdown-nice官網(wǎng):https://www.mdnice.com/
mark解析器flexmark地址:https://github.com/vsch/flexmark-java

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末忿檩,一起剝皮案震驚了整個(gè)濱河市尉尾,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌燥透,老刑警劉巖沙咏,帶你破解...
    沈念sama閱讀 210,978評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異班套,居然都是意外死亡肢藐,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門吱韭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來吆豹,“玉大人,你說我怎么就攤上這事《幻海” “怎么了凑阶?”我有些...
    開封第一講書人閱讀 156,623評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)速勇。 經(jīng)常有香客問我晌砾,道長(zhǎng),這世上最難降的妖魔是什么烦磁? 我笑而不...
    開封第一講書人閱讀 56,324評(píng)論 1 282
  • 正文 為了忘掉前任养匈,我火速辦了婚禮,結(jié)果婚禮上都伪,老公的妹妹穿的比我還像新娘呕乎。我一直安慰自己,他們只是感情好陨晶,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,390評(píng)論 5 384
  • 文/花漫 我一把揭開白布猬仁。 她就那樣靜靜地躺著,像睡著了一般先誉。 火紅的嫁衣襯著肌膚如雪湿刽。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評(píng)論 1 289
  • 那天褐耳,我揣著相機(jī)與錄音诈闺,去河邊找鬼。 笑死铃芦,一個(gè)胖子當(dāng)著我的面吹牛雅镊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播刃滓,決...
    沈念sama閱讀 38,892評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼仁烹,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了咧虎?” 一聲冷哼從身側(cè)響起卓缰,我...
    開封第一講書人閱讀 37,655評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎砰诵,沒想到半個(gè)月后僚饭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,104評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡胧砰,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年鳍鸵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尉间。...
    茶點(diǎn)故事閱讀 38,569評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡偿乖,死狀恐怖击罪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情贪薪,我是刑警寧澤媳禁,帶...
    沈念sama閱讀 34,254評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站画切,受9級(jí)特大地震影響竣稽,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜霍弹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,834評(píng)論 3 312
  • 文/蒙蒙 一毫别、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧典格,春花似錦岛宦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至防嗡,卻和暖如春变汪,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蚁趁。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工疫衩, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人荣德。 一個(gè)月前我還...
    沈念sama閱讀 46,260評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像童芹,于是被迫代替她去往敵國(guó)和親涮瞻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,446評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容