6 คะแนน โดย GN⁺ 2025-05-04 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • กรณีศึกษาของการสร้างบล็อกเองโดยไม่ใช้ Jekyll, Ghost หรือ WordPress
  • ข้อกำหนดพื้นฐานคือ ใช้โดเมนที่มีอยู่, สร้างเว็บไซต์แบบสแตติก, รองรับ SEO, และ เพิ่มบทความได้ง่าย
  • องค์ประกอบหลักคือไฟล์ template.html และสคริปต์ render.py โดยเขียนบทความด้วย Markdown เพื่อเรนเดอร์ทุกหน้าแบบอัตโนมัติ
  • ใช้ไลบรารี Python markdown2 เพื่อทำให้การแปลง Markdown → HTML และการสร้างหน้าเว็บเป็นอัตโนมัติ
  • เน้นโครงสร้างที่เพิ่มคอนเทนต์ได้อย่างง่ายดาย พร้อมทั้งยังคงสอดคล้องกับ SEO และ มาตรฐานเว็บสมัยใหม่

ข้อกำหนดของบล็อก

  • ต้องใช้โดเมนที่เป็นเจ้าของอยู่แล้ว
  • คงความเป็นมิตรต่อมาตรฐานเว็บสมัยใหม่และ SEO
  • ต้องเพิ่มบทความได้ง่ายมาก
  • ทุกหน้าต้องถูกสร้างแบบสแตติก

สรุปขั้นตอนการทำงาน

  • เขียนไฟล์ template.htmlจัดวางเลย์เอาต์ HTML พื้นฐาน
  • ติดตั้งเครื่องมือเรนเดอร์ Markdown ด้วยคำสั่ง pip install markdown2
  • ขอให้ O1 ช่วยสร้างสคริปต์ Python สำหรับการเรนเดอร์ (render.py)
  • เขียนโพสต์ในโฟลเดอร์ posts/ ในรูปแบบ eng.md
  • รัน render.py เพื่อแปลงเป็น HTML และสร้างโฟลเดอร์ผลลัพธ์

เทมเพลต HTML หลัก (template.html)

  • โครงสร้าง HTML เรียบง่ายและมินิมอล โดยแทรกผลลัพธ์จากการเรนเดอร์ Markdown ไว้ที่ {{ content }}
  • CSS ใช้ฟอนต์แบบ system-ui, padding แบบปรับตามขนาดหน้าจอ, การตั้งค่า color-scheme ฯลฯ เพื่อให้อ่านง่าย

สคริปต์ Python สำหรับเรนเดอร์หลัก (render.py)

  • ใช้ markdown2 เพื่อแปลงโพสต์ Markdown แต่ละรายการเป็น HTML
  • ระหว่างแปลง จะแทนที่พาธ <img> เป็น /posts/{post_code}/ โดยอัตโนมัติ
  • ชื่อหัวข้อ HTML จะดึงมาจาก # 헤더 ใน Markdown
  • index.html ประกอบด้วย greetings.md + รายการชื่อโพสต์แต่ละรายการ
  • ผลลัพธ์จะถูกบันทึกเป็นไฟล์ .html ในโฟลเดอร์ ./blog/

5 ความคิดเห็น

 
ifmkl 2025-05-07

ตอนนี้ผมก็จัดการบล็อกของตัวเองแบบเดียวกับด้านบนเลยครับ ผมสร้างและใช้งาน SSG ที่ตอบโจทย์ความต้องการส่วนตัวของตัวเอง โดยเพิ่มฟังก์ชันคัสตอมทีละอย่างเพื่อให้ใช้ความสามารถอย่างรูปภาพ thumbnail, หมวดหมู่ และแท็กได้ด้วย รูปภาพที่แนบมาก็ถูกแปลงเป็น webp โดยอัตโนมัติแล้วอ้างอิงใช้งาน ทำให้ความเร็วในการเรนเดอร์น่าพอใจมากครับ

 
winterjung 2025-05-07

โอ้ ฟีเจอร์แบบคัสตอมพวกนั้นคุณค่อย ๆ เขียนโค้ดเพิ่มเองโดยตรงใช่ไหมครับ? ผมเองก็คิดจะทำแบบ DIY อยู่เสมอเหมือนกัน แต่ก็มักลังเลเพราะฟังก์ชันการขยายความสามารถและปลั๊กอินที่เฟรมเวิร์กบล็อกแบบ SSG ที่เคยใช้งานอยู่มีมาให้นี่แหละครับ

 
ifmkl 2025-05-07

