--- name: facebook-status-automation description: "Generate Facebook personal status drafts from recent Hermes sessions. Two-pass system: extract activities from 24h sessions → compare with last 10 posts → output copyable draft or skip if nothing new." version: 1.0.0 author: Kunthawat license: MIT platforms: [macos, linux] metadata: hermes: tags: [social-media, facebook, personal-brand, automation] category: productivity --- # Facebook Status Automation สร้าง Facebook status draft จาก Hermes sessions ใน 24 ชม. ย้อนหลัง มุ่งเป้า: **personal brand** สำหรับคนทั่วไปที่ไม่รู้เรื่อง IT ## When to use - ผู้ใช้ขอให้สร้าง Facebook status จากสิ่งที่ทำวันนี้ - Cron job รันตอน 20:00 ทุกวัน - ผู้ใช้ถามว่า "วันนี้มีอะไรน่าโพสไหม" ## Core Logic ``` 1. session_search(limit=20, sort="newest") → ดึง sessions 24h ย้อนหลัง 2. อ่าน session content → สรุปกิจกรรม 3. Filter: กรอง ban list (กิจกรรมซ้ำทุกวัน) 4. Compare: เปรียบเทียบกับ 10 โพสย้อนหลัง (จาก .facebook-status-log.json) 5. Draft: สร้าง status ถ้ามีเรื่องใหม่ / skip ถ้าไม่มี ``` ## Ban List กิจกรรมที่ทำทุกวัน → ไม่ต้องโพส: | Topic | เหตุผล | |-------|--------| | ai-news-reading / morning-news-briefing | cron รันทุกวัน | | daily-planning / start-my-day | cron รันทุกวัน | | end-my-day / evening-wrapup | cron รันทุกวัน | | cron-model-update | internal config | | cookie-renewal | internal maintenance | เพิ่ม/ลบได้ใน `~/vault/.facebook-status-log.json` → `settings.ban_list` ## Comparison Rules | เงื่อนไข | ผลลัพธ์ | |---------|---------| | อยู่ใน ban list | ❌ skip | | เรื่องเดิม + โพสวันนี้แล้ว | ❌ skip | | เรื่องเดิม + ไม่มี change ใหม่ (lookback_posts) | ❌ skip | | เรื่องเดิม + มี change ใหม่ | ✅ โพส (ปรับ wording) | | เรื่องใหม่ | ✅ โพส | | ไม่มีเรื่องน่าสนใจ | 🔕 ไม่โพส → แจ้ง "วันนี้ไม่มีเรื่องน่าโพส" | ## Steps ### 1. ดึง Sessions ``` session_search(limit=20, sort="newest") ``` กรองเฉพาะ sessions ใน 24 ชม. ย้อนหลัง (ไม่ใช่ทุก session) ### 2. อ่าน + สรุปกิจกรรม อ่าน content ของแต่ละ session → สรุปว่า: - ทำอะไรไปบ้าง - มี progress/achievement อะไรบ้าง - มี blog article ไหม (ถ้ามี เก็บ link) ### 3. Filter Ban List เปรียบเทียบ topic กับ ban_list ใน log file ถ้า match → skip ### 4. Compare กับ 10 โพสย้อนหลัง อ่าน `~/vault/.facebook-status-log.json` - ดึง posts 10 ตัวล่าสุด - เช็คว่า topic นี้เคยโพสหรือยัง - ถ้าเคย → เช็คว่ามี change ใหม่ไหม ### 5. สร้าง Draft (ถ้าผ่าน) เขียน Facebook status: - ไม่ใช้ technical jargon - เน้นผลลัพธ์/ประโยชน์สำหรับคนทั่วไป - สั้น กระชับ - ใส่ blog link ถ้ามี ### 6. อัพเดท Log บันทึกลง `~/vault/.facebook-status-log.json`: - เพิ่ม post entry ใหม่ - อัพเดท milestones ### 7. Output ถ้ามี draft → แสดงให้ user copy ถ้าไม่มี → แจ้ง "วันนี้ไม่มีเรื่องน่าโพส" ## Draft Style Guide ### ✅ เขียนแบบนี้ ``` วันนี้ปรับระบบ AI ให้สรุปข่าวอัตโนมัติทุกเช้า — เขียน script ให้ทำงานเองตอน 7 โมง ไม่ต้องนั่งเปิดทีละเว็บ ``` ### ❌ ไม่เขียนแบบนี้ ``` Today I updated the cron job configuration to use the moreminimore-ai model via custom LLM proxy endpoint for all scheduled tasks ``` ### Rules - เขียนเป็นไทย (หรือภาษาที่ user ต้องการ) - ไม่ใช้คำ technical (cron, API, script → ใช้คำที่คนทั่วไปเข้าใจ) - เน้น **สิ่งที่ได้** ไม่ใช่ **สิ่งที่ทำ** ("ประหยัดเวลา" ดีกว่า "ปรับ config") - ไม่ต้องใส่ timestamp หรือเวลาที่ทำ - ถ้ามี blog article → ใส่ link ท้ายโพส ## Files | ไฟล์ | ที่อยู่ | หน้าที่ | |-----|--------|--------| | Log file | `~/vault/.facebook-status-log.json` | เก็บประวัติ + milestones | | Script | `~/Gitea/moreminimore-personal-system/facebook-status-automation/facebook-status-generator.py` | Test run / debug | | Skill | `~/.hermes/skills/productivity/facebook-status-automation/SKILL.md` | ไฟล์นี้ | ## Cron Setup ```bash # รันทุกวัน 20:00 น. hermes cron create \ --name "Facebook Status Draft" \ --schedule "0 20 * * *" \ --prompt "รัน facebook-status-automation skill" \ --skills facebook-status-automation \ --deliver telegram ``` ## Pitfalls 1. **sessions 24h ≠ sessions ทั้งหมด** — ต้อง filter เวลาจริง ไม่ใช่ดึงทุก session 2. **ban list ต้องตรง topic ไม่ใช่ substring** — เช่น "morning-news-briefing" ต้องเช็คว่า topic match เต็ม ไม่ใช่แค่มี "morning" อยู่ 3. **draft ต้อง human-readable** — ห้ามมี technical terms หลุดไป 4. **log file ต้อง update ทุกครั้งที่โพส** — ไม่งั้นจะโพสซ้ำ 5. **ถ้าไม่มีเรื่องน่าโพส → ไม่ต้องโพส** — ห้าม forced output