虽然Medium是一个非常出色的发布平台,但拥有自己的博客依然很有必要。这不仅可以增加与读者互动的渠道,还可以确保您的内容不会因平台变化而丢失。
为什么需要自己的博客?
Medium提供了高曝光率、高质量的内容和简洁易用的界面,对于刚开始写作的新手来说非常友好。然而,没有任何公司能够永久存在,如果Medium被其他公司收购或发生其他不利情况,您的文章可能会受到影响。拥有自己的博客可以确保您的内容安全,让您更加安心。
我使用基于Python的静态网站生成器Pelican构建了自己的网站,并写了一篇文章详细介绍了整个过程。每次发布新的Medium文章时,我需要手动复制URL,运行一些命令将其转换为Markdown文件,然后使用Pelican生成博客站点。虽然这个过程相对简单,但我希望能更进一步简化。因此,编写一个Bash脚本来自动化这一过程是非常合适的。
脚本结构
在编写脚本之前,明确我们要完成的任务可以帮助我们编写更高质量的代码。具体步骤如下:
- 将所有文章的URL手动保存到一个文本文件中(未来可以使用爬虫自动化这一过程)。
- 读取文件中的每一行,提取文章的标题和副标题。
- 使用提取的信息创建Pelican所需的元数据。
- 将Markdown文件转换为博客文章。
- 运行Pelican命令生成静态网站。
- 将网站推送到GitHub并触发Netlify的自动构建。
编写脚本
首先,定义脚本中需要的变量:
#!/bin/bash
# Define variables
filename='articles.txt'
n=1
接下来,使用循环结构读取文本文件的每一行:
# Read in file and process each line
while read line; do
n=$((n+1))
slug=$(echo $line | sed 's/https://towardsdatascience.com///') # Extract slug from URL
FILE="$HOME/wayofnumbers.github.io/content/$slug.md" # Generate Markdown file name
mediumexporter $line > $FILE # Convert Medium article to Markdown file
# Additional processing...
done <$filename
我们使用sed
命令从URL中提取文章的slug部分。例如,URL https://towardsdatascience.com/9-things-i-learned-from-blogging-on-medium-for-the-first-month-2bace214b814
被转换为 9-things-i-learned-from-blogging-on-medium-for-the-first-month-2bace214b814
。然后,我们使用mediumexporter
工具将文章转换为Markdown文件。
接下来,我们需要对生成的Markdown文件进行一些处理:
# Process the Markdown file
tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE" # Remove the first line
fl=$(head -n 1 $FILE) # Extract title
firstline=$(echo $fl | sed 's/# //') # Remove '#' from title
tail -n +3 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE" # Remove the first line
subtitle=$(head -n 1 $FILE) # Extract subtitle
tail -n +2 "$FILE" > "$FILE.tmp" && mv "$FILE.tmp" "$FILE" # Remove the first two lines
这些操作包括移除不必要的行,并提取文章的标题和副标题。接下来,我们为Pelican生成元数据:
# Handle metadata for Pelican
meta="Title: $firstline
Slug: $slug
Subtitle: $subtitle
Date: $(date)
Category: Machine Learning
Tags: Machine Learning, Artificial Intelligence
Author: Michael Li
Summary: $firstline
[TOC]"
{echo -n "$meta" ; cat $FILE ; } > $FILE.new # Combine metadata and article content
mv $FILE{.new,}
head -n -8 $FILE > $FILE.new # Remove Medium's recommended articles
mv $FILE{.new,}
最后,生成静态网站并将其推送到服务器:
# Push to server
cd $HOME/wayofnumbers.github.io
pelican content -s publishconf.py
git add .
git commit -m "Update blog posts"
git push origin dev
结论
通过上述步骤,您可以使用Bash脚本将Medium文章自动迁移到个人博客。虽然这个脚本是专门为Pelican静态站点生成器编写的,但其核心思路可以应用于其他博客平台。希望这篇文章对您有所帮助,祝您博客愉快!
如果您觉得这篇文章有用,请在Medium上关注我(Michael Li),或在Twitter @lymenlee或我的博客网站wayofnumbers.com上找到我。
原文链接: https://hackernoon.com/port-your-medium-articles-to-your-personal-blog-with-a-simple-bash-script-a-how-to-guide-e488366o