1 branches0 tags
SShih-Te Hsiaosiao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
67c44cc13 hours ago
  • NOTES_ACCOUNTS.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • NOTES_APPS.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • NOTES_BLOG.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • NOTES_HOMEPAGE.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • NOTES_SIAOHUB.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • OVERVIEW.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • README.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_ACCOUNTS_CONSOLIDATION.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_ACCOUNTS.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_ANSWERHUB_CRAFT.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_ANSWERHUB_DISPLAY.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_ANSWERHUB_FRONTEND.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_ANSWERHUB_LIVE.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_ANSWERHUB_SEO.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_ANSWERHUB_SHELL.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_APPS.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_BLOG.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_HOMEPAGE_I18N.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_LWOPAN_MIGRATION.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
  • SPEC_SIAOHUB.md
    siao.ai 工程日誌:19 份,含走過的死路與被推翻的結論 由 ClaudeDocs/publish.mjs 產生,不要直接編輯——改來源日誌。 三道機制,各自抓另外兩道抓不到的東西:整份排除(3 份,理由寫在 PRIVATE_FILES)、段落排除(<!-- private -->)、樣式塗改(與 SiaoHub 的 serve 路徑共用 leakScan.ts,不是另抄一份)。任何一份塗完仍掃出 髒東西就整批拒絕寫出。 這輪多學到一件事:三道機制都是比對,而最該擋的那個東西是用讀的 才發現——一章慶祝第一次登入的日誌引用了真實登入者的 email。掃描器 存在不等於內容可以發佈。 Co-Authored-By: Claude Opus 5 (1M context) <[email protected]> Claude-Session: https://claude.ai/code/session_01RRycU1U8ByjzQ5pmzcPJmf
    13 hours ago
README.md

siao.ai — engineering journals

The working notes behind siao.ai and its subdomains: how problems were actually worked, including the paths that didn't pan out and the conclusions that later turned out to be wrong.

These are journals, not documentation. They are chaptered by the question each piece of work set out to answer, appended to rather than tidied, and corrections are left in place — reading the correction is the point.

What is here

  • NOTES_ACCOUNTS.md
  • NOTES_APPS.md
  • NOTES_BLOG.md
  • NOTES_HOMEPAGE.md
  • NOTES_SIAOHUB.md
  • OVERVIEW.md
  • SPEC_ACCOUNTS.md
  • SPEC_ACCOUNTS_CONSOLIDATION.md
  • SPEC_ANSWERHUB_CRAFT.md
  • SPEC_ANSWERHUB_DISPLAY.md
  • SPEC_ANSWERHUB_FRONTEND.md
  • SPEC_ANSWERHUB_LIVE.md
  • SPEC_ANSWERHUB_SEO.md
  • SPEC_ANSWERHUB_SHELL.md
  • SPEC_APPS.md
  • SPEC_BLOG.md
  • SPEC_HOMEPAGE_I18N.md
  • SPEC_LWOPAN_MIGRATION.md
  • SPEC_SIAOHUB.md

What is not

3 document(s) are withheld: live operational status, one unclosed security finding, and the design of an anti-scraping defence. Individual passages are removed elsewhere and marked where they were.

Host addresses and credential values are redacted automatically, both when this repository is generated and again when SiaoHub serves a file — see siaohub/src/lib/leakScan.ts. A [redacted: …] marker in the text is that mechanism, not a typo.

Generated by publish.mjs. Edit the source journals, not these files.