وبلاگ یک دمو بود، نه یک برند
وبلاگ ۶ ماه بود که وجود داشت. صفحه اصلی درست رندر میشد. صفحه درباره میگفت این یک دموی تم Jekyll است. پستها متن placeholder بودن.
دلیلش: وبلاگ رو بهعنوان دمو ساختم، نه بهعنوان برند. تم شیک بود. محتوا خالی بود. هیچوقت وبلاگ رو به خزانه وصل نکردم. هیچوقت وبلاگ رو به رزومه وصل نکردم. هیچوقت اسکریپت انتشار ننوشتم. وبلاگ یک فولدر روی سرور بود. خزانه یک فولدر روی لپتاپ من بود. این دو فولدر از وجود هم خبر نداشتن.
این عدم تقارن خجالتآور بود. خزانه ۱۲۶ فایل مارکداون داشت، ۱۰ صفحه استراتژی، ۳۰ صفحه مفهوم، ۸ صفحه موجودیت، ۱ تحلیل کرپوس. وبلاگ ۱ صفحه داشت که میگفت دمو. مغز پر بود. دهان خالی.
راهحل، لایه انتشاره. لایه انتشار یک اسکریپته که درفت خزانه رو میگیره، به فرمت Jekyll تبدیلش میکنه، کامیت میکنه و به GitHub Pages پوش میکنه. یک کامند. یک URL. یک پست منتشرشده.
حالت CLI، Ruby خراب، یک ترمینال
جلسهای که این بازسازی رو تولید کرد یک جلسه CLI بود.
پایپلاین ۴ فایلی
خزانه ← صف ← اسکریپت ← URL زنده. کل ماجرا همینه.
content/queue/<draft>.md (vault side, status: ready-to-publish)
scripts/parse-frontmatter.py (YAML → bash, helper)
scripts/publish-blog.sh (the pipeline: transform + copy + commit + push)
~/ShayanSpiel.github.io/ (GH Pages side, _posts/, auto-builds on push)کاربر درفت مینویسه توی content/queue/<date>-<slug>.md. درفت در frontmatter استیت status: ready-to-publish داره.
کاربر یک کامند اجرا میکنه bash scripts/publish-blog.sh <draft-path> —yes. از اینجا به بعد با اسکریپته.
اسکریپت frontmatter رو تبدیل میکنه فیلدهای Jekyll رو اضافه میکنه (layout, date, author). فیلدهای خزانه رو حذف میکنه (status, standalone_test, pillar). وایتلیست، نه بلاکلیست. قرارداد پایدار.
اسکریپت اسکرینشاتها رو کپی میکنه بدنه رو برای ارجاع تصویر اسکن میکنه. مسیرها رو حل میکنه. به assets/uploads/<date>-<slug>/ کپی میکنه. مسیرها رو توی پست بازنویسی میکنه.
اسکریپت کامیت و پوش میکنه پست جدید و آپلودها رو stage میکنه. با یک پیام معنادار کامیت میکنه. به origin main پوش میکنه. GitHub Pages دوباره بیلد میکنه. پست حدود ۳۰ ثانیه بعد زندهست.
کل جریان یک کامنده. کاربر کامند رو اجرا میکنه، میره و پست زندهست. اسکریپت همون لایه انتشاره.
نتیجه
بازسازی در ۴ ساعت ۴ تا خروجی تحویل داد. سلسلهمراتب برند حالا یکدست و هماهنگه.
سلسلهمراتب برند حالا یکدست و هماهنگه. صفحه درباره وبلاگ، صفحه ویکی shayanspiel رو بازتاب میده. هر سطح به یک آدم اشاره میکنه.
انتشار بخشیه که هیچکس یادت نمیده
بیشتر توصیههای وبلاگ درباره نوشتنه. بیشتر توصیههای موتور محتوا درباره درفتست. هیچکس درباره مرحله انتشار حرف نمیزنه.
مرحله انتشار لایهایه بین «درفت دارم» و «درفت زندهست». مرحله انتشار همون اصطکاکه. مرحله انتشار همون جاییه که باعث میشه آدمها پست نذارن. راهحل یک اسکریپته. اسکریپت یک مسیر فایل میگیره. بقیهش با اسکریپته.
اگه نتونی منتشر کنی، پست نمیذاری. اگه مرحله انتشار ۱۰ دقیقه کلیک باشه، نتونی منتشر کنی. اون ۱۰ دقیقه همون اصطکاکه. اصطکاک همون دلیله که پست نمیذاری. اسکریپت کشنده اصطکاکه.
اگه خزانه داری، اسکریپت رو بساز
اسکریپت ۴ ساعته. اسکریپت لایه انتشار زیرساخت Session-as-Content است.
اگه نتونی منتشر کنی، پست نمیذاری. اسکریپت کشنده اصطکاکه.
۴ فایل. ۴ ساعت. یک کامند. خزانه حالا به وبلاگ وصله. ریپوی Spiel OS رو کلون کن. لایه انتشار رو بساز. همون شب منتشر کن.
کلون کردن ریپوی SpielOS