用了 hugo 一段时间后,感觉每次新建文章都有些不顺手。程序自身的自带的 hugo new 命令创建的文章并不能实现自定义 slug, 于是用 python-slugify
库实现了自己的需求。
新建文章脚本
记得安装库 pip3 install python-slugify
import os
import datetime
from slugify import slugify
from datetime import timezone, timedelta
def generate_slug(title):
# 将标题转换为slug
slug = slugify(title)
return slug
def create_hugo_article(title, content_dir='content'):
# 获取当前日期和时间,并设置为北京时间(东八区)
now = datetime.datetime.now(timezone(timedelta(hours=8)))
date_str = now.strftime("%Y-%m-%dT%H:%M:%S%z") # 输出带时区的时间格式
# 处理时区格式,将 "+0800" 转换为 "+08:00"
date_str = date_str[:-2] + ":" + date_str[-2:]
# 生成 slug
slug = generate_slug(title)
# 定义文章文件名
filename = f"{now.strftime('%Y-%m-%d')}-{title}.md"
# 定义 Front Matter 模板,添加 slug 字段
front_matter = f"""---
title: "{title}"
slug: "{slug}"
date: {date_str}
tags: []
---
"""
# 获取文件路径
file_path = os.path.join(content_dir, filename)
# 创建目标文件夹(如果不存在)
os.makedirs(content_dir, exist_ok=True)
# 写入 Front Matter 和模板内容
with open(file_path, 'w', encoding='utf-8') as f:
f.write(front_matter)
f.write("# 文章内容\n\n")
f.write("这里是文章的正文内容。可以开始写作了。\n")
print(f"文章模板已创建:{file_path}")
# 调用函数创建文章
if __name__ == "__main__":
title = input("请输入文章标题: ") # 用户输入标题
create_hugo_article(title)
新建文章命令:python3 create_post.py
发布文章脚本
#!/bin/bash
# 开启代理,如果需要
export http_proxy="http://127.0.0.1:7897"
export https_proxy="http://127.0.0.1:7897"
# 进入 Hugo 项目的目录
cd /Users/kevin/Documents/github/blog
# 查看当前 Git 状态
echo "查看当前 Git 状态..."
git status
# 提示用户是否提交
read -p "是否提交本次更改?(y/n): " confirm
# 如果用户输入 y,则继续提交,否则退出脚本
if [[ "$confirm" == "y" || "$confirm" == "Y" ]]; then
echo "添加更改..."
git add .
echo "提交更改..."
git commit -m "update"
echo "推送更改..."
git push
echo "发布完成!"
else
echo "操作已取消,未提交更改。"
fi
发布文章命令:sh deploy.sh