ถ้าตัดความโลภออกไปได้ แค่ตัดความอยากได้อยากมีออกไป ที่เหลือก็ไม่ได้ยากอะไรมาก จริง ๆ แล้วถ้าขอให้ AI เขียนโค้ดให้ ssg ก็เขียนให้ได้หมด และถ้าขอให้เพิ่มฟีเจอร์ ก็เพิ่มให้ได้หมดเหมือนกัน 555

 
ndrgrd 2025-05-04

ถ้าเลือกแค่ฟอนต์ที่สวย ๆ มันก็ดูน่าอ่านขึ้นมาเลยครับ

 
GN⁺ 2025-05-04
ความคิดเห็นจาก Hacker News
  • ตอนเริ่มทำบล็อกใช้ SSG แต่สุดท้ายเปลี่ยนไปใช้ WordPress ทำให้มีอิสระมากขึ้น

    • สิ่งสำคัญคือต้องหลีกเลี่ยงเครื่องมือที่รบกวนการเขียน
    • ควรหลีกเลี่ยงการผัดวันประกันพรุ่งเพื่อจะได้โฟกัสกับการเขียน
  • องค์ประกอบสองอย่างที่จำเป็นเพื่อให้มีคุณสมบัติเป็นบล็อก

    • ต้องเรียงโพสต์ตามลำดับวันที่และแสดงวันที่
    • ต้องมี RSS feed
  • ความรักที่มีต่อเว็บไซต์อิสระ

    • เว็บไซต์ที่เริ่มต้นด้วย ASP เมื่อ 25 ปีก่อน ตอนนี้ทำงานด้วย Common Lisp
    • เริ่มจากเว็บไซต์ที่มีฟังก์ชันขั้นต่ำแล้วค่อย ๆ เพิ่มความสามารถ
    • ไอเดียใหม่ ๆ นั้นชวนล่อตาล่อใจเสมอ แต่ต้องระวังไม่ให้โปรเจกต์ขยายจนควบคุมไม่ได้
  • อยากให้เบราว์เซอร์รองรับ text/markdown และ text/gemini แบบเนทีฟ

    • การรองรับฟอร์แมตอื่น ๆ ช่วยลดอุปสรรคในการเผยแพร่และคืนอำนาจการควบคุมให้ผู้ใช้
  • มีการชี้ถึงบั๊กที่ทำให้สตริง "Minimum viable blog" ถูกแทนที่ด้วยชื่อโพสต์

  • เคยทำบล็อกด้วยหน้า HTML แบบเรียบง่าย แต่ตอนนี้ใช้ Astro เพื่อทำเว็บไซต์ที่พัฒนาขึ้นกว่าเดิม

    • Astro เป็นแพลตฟอร์มที่เหมาะกับเว็บไซต์ที่เน้นคอนเทนต์
  • การทดลองกับ Bun JS และการใช้ HTML เป็นสตริงใน JS

    • IntelliJ IDE ตรวจจับ HTML และรองรับการจัดรูปแบบกับการไฮไลต์ syntax
  • ทริกบางอย่างที่ได้เรียนรู้จากการทดลองทำบล็อกแบบมินิมัลมา 15 ปี

    • JSX มีประโยชน์ในฐานะตัวสร้างสตริงฝั่งเซิร์ฟเวอร์
    • GH Pages ใช้งานได้ง่ายกว่า Jekyll
    • highlight.js ยังมีประโยชน์สำหรับการไฮไลต์โค้ด
  • ความง่ายของเฟรมเวิร์กบล็อกแบบสแตติกมาตรฐานที่ใช้ Hugo/Zola และ Cloudflare Pages

    • ใช้ธีม Hugo Blog Awesome
    • รักษาขนาดหน้าให้ต่ำกว่า 512kb
  • ระหว่างการชุบชีวิตบล็อกเก่าก็ได้พบกับความไม่สะดวกของ Hexo

    • ธีมทำงานไม่ถูกต้อง จึงกำลังคิดว่าจะพัฒนาธีมเองดีหรือไม่
    • แม้ความซับซ้อนอาจเพิ่มขึ้น แต่ก็กำลังพยายามแก้ปัญหาอยู่