- Đây là một trường hợp tự xây dựng blog mà không dùng Jekyll, Ghost hay WordPress
- Các yêu cầu cơ bản gồm sử dụng tên miền đang sở hữu, tạo site tĩnh, tuân thủ SEO, thêm bài viết dễ dàng
- Cấu trúc cốt lõi gồm
template.html và script render.py, chỉ với việc viết bài bằng Markdown là có thể tự động render mọi trang
- Sử dụng thư viện Python markdown2 để tự động hóa việc chuyển đổi Markdown → HTML và tạo trang
- Nhấn mạnh một cấu trúc vừa tuân thủ SEO và các tiêu chuẩn web hiện đại, vừa có thể thêm nội dung đơn giản
Yêu cầu đối với blog
- Sử dụng tên miền đã sở hữu sẵn
- Duy trì các tiêu chuẩn web hiện đại và tính thân thiện với SEO
- Việc thêm bài viết phải cực kỳ dễ dàng
- Mọi trang phải được tạo tĩnh
Tóm tắt quy trình triển khai
- Tạo file
template.html → xây dựng bố cục HTML cơ bản
- Cài công cụ render Markdown bằng lệnh
pip install markdown2
- Yêu cầu
O1 viết script Python dùng để render (render.py)
- Viết bài trong thư mục
posts/ theo dạng eng.md
- Chạy
render.py để chuyển đổi sang HTML và tạo thư mục đầu ra
Mẫu HTML cốt lõi (template.html)
- Cấu trúc HTML đơn giản và tối giản, chèn kết quả render Markdown vào vị trí
{{ content }}
- CSS dùng phông chữ dựa trên
system-ui, padding thích ứng, thiết lập color-scheme để đảm bảo khả năng đọc
Script Python render cốt lõi (render.py)
- Dùng
markdown2 để chuyển từng bài viết Markdown thành HTML
- Khi chuyển đổi, tự động thay thế đường dẫn
<img> thành /posts/{post_code}/
- Tiêu đề HTML được trích xuất từ
# header trong Markdown
index.html được tạo từ greetings.md + danh sách tiêu đề của từng bài viết
- Kết quả được lưu thành
.html trong thư mục ./blog/
5 bình luận
Hiện tại tôi cũng đang vận hành blog của mình đúng như ở trên. Tôi đã tự tạo một SSG đáp ứng các nhu cầu cá nhân của mình để sử dụng. Tôi còn thêm các tính năng tùy chỉnh riêng để tận dụng chức năng ảnh thumbnail, danh mục và thẻ. Các ảnh đính kèm được tự động chuyển đổi sang webp để tham chiếu, nhờ vậy tốc độ render khiến tôi rất hài lòng.
Ồ, vậy những tính năng tùy biến như thế anh/chị tự viết code để bổ sung dần dần à? Tôi cũng luôn định tự DIY, nhưng rồi lại chần chừ vì các tính năng mở rộng và plugin mà những framework blog SSG tôi đang dùng sẵn có cung cấp.
Nếu bớt tham một chút, thì phần còn lại thật ra không quá khó. Ngay cả
ssgcũng chỉ cần nhờ AI là nó viết hết code cho, và nếu bảo thêm tính năng thì thật sự nó cũng thêm được hết luôn hahaChỉ cần chọn một phông chữ đẹp thì nhìn cũng khá ổn.
Ý kiến trên Hacker News
Khi bắt đầu blog, đã dùng SSG nhưng cuối cùng chuyển sang Wordpress và thấy tự do hơn
Hai yếu tố cần có để đủ tư cách là một blog
Tình yêu dành cho các website độc lập
Muốn trình duyệt hỗ trợ native cho text/markdown và text/gemini
Chỉ ra lỗi trong đó chuỗi "Minimum viable blog" bị thay thế bằng tiêu đề bài viết
Từng vận hành blog bằng một trang HTML đơn giản, nhưng giờ dùng Astro để vận hành một website phát triển hơn
Thử nghiệm với Bun JS và việc dùng HTML dưới dạng chuỗi JS
Một vài mẹo học được sau 15 năm thử nghiệm blog tối giản
Sự dễ dàng của framework blog tĩnh tiêu chuẩn dùng Hugo/Zola và Cloudflare Pages
Trong quá trình hồi sinh một blog cũ, đã trải nghiệm sự bất tiện của Hexo