{"allowContribute":false,"item":{"artifactHtml":"\u003cstyle\u003e\n  :root {\n    --paper:#FFF9F7;\n    --ink:#1E1416;\n    --ink-2:#7A6A6E;\n    --accent:#E84362;\n    --accent-2:#FF6B8A;\n    --soft:#FFF0F2;\n    --soft-2:#FFE4E8;\n    --hair:#ECD9DD;\n    --card:#FFFFFF;\n    --shadow: 0 8px 32px rgba(232,67,98,0.08), 0 1px 3px rgba(30,20,22,0.06);\n  }\n  :root[data-theme=\"dark\"] {\n    --paper:#141011;\n    --ink:#FBE9ED;\n    --ink-2:#C2AEB3;\n    --accent:#FF7A94;\n    --accent-2:#FF8FA8;\n    --soft:#24151A;\n    --soft-2:#2E1C22;\n    --hair:#3A2A2E;\n    --card:#1E1517;\n    --shadow: 0 8px 32px rgba(0,0,0,0.4), 0 1px 3px rgba(0,0,0,0.3);\n  }\n  .doc {\n    background: var(--paper);\n    color: var(--ink);\n    padding: 0 0 40px 0;\n    font: 16px/1.78 -apple-system, BlinkMacSystemFont, \"PingFang TC\", \"Noto Sans TC\", \"Microsoft JhengHei\", sans-serif;\n    letter-spacing: 0.01em;\n  }\n  .doc * { box-sizing: border-box; }\n  /* Header Hero */\n  .hero {\n    background: linear-gradient(180deg, var(--soft) 0%, var(--paper) 100%);\n    border-bottom: 1px solid var(--hair);\n    padding: 32px 32px 28px;\n  }\n  .eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    font: 700 11px ui-monospace, SFMono-Regular, Menlo, monospace;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    color: var(--accent);\n  }\n  .eyebrow::before {\n    content: \"\";\n    width: 22px; height: 2px;\n    background: var(--accent);\n    border-radius: 999px;\n    opacity: 0.9;\n  }\n  h1 {\n    font-size: 28px;\n    line-height: 1.32;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin: 14px 0 0;\n    max-width: 22ch;\n    text-wrap: balance;\n  }\n  .lede {\n    margin: 14px 0 0;\n    color: var(--ink-2);\n    font-size: 15.5px;\n    line-height: 1.7;\n    max-width: 58ch;\n  }\n  .lede strong { color: var(--ink); font-weight: 700; }\n  .hero-meta {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-top: 18px;\n  }\n  .meta-pill {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    font: 600 12px ui-monospace, monospace;\n    letter-spacing: 0.04em;\n    padding: 7px 11px;\n    border-radius: 999px;\n    background: var(--card);\n    border: 1px solid var(--hair);\n    color: var(--ink-2);\n    box-shadow: 0 1px 2px rgba(0,0,0,0.04);\n  }\n  .meta-pill b { color: var(--accent); font-weight: 800; }\n\n  /* Content wrapper */\n  .content { padding: 28px 32px 0; max-width: 780px; }\n\n  /* Stats */\n  .stats {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 12px;\n    margin: 0 0 26px;\n  }\n  .stat {\n    background: var(--card);\n    border: 1px solid var(--hair);\n    border-radius: 14px;\n    padding: 14px 14px 12px;\n    box-shadow: var(--shadow);\n    position: relative;\n    overflow: hidden;\n  }\n  .stat::after {\n    content: \"\";\n    position: absolute;\n    top: -18px; right: -18px;\n    width: 56px; height: 56px;\n    background: var(--soft);\n    border-radius: 50%;\n    opacity: 0.9;\n  }\n  .stat .k {\n    font: 700 11px ui-monospace, monospace;\n    letter-spacing: 0.08em;\n    color: var(--accent);\n    position: relative;\n    z-index: 1;\n  }\n  .stat .v {\n    font-size: 26px;\n    font-weight: 800;\n    letter-spacing: -0.03em;\n    margin-top: 6px;\n    position: relative;\n    z-index: 1;\n    line-height: 1.1;\n  }\n  .stat .v small { font-size: 14px; font-weight: 700; color: var(--ink-2); margin-left: 2px; }\n  .stat .n {\n    font-size: 12.5px;\n    color: var(--ink-2);\n    margin-top: 4px;\n    line-height: 1.5;\n    position: relative;\n    z-index: 1;\n  }\n\n  h2 {\n    font-size: 18px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin: 32px 0 12px;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n  }\n  h2 .num {\n    flex: none;\n    width: 26px; height: 26px;\n    display: grid; place-items: center;\n    background: var(--accent);\n    color: white;\n    border-radius: 8px;\n    font: 800 12px ui-monospace, monospace;\n  }\n  :root[data-theme=\"dark\"] h2 .num { color: #1A0A0E; }\n  h3 { font-size: 15px; font-weight: 750; margin: 18px 0 8px; letter-spacing: -0.01em; }\n  p { color: var(--ink-2); margin: 0 0 14px; max-width: 62ch; }\n  p b, p strong { color: var(--ink); }\n\n  /* Callout */\n  .callout {\n    display: flex;\n    gap: 14px;\n    padding: 16px 16px;\n    background: var(--soft);\n    border: 1px solid var(--hair);\n    border-left: 3px solid var(--accent);\n    border-radius: 10px;\n    margin: 20px 0;\n  }\n  .callout .tag {\n    flex: none;\n    font: 800 11px ui-monospace, monospace;\n    letter-spacing: 0.08em;\n    color: var(--accent);\n    background: var(--card);\n    border: 1px solid var(--hair);\n    padding: 4px 8px;\n    border-radius: 999px;\n    height: fit-content;\n    margin-top: 1px;\n  }\n  .callout div { font-size: 14.5px; line-height: 1.65; color: var(--ink); }\n  .callout div span { color: var(--ink-2); }\n\n  /* Pain grid */\n  .pain-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n    margin: 14px 0 6px;\n  }\n  .pain-card {\n    background: var(--card);\n    border: 1px solid var(--hair);\n    border-radius: 12px;\n    padding: 14px 14px 13px;\n    box-shadow: var(--shadow);\n  }\n  .pain-card .icon {\n    width: 32px; height: 32px;\n    border-radius: 9px;\n    display: grid; place-items: center;\n    background: var(--soft);\n    color: var(--accent);\n    margin-bottom: 10px;\n  }\n  .pain-card .t { font-size: 13.5px; font-weight: 750; color: var(--ink); margin-bottom: 4px; }\n  .pain-card .d { font-size: 12.8px; line-height: 1.6; color: var(--ink-2); margin: 0; }\n  .pain-card.muted { background: var(--soft); border-style: dashed; }\n  .pain-card.muted .icon { background: var(--card); }\n\n  /* Timeline */\n  .timeline {\n    position: relative;\n    margin: 16px 0 0;\n    padding-left: 22px;\n    border-left: 2px dashed var(--hair);\n  }\n  .tl-item {\n    position: relative;\n    padding: 0 0 18px 18px;\n  }\n  .tl-item:last-child { padding-bottom: 0; }\n  .tl-item::before {\n    content: \"\";\n    position: absolute;\n    left: -27px; top: 4px;\n    width: 12px; height: 12px;\n    background: var(--card);\n    border: 3px solid var(--accent);\n    border-radius: 50%;\n    box-shadow: 0 0 0 4px var(--soft);\n  }\n  .tl-item.done::before { background: var(--accent); }\n  .tl-item .time {\n    font: 700 11px ui-monospace, monospace;\n    letter-spacing: 0.08em;\n    color: var(--accent);\n    margin-bottom: 4px;\n  }\n  .tl-item .ttl { font-size: 14px; font-weight: 750; color: var(--ink); }\n  .tl-item .desc { font-size: 13.5px; color: var(--ink-2); margin: 3px 0 0; line-height: 1.6; }\n\n  /* Feature list */\n  .feature-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n    margin: 14px 0;\n  }\n  .feat {\n    background: var(--card);\n    border: 1px solid var(--hair);\n    border-radius: 12px;\n    padding: 16px;\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n  }\n  .feat .head {\n    display: flex; align-items: center; gap: 10px;\n    font-weight: 750; font-size: 14px; color: var(--ink);\n  }\n  .feat .head i {\n    width: 28px; height: 28px;\n    display: grid; place-items: center;\n    background: var(--soft);\n    border-radius: 8px;\n    color: var(--accent);\n    flex: none;\n  }\n  .feat p { font-size: 13px; line-height: 1.65; margin: 0; }\n  .feat .badge {\n    align-self: flex-start;\n    font: 700 10.5px ui-monospace, monospace;\n    letter-spacing: 0.06em;\n    padding: 4px 8px;\n    border-radius: 999px;\n    background: var(--soft);\n    color: var(--accent);\n    border: 1px solid var(--hair);\n  }\n\n  /* Quote */\n  .quote {\n    margin: 22px 0;\n    padding: 18px 18px 16px;\n    background: var(--card);\n    border: 1px solid var(--hair);\n    border-radius: 14px;\n    box-shadow: var(--shadow);\n    position: relative;\n  }\n  .quote::before {\n    content: \"“\";\n    position: absolute;\n    top: -10px; left: 16px;\n    font-size: 36px;\n    line-height: 1;\n    color: var(--accent);\n    background: var(--paper);\n    padding: 0 6px;\n    font-family: Georgia, serif;\n  }\n  .quote p { font-size: 14.5px; color: var(--ink); font-weight: 500; margin: 0; line-height: 1.7; }\n  .quote .by { margin-top: 8px; font: 600 12px ui-monospace, monospace; color: var(--ink-2); letter-spacing: 0.04em; }\n\n  /* Footer */\n  .footer {\n    margin-top: 30px;\n    padding-top: 18px;\n    border-top: 1px solid var(--hair);\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .footer .left { font: 600 12px ui-monospace, monospace; color: var(--ink-2); letter-spacing: 0.04em; }\n  .footer .tags { display: flex; gap: 8px; flex-wrap: wrap; }\n  .footer .tags span {\n    font: 700 11px ui-monospace, monospace;\n    padding: 6px 10px;\n    border-radius: 999px;\n    background: var(--soft);\n    border: 1px solid var(--hair);\n    color: var(--ink-2);\n  }\n\n  @media (max-width: 640px) {\n    .hero { padding: 24px 18px 22px; }\n    .content { padding: 22px 18px 0; }\n    h1 { font-size: 22px; max-width: none; }\n    .stats { grid-template-columns: 1fr; }\n    .pain-grid, .feature-grid { grid-template-columns: 1fr; }\n  }\n\u003c/style\u003e\n\u003cdiv class=\"doc\"\u003e\n  \u003cheader class=\"hero\"\u003e\n    \u003cdiv class=\"eyebrow\"\u003eCubeLV Plugin · 為愛發電\u003c/div\u003e\n    \u003ch1\u003e因為女友是個超級追劇迷，為了讓她的追劇時光更順暢，沒有意外的……我又手癢寫了一個「追劇專用」的CubeLV插件啦！😂\u003c/h1\u003e\n    \u003cp class=\"lede\"\u003e秉持 \u003cstrong\u003e「不花錢，但要有好體驗」\u003c/strong\u003e 的原則，把滿天飛的廣告、彈窗和複雜操作全部打包收走 — 留給她的，只剩下按一下就能看的清爽追劇時光。\u003c/p\u003e\n    \u003cdiv class=\"hero-meta\"\u003e\n      \u003cspan class=\"meta-pill\"\u003e\u003cb\u003e#\u003c/b\u003e CubeLV 插件\u003c/span\u003e\n      \u003cspan class=\"meta-pill\"\u003e\u003cb\u003e⏱\u003c/b\u003e 約 1 小時搞定雛形\u003c/span\u003e\n      \u003cspan class=\"meta-pill\"\u003e\u003cb\u003e♥\u003c/b\u003e 為愛發電專案\u003c/span\u003e\n    \u003c/div\u003e\n  \u003c/header\u003e\n\n  \u003cdiv class=\"content\"\u003e\n    \u003csection data-cube=\"stats\" class=\"stats\"\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"k\"\u003e開發時間\u003c/div\u003e\n        \u003cdiv class=\"v\"\u003e1 \u003csmall\u003ehr+\u003c/small\u003e\u003c/div\u003e\n        \u003cdiv class=\"n\"\u003e從零到可正常運作的雛形\u003c/div\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"k\"\u003e已支援站點\u003c/div\u003e\n        \u003cdiv class=\"v\"\u003e2 \u003csmall\u003e個\u003c/small\u003e\u003c/div\u003e\n        \u003cdiv class=\"n\"\u003e後續可隨需求持續擴充\u003c/div\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"k\"\u003e觀影體驗\u003c/div\u003e\n        \u003cdiv class=\"v\"\u003e0 \u003csmall\u003e干擾\u003c/small\u003e\u003c/div\u003e\n        \u003cdiv class=\"n\"\u003e無彈窗、無雜亂廣告\u003c/div\u003e\n      \u003c/div\u003e\n    \u003c/section\u003e\n\n    \u003cdiv class=\"callout\"\u003e\n      \u003cspan class=\"tag\"\u003eTL;DR\u003c/span\u003e\n      \u003cdiv\u003e女友追劇常被免費網站的廣告轟炸 → 工程師男友花 1 小時客製 CubeLV 插件 → \u003cspan\u003e自動處理播放問題、精簡介面，兩個網站已上線，體驗清爽到可以無腦追劇。\u003c/span\u003e\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003ch2\u003e\u003cspan class=\"num\"\u003e01\u003c/span\u003e 為什麼要自己寫一個？\u003c/h2\u003e\n    \u003cp\u003e免費追劇網站雖然資源多，但對不熟悉電腦操作的人來說，根本是場考驗：點一下播放，先彈三個視窗；想關廣告，又怕點到奇怪的連結。與其每次都要遠端救援，不如直接把體驗做好。\u003c/p\u003e\n\n    \u003cdiv class=\"pain-grid\"\u003e\n      \u003cdiv class=\"pain-card\"\u003e\n        \u003cdiv class=\"icon\"\u003e\n          \u003csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"/\u003e\u003cline x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"/\u003e\u003cline x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"/\u003e\u003c/svg\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"t\"\u003e廣告滿天飛\u003c/div\u003e\n        \u003cp class=\"d\"\u003e彈出視窗、懸浮廣告、自動跳轉，畫面密密麻麻還會誤觸。\u003c/p\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"pain-card\"\u003e\n        \u003cdiv class=\"icon\"\u003e\n          \u003csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003crect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/\u003e\u003cpath d=\"M9 9h6v6H9z\"/\u003e\u003cpath d=\"M9 3v6M15 3v6M9 15v6M15 15v6M3 9h6M3 15h6M15 9h6M15 15h6\"/\u003e\u003c/svg\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"t\"\u003e操作太複雜\u003c/div\u003e\n        \u003cp class=\"d\"\u003e按鈕太多、流程不直覺，對追劇只想「打開就看」的人很不友善。\u003c/p\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"pain-card muted\"\u003e\n        \u003cdiv class=\"icon\"\u003e\n          \u003csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/\u003e\u003c/svg\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"t\"\u003e想要的解法\u003c/div\u003e\n        \u003cp class=\"d\"\u003e不花錢，但要乾淨、穩定、好按。最好是「交給她就能自己用」。\u003c/p\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"pain-card\" style=\"background: var(--accent); border-color: var(--accent); color: white;\"\u003e\n        \u003cdiv class=\"icon\" style=\"background: rgba(255,255,255,0.18); color: white;\"\u003e\n          \u003csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/\u003e\u003c/svg\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"t\" style=\"color: white;\"\u003e工程師的回答\u003c/div\u003e\n        \u003cp class=\"d\" style=\"color: rgba(255,255,255,0.9);\"\u003e那就自己寫一個 CubeLV 插件吧。為她客製，最懂她的那種。\u003c/p\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003ch2\u003e\u003cspan class=\"num\"\u003e02\u003c/span\u003e 一小時的開發小記\u003c/h2\u003e\n    \u003cp\u003e前前後後大概一個多小時，就把可正常運作的雛形生出來了。過程不算一帆風順，尤其是幾個\u003cstrong\u003e棘手的影片播放問題\u003c/strong\u003e，一度讓人想去泡杯咖啡冷靜一下 —— 幸好最後都迎刃而解。\u003c/p\u003e\n\n    \u003cdiv class=\"timeline\"\u003e\n      \u003cdiv class=\"tl-item done\"\u003e\n        \u003cdiv class=\"time\"\u003e0 — 15 min · 動機與選站\u003c/div\u003e\n        \u003cdiv class=\"ttl\"\u003e鎖定最常看的兩個網站\u003c/div\u003e\n        \u003cdiv class=\"desc\"\u003e先解決 80% 的日常需求，不貪多。把最常用的兩個來源優先接好，確保搜尋、選集、播放都能一鍵直達。\u003c/div\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"tl-item done\"\u003e\n        \u003cdiv class=\"time\"\u003e15 — 45 min · 核心實作\u003c/div\u003e\n        \u003cdiv class=\"ttl\"\u003e與影片播放問題搏鬥\u003c/div\u003e\n        \u003cdiv class=\"desc\"\u003e處理播放器解析、跳轉與廣告攔截。把彈窗、懸浮層、自動跳轉全部擋掉，只留下乾淨的播放器。\u003c/div\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"tl-item\"\u003e\n        \u003cdiv class=\"time\"\u003e45 — 70 min · 打磨體驗\u003c/div\u003e\n        \u003cdiv class=\"ttl\"\u003e雛形完成，交給首席體驗官\u003c/div\u003e\n        \u003cdiv class=\"desc\"\u003e簡化操作流程、優化載入穩定度。女友實測：「終於不用每次都叫你來按了！」任務達成 🎉\u003c/div\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003ch2\u003e\u003cspan class=\"num\"\u003e03\u003c/span\u003e 這個插件做了什麼？\u003c/h2\u003e\n    \u003cdiv class=\"feature-grid\"\u003e\n      \u003cdiv class=\"feat\"\u003e\n        \u003cdiv class=\"head\"\u003e\n          \u003ci\u003e\u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\u003e\u003cpolygon points=\"5 3 19 12 5 21 5 3\"/\u003e\u003c/svg\u003e\u003c/i\u003e\n          清爽播放\n        \u003c/div\u003e\n        \u003cp\u003e自動處理廣告與彈窗，點開即播，不用在廣告海中尋找真正的播放鍵。\u003c/p\u003e\n        \u003cspan class=\"badge\"\u003e✓ 已上線\u003c/span\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"feat\"\u003e\n        \u003cdiv class=\"head\"\u003e\n          \u003ci\u003e\u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\u003e\u003crect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\"/\u003e\u003cpath d=\"M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\"/\u003e\u003c/svg\u003e\u003c/i\u003e\n          極簡操作\n        \u003c/div\u003e\n        \u003cp\u003e為不熟悉電腦的人設計，搜尋、選集、播放流程精簡到最少步驟。\u003c/p\u003e\n        \u003cspan class=\"badge\"\u003e✓ 已上線\u003c/span\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"feat\"\u003e\n        \u003cdiv class=\"head\"\u003e\n          \u003ci\u003e\u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/\u003e\u003cpath d=\"M9 12l2 2 4-4\"/\u003e\u003c/svg\u003e\u003c/i\u003e\n          穩定解析\n        \u003c/div\u003e\n        \u003cp\u003e針對棘手的播放問題做相容處理，提升不同片源的播放成功率。\u003c/p\u003e\n        \u003cspan class=\"badge\"\u003e✓ 已上線\u003c/span\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"feat\" style=\"background: var(--soft); border-style: dashed;\"\u003e\n        \u003cdiv class=\"head\"\u003e\n          \u003ci style=\"background: var(--card);\"\u003e\u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/\u003e\u003c/svg\u003e\u003c/i\u003e\n          持續擴充\n        \u003c/div\u003e\n        \u003cp\u003e目前支援 2 個網站，之後有需要會慢慢加。架構已留好擴充空間。\u003c/p\u003e\n        \u003cspan class=\"badge\" style=\"background: var(--card);\"\u003eROADMAP\u003c/span\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"quote\"\u003e\n      \u003cp\u003e與其教她怎麼關掉十個廣告，不如讓廣告從來沒出現過。這就是工程師的浪漫吧 — 把複雜留給自己，把簡單留給她。\u003c/p\u003e\n      \u003cdiv class=\"by\"\u003e— 來自一位為愛發電的 CubeLV 開發者\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003ch2\u003e\u003cspan class=\"num\"\u003e04\u003c/span\u003e 純粹分享，祝你也追得開心\u003c/h2\u003e\n    \u003cp\u003e這就是個小小的 side project，沒有要做多大，就是想讓她的追劇時光更順暢一點。如果你也在為家人、另一半找更清爽的追劇方式，或許這個思路可以參考：\u003cstrong\u003e不花錢，也能有好體驗\u003c/strong\u003e，關鍵是把體驗真的當一回事來做。\u003c/p\u003e\n    \u003cp\u003e之後如果有新增支援的網站或優化，會再慢慢更新。先祝大家都能有個無廣告、無彈窗、只剩下劇情的追劇夜！🎬✨\u003c/p\u003e\n\n    \u003cdiv class=\"footer\"\u003e\n      \u003cdiv class=\"left\"\u003eCubeLV · Drama Plugin · Built with ♥\u003c/div\u003e\n      \u003cdiv class=\"tags\"\u003e\n        \u003cspan\u003e#追劇\u003c/span\u003e\n        \u003cspan\u003e#CubeLV\u003c/span\u003e\n        \u003cspan\u003e#為愛發電\u003c/span\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/div\u003e\n\u003c/div\u003e","content":"因為女友是個超級追劇迷，為了讓她的追劇時光更順暢，沒有意外的……我又手癢寫了一個「追劇專用」的CubeLV插件啦！😂\n\n​大家都知道現在免費追劇網站很多，但廣告真的滿天飛。對不太熟悉電腦操作的人來說，光是看到密密麻麻的彈出視窗跟五花八門的網頁，可能就先心累一半了。秉持著「不花錢但要有好體驗」的原則，我決定直接替她客製化一個！\n\n​前前後後大概花了一個多小時，就順利搞定了可以正常運作的雛形。雖然中途跟幾個棘手的影片播放問題搏鬥了一下，幸好最後都順利迎刃而解。目前這個插件已經支援兩個網站，之後如果有需要會再慢慢擴充。純粹分享一下這個為愛發電的小專案，祝大家都能有清爽的追劇體驗！🎬","createdAt":1788347893503,"embedRenders":{},"id":"6a9805ca13033dd231a3fbe9","imgURLs":[],"isPublic":true,"itemType":"POST","name":"因為女友是個超級追劇迷，為了讓她的追劇時光更順暢，沒有意外的……我又手癢寫了一個「追劇專用」的CubeLV插件啦！😂","parents":{"community":1788347893503},"publishedAt":1788347893503,"updatedAt":1788347893503,"updatedBy":{"userId":"6a46f1f3013d79e6f40868","userName":"平凡人"},"version":1},"ownerName":"平凡人","subtree":[{"artifactHtml":"\u003cstyle\u003e\n  :root {\n    --paper:#FFF9F7;\n    --ink:#1E1416;\n    --ink-2:#7A6A6E;\n    --accent:#E84362;\n    --accent-2:#FF6B8A;\n    --soft:#FFF0F2;\n    --soft-2:#FFE4E8;\n    --hair:#ECD9DD;\n    --card:#FFFFFF;\n    --shadow: 0 8px 32px rgba(232,67,98,0.08), 0 1px 3px rgba(30,20,22,0.06);\n  }\n  :root[data-theme=\"dark\"] {\n    --paper:#141011;\n    --ink:#FBE9ED;\n    --ink-2:#C2AEB3;\n    --accent:#FF7A94;\n    --accent-2:#FF8FA8;\n    --soft:#24151A;\n    --soft-2:#2E1C22;\n    --hair:#3A2A2E;\n    --card:#1E1517;\n    --shadow: 0 8px 32px rgba(0,0,0,0.4), 0 1px 3px rgba(0,0,0,0.3);\n  }\n  .doc {\n    background: var(--paper);\n    color: var(--ink);\n    padding: 0 0 40px 0;\n    font: 16px/1.78 -apple-system, BlinkMacSystemFont, \"PingFang TC\", \"Noto Sans TC\", \"Microsoft JhengHei\", sans-serif;\n    letter-spacing: 0.01em;\n  }\n  .doc * { box-sizing: border-box; }\n  /* Header Hero */\n  .hero {\n    background: linear-gradient(180deg, var(--soft) 0%, var(--paper) 100%);\n    border-bottom: 1px solid var(--hair);\n    padding: 32px 32px 28px;\n  }\n  .eyebrow {\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    font: 700 11px ui-monospace, SFMono-Regular, Menlo, monospace;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    color: var(--accent);\n  }\n  .eyebrow::before {\n    content: \"\";\n    width: 22px; height: 2px;\n    background: var(--accent);\n    border-radius: 999px;\n    opacity: 0.9;\n  }\n  h1 {\n    font-size: 28px;\n    line-height: 1.32;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin: 14px 0 0;\n    max-width: 22ch;\n    text-wrap: balance;\n  }\n  .lede {\n    margin: 14px 0 0;\n    color: var(--ink-2);\n    font-size: 15.5px;\n    line-height: 1.7;\n    max-width: 58ch;\n  }\n  .lede strong { color: var(--ink); font-weight: 700; }\n  .hero-meta {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-top: 18px;\n  }\n  .meta-pill {\n    display: inline-flex;\n    align-items: center;\n    gap: 6px;\n    font: 600 12px ui-monospace, monospace;\n    letter-spacing: 0.04em;\n    padding: 7px 11px;\n    border-radius: 999px;\n    background: var(--card);\n    border: 1px solid var(--hair);\n    color: var(--ink-2);\n    box-shadow: 0 1px 2px rgba(0,0,0,0.04);\n  }\n  .meta-pill b { color: var(--accent); font-weight: 800; }\n\n  /* Content wrapper */\n  .content { padding: 28px 32px 0; max-width: 780px; }\n\n  /* Stats */\n  .stats {\n    display: grid;\n    grid-template-columns: repeat(3, 1fr);\n    gap: 12px;\n    margin: 0 0 26px;\n  }\n  .stat {\n    background: var(--card);\n    border: 1px solid var(--hair);\n    border-radius: 14px;\n    padding: 14px 14px 12px;\n    box-shadow: var(--shadow);\n    position: relative;\n    overflow: hidden;\n  }\n  .stat::after {\n    content: \"\";\n    position: absolute;\n    top: -18px; right: -18px;\n    width: 56px; height: 56px;\n    background: var(--soft);\n    border-radius: 50%;\n    opacity: 0.9;\n  }\n  .stat .k {\n    font: 700 11px ui-monospace, monospace;\n    letter-spacing: 0.08em;\n    color: var(--accent);\n    position: relative;\n    z-index: 1;\n  }\n  .stat .v {\n    font-size: 26px;\n    font-weight: 800;\n    letter-spacing: -0.03em;\n    margin-top: 6px;\n    position: relative;\n    z-index: 1;\n    line-height: 1.1;\n  }\n  .stat .v small { font-size: 14px; font-weight: 700; color: var(--ink-2); margin-left: 2px; }\n  .stat .n {\n    font-size: 12.5px;\n    color: var(--ink-2);\n    margin-top: 4px;\n    line-height: 1.5;\n    position: relative;\n    z-index: 1;\n  }\n\n  h2 {\n    font-size: 18px;\n    font-weight: 800;\n    letter-spacing: -0.02em;\n    margin: 32px 0 12px;\n    display: flex;\n    align-items: center;\n    gap: 10px;\n  }\n  h2 .num {\n    flex: none;\n    width: 26px; height: 26px;\n    display: grid; place-items: center;\n    background: var(--accent);\n    color: white;\n    border-radius: 8px;\n    font: 800 12px ui-monospace, monospace;\n  }\n  :root[data-theme=\"dark\"] h2 .num { color: #1A0A0E; }\n  h3 { font-size: 15px; font-weight: 750; margin: 18px 0 8px; letter-spacing: -0.01em; }\n  p { color: var(--ink-2); margin: 0 0 14px; max-width: 62ch; }\n  p b, p strong { color: var(--ink); }\n\n  /* Callout */\n  .callout {\n    display: flex;\n    gap: 14px;\n    padding: 16px 16px;\n    background: var(--soft);\n    border: 1px solid var(--hair);\n    border-left: 3px solid var(--accent);\n    border-radius: 10px;\n    margin: 20px 0;\n  }\n  .callout .tag {\n    flex: none;\n    font: 800 11px ui-monospace, monospace;\n    letter-spacing: 0.08em;\n    color: var(--accent);\n    background: var(--card);\n    border: 1px solid var(--hair);\n    padding: 4px 8px;\n    border-radius: 999px;\n    height: fit-content;\n    margin-top: 1px;\n  }\n  .callout div { font-size: 14.5px; line-height: 1.65; color: var(--ink); }\n  .callout div span { color: var(--ink-2); }\n\n  /* Pain grid */\n  .pain-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n    margin: 14px 0 6px;\n  }\n  .pain-card {\n    background: var(--card);\n    border: 1px solid var(--hair);\n    border-radius: 12px;\n    padding: 14px 14px 13px;\n    box-shadow: var(--shadow);\n  }\n  .pain-card .icon {\n    width: 32px; height: 32px;\n    border-radius: 9px;\n    display: grid; place-items: center;\n    background: var(--soft);\n    color: var(--accent);\n    margin-bottom: 10px;\n  }\n  .pain-card .t { font-size: 13.5px; font-weight: 750; color: var(--ink); margin-bottom: 4px; }\n  .pain-card .d { font-size: 12.8px; line-height: 1.6; color: var(--ink-2); margin: 0; }\n  .pain-card.muted { background: var(--soft); border-style: dashed; }\n  .pain-card.muted .icon { background: var(--card); }\n\n  /* Timeline */\n  .timeline {\n    position: relative;\n    margin: 16px 0 0;\n    padding-left: 22px;\n    border-left: 2px dashed var(--hair);\n  }\n  .tl-item {\n    position: relative;\n    padding: 0 0 18px 18px;\n  }\n  .tl-item:last-child { padding-bottom: 0; }\n  .tl-item::before {\n    content: \"\";\n    position: absolute;\n    left: -27px; top: 4px;\n    width: 12px; height: 12px;\n    background: var(--card);\n    border: 3px solid var(--accent);\n    border-radius: 50%;\n    box-shadow: 0 0 0 4px var(--soft);\n  }\n  .tl-item.done::before { background: var(--accent); }\n  .tl-item .time {\n    font: 700 11px ui-monospace, monospace;\n    letter-spacing: 0.08em;\n    color: var(--accent);\n    margin-bottom: 4px;\n  }\n  .tl-item .ttl { font-size: 14px; font-weight: 750; color: var(--ink); }\n  .tl-item .desc { font-size: 13.5px; color: var(--ink-2); margin: 3px 0 0; line-height: 1.6; }\n\n  /* Feature list */\n  .feature-grid {\n    display: grid;\n    grid-template-columns: 1fr 1fr;\n    gap: 12px;\n    margin: 14px 0;\n  }\n  .feat {\n    background: var(--card);\n    border: 1px solid var(--hair);\n    border-radius: 12px;\n    padding: 16px;\n    display: flex;\n    flex-direction: column;\n    gap: 8px;\n  }\n  .feat .head {\n    display: flex; align-items: center; gap: 10px;\n    font-weight: 750; font-size: 14px; color: var(--ink);\n  }\n  .feat .head i {\n    width: 28px; height: 28px;\n    display: grid; place-items: center;\n    background: var(--soft);\n    border-radius: 8px;\n    color: var(--accent);\n    flex: none;\n  }\n  .feat p { font-size: 13px; line-height: 1.65; margin: 0; }\n  .feat .badge {\n    align-self: flex-start;\n    font: 700 10.5px ui-monospace, monospace;\n    letter-spacing: 0.06em;\n    padding: 4px 8px;\n    border-radius: 999px;\n    background: var(--soft);\n    color: var(--accent);\n    border: 1px solid var(--hair);\n  }\n\n  /* Quote */\n  .quote {\n    margin: 22px 0;\n    padding: 18px 18px 16px;\n    background: var(--card);\n    border: 1px solid var(--hair);\n    border-radius: 14px;\n    box-shadow: var(--shadow);\n    position: relative;\n  }\n  .quote::before {\n    content: \"“\";\n    position: absolute;\n    top: -10px; left: 16px;\n    font-size: 36px;\n    line-height: 1;\n    color: var(--accent);\n    background: var(--paper);\n    padding: 0 6px;\n    font-family: Georgia, serif;\n  }\n  .quote p { font-size: 14.5px; color: var(--ink); font-weight: 500; margin: 0; line-height: 1.7; }\n  .quote .by { margin-top: 8px; font: 600 12px ui-monospace, monospace; color: var(--ink-2); letter-spacing: 0.04em; }\n\n  /* Footer */\n  .footer {\n    margin-top: 30px;\n    padding-top: 18px;\n    border-top: 1px solid var(--hair);\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    align-items: center;\n    justify-content: space-between;\n  }\n  .footer .left { font: 600 12px ui-monospace, monospace; color: var(--ink-2); letter-spacing: 0.04em; }\n  .footer .tags { display: flex; gap: 8px; flex-wrap: wrap; }\n  .footer .tags span {\n    font: 700 11px ui-monospace, monospace;\n    padding: 6px 10px;\n    border-radius: 999px;\n    background: var(--soft);\n    border: 1px solid var(--hair);\n    color: var(--ink-2);\n  }\n\n  @media (max-width: 640px) {\n    .hero { padding: 24px 18px 22px; }\n    .content { padding: 22px 18px 0; }\n    h1 { font-size: 22px; max-width: none; }\n    .stats { grid-template-columns: 1fr; }\n    .pain-grid, .feature-grid { grid-template-columns: 1fr; }\n  }\n\u003c/style\u003e\n\u003cdiv class=\"doc\"\u003e\n  \u003cheader class=\"hero\"\u003e\n    \u003cdiv class=\"eyebrow\"\u003eCubeLV Plugin · 為愛發電\u003c/div\u003e\n    \u003ch1\u003e因為女友是個超級追劇迷，為了讓她的追劇時光更順暢，沒有意外的……我又手癢寫了一個「追劇專用」的CubeLV插件啦！😂\u003c/h1\u003e\n    \u003cp class=\"lede\"\u003e秉持 \u003cstrong\u003e「不花錢，但要有好體驗」\u003c/strong\u003e 的原則，把滿天飛的廣告、彈窗和複雜操作全部打包收走 — 留給她的，只剩下按一下就能看的清爽追劇時光。\u003c/p\u003e\n    \u003cdiv class=\"hero-meta\"\u003e\n      \u003cspan class=\"meta-pill\"\u003e\u003cb\u003e#\u003c/b\u003e CubeLV 插件\u003c/span\u003e\n      \u003cspan class=\"meta-pill\"\u003e\u003cb\u003e⏱\u003c/b\u003e 約 1 小時搞定雛形\u003c/span\u003e\n      \u003cspan class=\"meta-pill\"\u003e\u003cb\u003e♥\u003c/b\u003e 為愛發電專案\u003c/span\u003e\n    \u003c/div\u003e\n  \u003c/header\u003e\n\n  \u003cdiv class=\"content\"\u003e\n    \u003csection data-cube=\"stats\" class=\"stats\"\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"k\"\u003e開發時間\u003c/div\u003e\n        \u003cdiv class=\"v\"\u003e1 \u003csmall\u003ehr+\u003c/small\u003e\u003c/div\u003e\n        \u003cdiv class=\"n\"\u003e從零到可正常運作的雛形\u003c/div\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"k\"\u003e已支援站點\u003c/div\u003e\n        \u003cdiv class=\"v\"\u003e2 \u003csmall\u003e個\u003c/small\u003e\u003c/div\u003e\n        \u003cdiv class=\"n\"\u003e後續可隨需求持續擴充\u003c/div\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"stat\"\u003e\n        \u003cdiv class=\"k\"\u003e觀影體驗\u003c/div\u003e\n        \u003cdiv class=\"v\"\u003e0 \u003csmall\u003e干擾\u003c/small\u003e\u003c/div\u003e\n        \u003cdiv class=\"n\"\u003e無彈窗、無雜亂廣告\u003c/div\u003e\n      \u003c/div\u003e\n    \u003c/section\u003e\n\n    \u003cdiv class=\"callout\"\u003e\n      \u003cspan class=\"tag\"\u003eTL;DR\u003c/span\u003e\n      \u003cdiv\u003e女友追劇常被免費網站的廣告轟炸 → 工程師男友花 1 小時客製 CubeLV 插件 → \u003cspan\u003e自動處理播放問題、精簡介面，兩個網站已上線，體驗清爽到可以無腦追劇。\u003c/span\u003e\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003ch2\u003e\u003cspan class=\"num\"\u003e01\u003c/span\u003e 為什麼要自己寫一個？\u003c/h2\u003e\n    \u003cp\u003e免費追劇網站雖然資源多，但對不熟悉電腦操作的人來說，根本是場考驗：點一下播放，先彈三個視窗；想關廣告，又怕點到奇怪的連結。與其每次都要遠端救援，不如直接把體驗做好。\u003c/p\u003e\n\n    \u003cdiv class=\"pain-grid\"\u003e\n      \u003cdiv class=\"pain-card\"\u003e\n        \u003cdiv class=\"icon\"\u003e\n          \u003csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003ccircle cx=\"12\" cy=\"12\" r=\"10\"/\u003e\u003cline x1=\"12\" y1=\"8\" x2=\"12\" y2=\"12\"/\u003e\u003cline x1=\"12\" y1=\"16\" x2=\"12.01\" y2=\"16\"/\u003e\u003c/svg\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"t\"\u003e廣告滿天飛\u003c/div\u003e\n        \u003cp class=\"d\"\u003e彈出視窗、懸浮廣告、自動跳轉，畫面密密麻麻還會誤觸。\u003c/p\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"pain-card\"\u003e\n        \u003cdiv class=\"icon\"\u003e\n          \u003csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003crect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\"/\u003e\u003cpath d=\"M9 9h6v6H9z\"/\u003e\u003cpath d=\"M9 3v6M15 3v6M9 15v6M15 15v6M3 9h6M3 15h6M15 9h6M15 15h6\"/\u003e\u003c/svg\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"t\"\u003e操作太複雜\u003c/div\u003e\n        \u003cp class=\"d\"\u003e按鈕太多、流程不直覺，對追劇只想「打開就看」的人很不友善。\u003c/p\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"pain-card muted\"\u003e\n        \u003cdiv class=\"icon\"\u003e\n          \u003csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/\u003e\u003c/svg\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"t\"\u003e想要的解法\u003c/div\u003e\n        \u003cp class=\"d\"\u003e不花錢，但要乾淨、穩定、好按。最好是「交給她就能自己用」。\u003c/p\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"pain-card\" style=\"background: var(--accent); border-color: var(--accent); color: white;\"\u003e\n        \u003cdiv class=\"icon\" style=\"background: rgba(255,255,255,0.18); color: white;\"\u003e\n          \u003csvg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"white\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\u003e\u003cpath d=\"M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z\"/\u003e\u003c/svg\u003e\n        \u003c/div\u003e\n        \u003cdiv class=\"t\" style=\"color: white;\"\u003e工程師的回答\u003c/div\u003e\n        \u003cp class=\"d\" style=\"color: rgba(255,255,255,0.9);\"\u003e那就自己寫一個 CubeLV 插件吧。為她客製，最懂她的那種。\u003c/p\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003ch2\u003e\u003cspan class=\"num\"\u003e02\u003c/span\u003e 一小時的開發小記\u003c/h2\u003e\n    \u003cp\u003e前前後後大概一個多小時，就把可正常運作的雛形生出來了。過程不算一帆風順，尤其是幾個\u003cstrong\u003e棘手的影片播放問題\u003c/strong\u003e，一度讓人想去泡杯咖啡冷靜一下 —— 幸好最後都迎刃而解。\u003c/p\u003e\n\n    \u003cdiv class=\"timeline\"\u003e\n      \u003cdiv class=\"tl-item done\"\u003e\n        \u003cdiv class=\"time\"\u003e0 — 15 min · 動機與選站\u003c/div\u003e\n        \u003cdiv class=\"ttl\"\u003e鎖定最常看的兩個網站\u003c/div\u003e\n        \u003cdiv class=\"desc\"\u003e先解決 80% 的日常需求，不貪多。把最常用的兩個來源優先接好，確保搜尋、選集、播放都能一鍵直達。\u003c/div\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"tl-item done\"\u003e\n        \u003cdiv class=\"time\"\u003e15 — 45 min · 核心實作\u003c/div\u003e\n        \u003cdiv class=\"ttl\"\u003e與影片播放問題搏鬥\u003c/div\u003e\n        \u003cdiv class=\"desc\"\u003e處理播放器解析、跳轉與廣告攔截。把彈窗、懸浮層、自動跳轉全部擋掉，只留下乾淨的播放器。\u003c/div\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"tl-item\"\u003e\n        \u003cdiv class=\"time\"\u003e45 — 70 min · 打磨體驗\u003c/div\u003e\n        \u003cdiv class=\"ttl\"\u003e雛形完成，交給首席體驗官\u003c/div\u003e\n        \u003cdiv class=\"desc\"\u003e簡化操作流程、優化載入穩定度。女友實測：「終於不用每次都叫你來按了！」任務達成 🎉\u003c/div\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003ch2\u003e\u003cspan class=\"num\"\u003e03\u003c/span\u003e 這個插件做了什麼？\u003c/h2\u003e\n    \u003cdiv class=\"feature-grid\"\u003e\n      \u003cdiv class=\"feat\"\u003e\n        \u003cdiv class=\"head\"\u003e\n          \u003ci\u003e\u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\u003e\u003cpolygon points=\"5 3 19 12 5 21 5 3\"/\u003e\u003c/svg\u003e\u003c/i\u003e\n          清爽播放\n        \u003c/div\u003e\n        \u003cp\u003e自動處理廣告與彈窗，點開即播，不用在廣告海中尋找真正的播放鍵。\u003c/p\u003e\n        \u003cspan class=\"badge\"\u003e✓ 已上線\u003c/span\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"feat\"\u003e\n        \u003cdiv class=\"head\"\u003e\n          \u003ci\u003e\u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\u003e\u003crect x=\"2\" y=\"7\" width=\"20\" height=\"14\" rx=\"2\"/\u003e\u003cpath d=\"M16 7V5a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2\"/\u003e\u003c/svg\u003e\u003c/i\u003e\n          極簡操作\n        \u003c/div\u003e\n        \u003cp\u003e為不熟悉電腦的人設計，搜尋、選集、播放流程精簡到最少步驟。\u003c/p\u003e\n        \u003cspan class=\"badge\"\u003e✓ 已上線\u003c/span\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"feat\"\u003e\n        \u003cdiv class=\"head\"\u003e\n          \u003ci\u003e\u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\u003e\u003cpath d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"/\u003e\u003cpath d=\"M9 12l2 2 4-4\"/\u003e\u003c/svg\u003e\u003c/i\u003e\n          穩定解析\n        \u003c/div\u003e\n        \u003cp\u003e針對棘手的播放問題做相容處理，提升不同片源的播放成功率。\u003c/p\u003e\n        \u003cspan class=\"badge\"\u003e✓ 已上線\u003c/span\u003e\n      \u003c/div\u003e\n      \u003cdiv class=\"feat\" style=\"background: var(--soft); border-style: dashed;\"\u003e\n        \u003cdiv class=\"head\"\u003e\n          \u003ci style=\"background: var(--card);\"\u003e\u003csvg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"\u003e\u003cline x1=\"12\" y1=\"5\" x2=\"12\" y2=\"19\"/\u003e\u003cline x1=\"5\" y1=\"12\" x2=\"19\" y2=\"12\"/\u003e\u003c/svg\u003e\u003c/i\u003e\n          持續擴充\n        \u003c/div\u003e\n        \u003cp\u003e目前支援 2 個網站，之後有需要會慢慢加。架構已留好擴充空間。\u003c/p\u003e\n        \u003cspan class=\"badge\" style=\"background: var(--card);\"\u003eROADMAP\u003c/span\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003cdiv class=\"quote\"\u003e\n      \u003cp\u003e與其教她怎麼關掉十個廣告，不如讓廣告從來沒出現過。這就是工程師的浪漫吧 — 把複雜留給自己，把簡單留給她。\u003c/p\u003e\n      \u003cdiv class=\"by\"\u003e— 來自一位為愛發電的 CubeLV 開發者\u003c/div\u003e\n    \u003c/div\u003e\n\n    \u003ch2\u003e\u003cspan class=\"num\"\u003e04\u003c/span\u003e 純粹分享，祝你也追得開心\u003c/h2\u003e\n    \u003cp\u003e這就是個小小的 side project，沒有要做多大，就是想讓她的追劇時光更順暢一點。如果你也在為家人、另一半找更清爽的追劇方式，或許這個思路可以參考：\u003cstrong\u003e不花錢，也能有好體驗\u003c/strong\u003e，關鍵是把體驗真的當一回事來做。\u003c/p\u003e\n    \u003cp\u003e之後如果有新增支援的網站或優化，會再慢慢更新。先祝大家都能有個無廣告、無彈窗、只剩下劇情的追劇夜！🎬✨\u003c/p\u003e\n\n    \u003cdiv class=\"footer\"\u003e\n      \u003cdiv class=\"left\"\u003eCubeLV · Drama Plugin · Built with ♥\u003c/div\u003e\n      \u003cdiv class=\"tags\"\u003e\n        \u003cspan\u003e#追劇\u003c/span\u003e\n        \u003cspan\u003e#CubeLV\u003c/span\u003e\n        \u003cspan\u003e#為愛發電\u003c/span\u003e\n      \u003c/div\u003e\n    \u003c/div\u003e\n  \u003c/div\u003e\n\u003c/div\u003e","content":"因為女友是個超級追劇迷，為了讓她的追劇時光更順暢，沒有意外的……我又手癢寫了一個「追劇專用」的CubeLV插件啦！😂\n\n​大家都知道現在免費追劇網站很多，但廣告真的滿天飛。對不太熟悉電腦操作的人來說，光是看到密密麻麻的彈出視窗跟五花八門的網頁，可能就先心累一半了。秉持著「不花錢但要有好體驗」的原則，我決定直接替她客製化一個！\n\n​前前後後大概花了一個多小時，就順利搞定了可以正常運作的雛形。雖然中途跟幾個棘手的影片播放問題搏鬥了一下，幸好最後都順利迎刃而解。目前這個插件已經支援兩個網站，之後如果有需要會再慢慢擴充。純粹分享一下這個為愛發電的小專案，祝大家都能有清爽的追劇體驗！🎬","createdAt":1788347893503,"embedRenders":{},"id":"6a9805ca13033dd231a3fbe9","imgURLs":[],"isPublic":true,"itemType":"POST","name":"因為女友是個超級追劇迷，為了讓她的追劇時光更順暢，沒有意外的……我又手癢寫了一個「追劇專用」的CubeLV插件啦！😂","parents":{"community":1788347893503},"publishedAt":1788347893503,"updatedAt":1788347893503,"updatedBy":{"userId":"6a46f1f3013d79e6f40868","userName":"平凡人"},"version":1},{"content":"追劇好幫手啊","createdAt":1788392509304,"hidden":false,"humanAuthorID":"6a98b343024eecff061b82","id":"4fd7e274b591b8b353dc2b95","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788392509304},"rating":0,"updatedAt":1788392509304,"version":1,"videoURLs":[]},{"content":"強","createdAt":1788394084958,"hidden":false,"humanAuthorID":"6a98b9f7016339753fbc72","id":"de8536df686db00627fcdaae","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788394084958},"rating":0,"updatedAt":1788394084958,"version":1,"videoURLs":[]},{"content":"第一次使用這個平台 謝謝分享","createdAt":1788394142492,"hidden":false,"humanAuthorID":"6a98b92c00a227683eff2f","id":"1be690ad86bd8a4ae07744a0","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788394142492},"rating":0,"updatedAt":1788394142492,"version":1,"videoURLs":[]},{"content":"希望價格再優惠","createdAt":1788394665193,"hidden":false,"humanAuthorID":"6a3f17e101adf188230ed9","id":"02de1166f049dcac1c14aaf9","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788394665193},"rating":0,"updatedAt":1788394665193,"version":1,"videoURLs":[]},{"content":"感謝您","createdAt":1788395157622,"hidden":false,"humanAuthorID":"6a98bd9201efc8da999d8b","id":"2c03014d93113739494d9eba","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788395157622},"rating":0,"updatedAt":1788395157622,"version":1,"videoURLs":[]},{"content":"太聰明的方式! 趕緊來摸索","createdAt":1788395611740,"hidden":false,"humanAuthorID":"6a98bfc60088a7e55b62cd","id":"a4592adc406ae6dfd58861f8","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788395611740},"rating":0,"updatedAt":1788395611740,"version":1,"videoURLs":[]},{"content":"請問如何操作，這平台不太會用 😂","createdAt":1788396025460,"hidden":false,"humanAuthorID":"6a98bd9201efc8da999d8b","id":"71fc6bd4b42af6121ebb63e2","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788396025460},"rating":0,"updatedAt":1788396025460,"version":1,"videoURLs":[]},{"content":"讚","createdAt":1788396192410,"hidden":false,"humanAuthorID":"6a98bd220169975975a16b","id":"57caefef2cd6799b1cc470d8","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788396192410},"rating":0,"updatedAt":1788396192410,"version":1,"videoURLs":[]},{"content":"感謝🙏","createdAt":1788398983548,"hidden":false,"humanAuthorID":"6a98ccf200fc0ffcf8e29c","id":"7cc3095db0785b79c870d04b","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788398983548},"rating":0,"updatedAt":1788398983548,"version":1,"videoURLs":[]},{"content":"+1","createdAt":1788401068989,"hidden":false,"humanAuthorID":"6a98c75a00b28e2e43d59b","id":"4ce959f2f771b6d9cd41a70d","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788401068989},"rating":0,"updatedAt":1788401068989,"version":1,"videoURLs":[]},{"content":"感謝","createdAt":1788401178147,"hidden":false,"humanAuthorID":"6a98d5980204baa7cf7fb3","id":"c17f41196540fc59afc96ce9","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788401178147},"rating":0,"updatedAt":1788401178147,"version":1,"videoURLs":[]},{"content":"第一次使用，感謝分享","createdAt":1788402920751,"hidden":false,"humanAuthorID":"6a98d90802181a4ecc3a10","id":"19aae04fdd538f5b309d6ccc","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788402920751},"rating":0,"updatedAt":1788402920751,"version":1,"videoURLs":[]},{"content":"感謝分享","createdAt":1788406107370,"hidden":false,"humanAuthorID":"6a98e6930162f9ddc924bd","id":"6149b11307abd59e4eb1cf6d","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788406107370},"rating":0,"updatedAt":1788406107370,"version":1,"videoURLs":[]},{"content":"太恩愛了…（害羞","createdAt":1789487397553,"hidden":false,"humanAuthorID":"6a468afe0217f2757c6098","id":"54e794a5c7d2f93fcd1c3257","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1789487397553},"rating":0,"updatedAt":1789487397553,"updatedBy":{"userId":"6a468afe0217f2757c6098","userName":"小小世界"},"version":1,"videoURLs":[]},{"content":"期待分享","createdAt":1788422358788,"hidden":false,"humanAuthorID":"6a9926f000b03a8f4c3451","id":"f908f7f10e4c7fc23556d130","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"6a9805ca13033dd231a3fbe9":1788422358788},"rating":0,"updatedAt":1790135705844,"version":3,"videoURLs":[]},{"content":"一次買斷，終身服務，其實很划算了🫡","createdAt":1788394792511,"hidden":false,"humanAuthorID":"6a46f1f3013d79e6f40868","id":"888a8114ad3a2436c3f063d9","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"02de1166f049dcac1c14aaf9":1788394792511},"rating":0,"updatedAt":1788394792511,"version":1,"videoURLs":[]},{"content":"3Q","createdAt":1788394809603,"hidden":false,"humanAuthorID":"6a46f1f3013d79e6f40868","id":"4ae5d5de15559e028c6b7682","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"1be690ad86bd8a4ae07744a0":1788394809603},"rating":0,"updatedAt":1788394809603,"version":1,"videoURLs":[]},{"content":"😁","createdAt":1788394825530,"hidden":false,"humanAuthorID":"6a46f1f3013d79e6f40868","id":"e1e11f99747f5666526227f2","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"de8536df686db00627fcdaae":1788394825530},"rating":0,"updatedAt":1788394825530,"version":1,"videoURLs":[]},{"content":"👍","createdAt":1788394836112,"hidden":false,"humanAuthorID":"6a46f1f3013d79e6f40868","id":"18ba0eb34de2395c2ade8e40","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"4fd7e274b591b8b353dc2b95":1788394836112},"rating":0,"updatedAt":1788394836112,"version":1,"videoURLs":[]},{"content":"來到這裡了！不知怎麼玩😁","createdAt":1788401333243,"hidden":false,"humanAuthorID":"6a98c75a00b28e2e43d59b","id":"63218cd260f61b878ab276b9","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"4ce959f2f771b6d9cd41a70d":1788401333243},"rating":0,"updatedAt":1788401333243,"version":1,"videoURLs":[]},{"content":"安太座無價.已購買","createdAt":1788394869441,"hidden":false,"humanAuthorID":"6a3f17e101adf188230ed9","id":"40ab70408251a26cef6674cc","imgURLs":[],"itemType":"COMMENT","likeCount":0,"name":"","parents":{"888a8114ad3a2436c3f063d9":1788394869441},"rating":0,"updatedAt":1788394869441,"version":1,"videoURLs":[]}]}