{"id":6159,"date":"2026-09-17T10:17:45","date_gmt":"2026-09-17T02:17:45","guid":{"rendered":"https:\/\/rubasseroasters.com\/?page_id=6159"},"modified":"2026-09-17T12:24:50","modified_gmt":"2026-09-17T04:24:50","slug":"ultimate-coffee-roast-guide-course-playlist-zh","status":"publish","type":"page","link":"https:\/\/rubasseroasters.com\/zh\/ultimate-coffee-roast-guide-course-playlist-zh\/","title":{"rendered":"\u5496\u5561\u70d8\u7119\u7d42\u6975\u6307\u5357 \u5f71\u7247\u8ab2\u7a0b\u5340"},"content":{"rendered":"\n\n<div class=\"wp-block-group alignfull rbs-play-page is-layout-flow wp-block-group-is-layout-flow\">\n<div class=\"wp-block-group alignfull rbs-play-setup is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading rbs-play-cfg-heading\">\u2699\ufe0f \u8a2d\u5b9a\u5340\uff08\u53ea\u6709\u9019\u4e00\u5340\u8981\u6539\uff0c\u524d\u53f0\u4e0d\u6703\u986f\u793a\uff09<\/h2>\n\n\n\n<p class=\"rbs-play-cfg-note wp-block-paragraph\">\u6bcf\u7d44\u8a2d\u5b9a\u6709\u5169\u884c\uff1a\u4e0a\u9762\u7070\u5b57\u662f\u8aaa\u660e\u3001\u4e0b\u9762\u662f\u300c\u503c\u300d\u3002\u8acb\u53ea\u4fee\u6539\u300c\u503c\u300d\u90a3\u4e00\u884c\uff0c\u8aaa\u660e\u90a3\u884c\u4e0d\u8981\u52d5\uff0c\u4e5f\u4e0d\u8981\u522a\u9664\u6216\u642c\u52d5\u4efb\u4f55\u4e00\u6bb5\u3002<\/p>\n\n\n\n<p class=\"rbs-play-cfg-note wp-block-paragraph\">\u5f71\u7247\u4e0d\u7528\u5728\u9019\u88e1\u586b\u3002\u7cfb\u7d71\u6703\u81ea\u52d5\u8b80\u6bcf\u7bc7\u6587\u7ae0\u5167\u6587\u88e1\u5d4c\u7684 YouTube \u5f71\u7247\uff0c\u6240\u4ee5\u4e4b\u5f8c\u65b0\u589e\u4e00\u96c6\uff0c\u9019\u9801\u6703\u81ea\u5df1\u591a\u4e00\u96c6\u3002<\/p>\n\n\n\n<div class=\"wp-block-group rbs-play-cfg-row rbs-play-cfg-row-main is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading rbs-play-cfg-row-title\">\u258a \u9019\u4e00\u9801\u8981\u64ad\u7684\u7cfb\u5217\uff1a\u5496\u5561\u70d8\u7119\u7d42\u6975\u6307\u5357<\/h3>\n\n\n\n<p class=\"rbs-play-cfg-label wp-block-paragraph\">\u2460 \u6587\u7ae0\u5206\u985e\u4ee3\u865f\uff08\u5206\u985e\u7db2\u5740\u6700\u5f8c\u4e00\u6bb5\uff09<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-cfg-cat wp-block-paragraph\">ultimate-coffee-roast-guide-course-zh<\/p>\n\n\n\n<p class=\"rbs-play-cfg-label wp-block-paragraph\">\u2461 \u9810\u8a2d\u5148\u64ad\u54ea\u4e00\u7bc7\uff08\u6587\u7ae0\u4ee3\u865f\uff0c\u7559\u7a7a\uff1d\u64ad\u7b2c\u4e00\u96c6\uff09<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-cfg-start wp-block-paragraph\">rubasse-roasting-online-course-ep-1-zh<\/p>\n\n\n\n<p class=\"rbs-play-cfg-label wp-block-paragraph\">\u2462 \u6392\u5e8f\u65b9\u5f0f\uff08\u586b \u8ab2\u7a0bEP \u6216 BH\u4e09\u7dda \u6216 \u4e00\u822c\uff09<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-cfg-order wp-block-paragraph\">\u8ab2\u7a0bEP<\/p>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull rbs-play-marks is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading rbs-play-cfg-heading\">\u23f1\ufe0f \u5f71\u7247\u91cd\u9ede\u5340\uff08timecode\uff0c\u524d\u53f0\u4e0d\u6703\u986f\u793a\uff09<\/h2>\n\n\n\n<p class=\"rbs-play-cfg-note wp-block-paragraph\">\u4e00\u884c\u4e00\u500b\u91cd\u9ede\uff0c\u683c\u5f0f\u662f\u300cEP\u7de8\u865f \u7a7a\u683c \u6642\u9593 \u7a7a\u683c \u91cd\u9ede\u540d\u7a31\u300d\uff0c\u4f8b\u5982\uff1aEP1 00:30 \u5f15\u8a00\u3002\u6642\u9593\u53ef\u4ee5\u5beb 00:30 \u6216 1:02:30\uff08\u8d85\u904e\u4e00\u5c0f\u6642\uff09\u3002<\/p>\n\n\n\n<p class=\"rbs-play-cfg-note wp-block-paragraph\">\u9806\u5e8f\u4e0d\u7528\u81ea\u5df1\u6392\uff0c\u7cfb\u7d71\u6703\u7167\u6642\u9593\u6392\u597d\u3002\u67d0\u4e00\u96c6\u5b8c\u5168\u6c92\u586b\uff0c\u90a3\u4e00\u96c6\u5c31\u81ea\u52d5\u986f\u793a\u539f\u672c\u7684\u6587\u7ae0\u6458\u8981\uff0c\u4e0d\u6703\u7a7a\u767d\u3002\u8981\u65b0\u589e\u5c31\u5728\u6700\u5f8c\u9762\u6309 Enter \u52a0\u4e00\u884c\u3002<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP1 00:25 \u8ab2\u7a0b\u7e3d\u89bd<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP1 01:04 \u6a23\u54c1\u70d8\u7119\u8207\u676f\u6e2c<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP1 01:26 \u7522\u5340\u8207\u8655\u7406\u6cd5\u7684\u5f71\u97ff<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP1 02:13 \u4ee5\u7cbe\u54c1\u5496\u5561\u70ba\u57fa\u6e96<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP1 02:57 \u548c\u5317\u6b50\u70d8\u7119\u7684\u95dc\u4fc2<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP2 00:25 \u6a23\u54c1\u70d8\u7119\u7684\u76ee\u7684<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP2 01:05 \u542b\u6c34\u7387 9~12%<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP2 02:33 \u91cf\u6c34\u5206\u8207\u5bc6\u5ea6<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP2 05:13 \u70d8\u7119\u53c3\u6578\u8a2d\u5b9a<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP2 06:31 \u5165\u8c46\uff0c8~9 \u5206\u9418\u70d8\u5b8c<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP2 09:12 \u4e09\u968e\u6bb5\u6642\u9593\u5206\u914d<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP2 10:04 \u8f49\u9ec3\u9ede\u5224\u65b7<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP2 14:03 \u5982\u4f55\u91cf\u6e2c\u7119\u5ea6<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP3 00:25 \u676f\u6e2c\u662f\u4ec0\u9ebc<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP3 01:14 \u676f\u6e2c\u7c89\u6c34\u6bd4<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP3 01:52 \u6c34\u8cea\u8207\u6c34\u6eab<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP3 03:17 \u6ce8\u6c34\u3001\u6d78\u6ce1 4 \u5206\u9418<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP3 04:19 \u7834\u6e23\u8207\u6488\u6e23<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP3 06:13 8 \u5206\u9418\u958b\u59cb\u559d<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP3 07:07 \u4e0d\u540c\u6eab\u5ea6\u8a55\u4ec0\u9ebc<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP4 00:25 \u4ec0\u9ebc\u662f\u70d8\u7119\u8a08\u756b<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP4 02:16 \u7528\u706b\u529b\u8abf\u7bc0\u70d8\u7119\u6642\u9577<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP4 02:56 A \u6bb5\uff1a\u7269\u7406\u53cd\u61c9<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP4 04:33 B \u6bb5\uff1a\u6885\u7d0d\u53cd\u61c9<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP4 05:20 C\u6bb5\uff1a\u767c\u5c55\u671f<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP4 06:20 \u6c7a\u5b9a\u7119\u5ea6<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP4 07:18 \u62ff\u820a\u66f2\u7dda\u7576\u53c3\u8003<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP5 00:25 \u54e5\u502b\u6bd4\u4e9e Supremo \u6c34\u6d17<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP5 01:00 \u751f\u8c46\u7279\u8272<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP5 01:57 \u98a8\u5473\u76ee\u6a19\u8207\u767c\u5c55\u671f<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP5 03:48 \u6392\u6fd5\u4e0b\u964d\u5c31\u964d\u706b<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP5 04:38 \u7e3d\u7d50<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP6 00:25 \u5370\u5c3c\u66fc\u7279\u5be7 \u6fd5\u525d<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP6 01:11 \u751f\u8c46\u7279\u8272<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP6 02:28 \u70ba\u4ec0\u9ebc\u505a\u4e2d\u6df1\u7119<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP6 03:05 \u7e3d\u6642\u959311\u5206<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP6 03:39 \u4e00\u7206\u524d\u4e0d\u52d5\u98a8\/\u706b<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP6 04:04 \u767c\u5c55\u671f2\u5206\u9418<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP6 04:18 \u6392\u6fd5\u9802\u5cf0\u5927\u5e45\u964d\u706b<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP6 04:57 \u7e3d\u7d50<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP7 00:25 \u80af\u4e9e AA Top \u6c34\u6d17<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP7 01:06 \u751f\u8c46\u7279\u8272<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP7 01:48 \u70ba\u4f55\u5e38\u770b\u5230\u6dfa\u4e2d\u7119<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP7 02:21 \u9019\u6b21\u6539\u505a\u6dfa\u7119<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP7 02:47 soaking \u624b\u6cd5<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP7 04:31 \u4e00\u7206\u5f8c\u52a0\u5927\u706b\u529b<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP7 05:27 \u98a8\u96aa\u8207\u9069\u7528\u689d\u4ef6<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP8 00:25 \u8863\u7d22\u6bd4\u4e9e\u6c34\u6d17\u7684\u98a8\u5473<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP8 01:08 \u6dfa\u7119\u7684\u66f2\u7dda\u8a2d\u5b9a<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP8 02:48 \u5c0f\u8c46\u76ee\u70d8\u7119\u8981\u9ede<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP8 04:28 \u4e00\u7206\u5f8c\u624d\u5927\u5e45\u6392\u6c34<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP8 05:20 \u706b\u529b\u592a\u4f4e\u6703\u767c\u5c55\u4e0d\u8db3<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP8 06:04 \u7d50\u675f\u6eab\u5ea6\u5225\u8d85 215 \u5ea6<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP9 00:25 \u54e5\u65af\u5927\u9ece\u52a0 \u856d\u90a6 \u871c\u8655\u7406<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP9 01:14 \u6a5f\u5668\u53c3\u6578\u8a2d\u5b9a<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP9 01:56 \u70ba\u4ec0\u9ebc\u8981\u70d8\u5f97\u5feb<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP9 02:46 \u812b\u6c34\u671f RoR 20~25<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP9 04:10 \u5225\u592a\u5e38\u63db\u8c46\u91cf<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP9 05:42 \u8f49\u9ec3\u9ede\u7279\u5225\u96e3\u5224<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP9 07:01 \u4e00\u7206\u5f8c\u63d0\u65e9\u964d\u706b<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP9 08:05 \u767c\u5c55 50 \u79d2\u6536\u6dfa\u7119<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 00:25 \u4e94\u652f\u719f\u8c46\u6e2c\u7c89\u8272<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 01:18 \u9010\u652f\u805e\u4e7e\u9999<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 02:14 \u6ce8\u6c34\uff0c\u8a55\u6fd5\u9999<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 04:20 \u7834\u6e23\uff0c\u958b\u59cb\u8a55\u98a8\u5473<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 06:28 \u80af\u4e9e\u8207\u856d\u90a6\u7684\u9178\u8cea<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 08:35 \u4e2d\u6eab\u8a55\u53e3\u611f\u8207\u751c\u611f<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 13:33 \u6709\u6c92\u6709\u70d8\u7119\u7455\u75b5<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 14:23 \u8981\u4e0d\u8981\u70ba\u5c3e\u97fb\u6539\u70d8\u7119<\/p>\n\n\n\n<p class=\"rbs-play-cfg-value rbs-play-mark-line wp-block-paragraph\">EP10 16:09 \u4f9d\u6c96\u716e\u65b9\u5f0f\u5b9a\u4f4d\u5546\u54c1<\/p>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull rbs-play-hero is-layout-flow wp-block-group-is-layout-flow\">\n<p class=\"rbs-play-crumb wp-block-paragraph\"><a href=\"https:\/\/rubasseroasters.com\/zh\/\">\u9996\u9801<\/a><span class=\"rbs-play-crumb-sep\">\u203a<\/span><a href=\"https:\/\/rubasseroasters.com\/zh\/ultimate-coffee-roast-guide-course-videos-zh\/\">\u5496\u5561\u70d8\u7119\u7d42\u6975\u6307\u5357<\/a><span class=\"rbs-play-crumb-sep\">\u203a<\/span><span class=\"rbs-play-crumb-now\">\u8ab2\u7a0b\u5f71\u7247<\/span><\/p>\n\n\n\n<p class=\"rbs-play-badge wp-block-paragraph\">\u7dda\u4e0a\u6559\u5b78\u5e73\u53f0<\/p>\n\n\n\n<h1 class=\"wp-block-heading rbs-play-title\">\u5496\u5561\u70d8\u7119\u7d42\u6975\u6307\u5357<\/h1>\n\n\n\n<p class=\"rbs-play-lead wp-block-paragraph\">\u5341\u652f\u5f71\u7247\u4f9d\u5e8f\u770b\u5b8c\uff0c\u5f9e\u8ab2\u7a0b\u4ecb\u7d39\u3001\u6a23\u54c1\u70d8\u7119\u3001\u676f\u6e2c\uff0c\u4e00\u8def\u5230\u4e94\u652f\u793a\u7bc4\u8c46\u7684\u5be6\u969b\u70d8\u7119\u8207\u6700\u5f8c\u5927\u676f\u6e2c\u3002<\/p>\n<\/div>\n\n\n\n<div class=\"rbs-play-stage\">\n<div class=\"rbs-play-main\">\n<div class=\"rbs-play-frame rbs-play-frame-empty\"><div>\u5f71\u7247\u64ad\u653e\u5668\u6703\u5728\u524d\u53f0\u81ea\u52d5\u8f09\u5165<\/div><\/div>\n<div class=\"rbs-play-info\"><span class=\"rbs-play-info-ep\">EP<\/span><h2 class=\"rbs-play-info-title\">\u8ab2\u7a0b\u5167\u5bb9\u6703\u5728\u524d\u53f0\u81ea\u52d5\u8f09\u5165<\/h2><p class=\"rbs-play-info-text\"><\/p><div class=\"rbs-play-chaps\" style=\"display:none\"><div class=\"rbs-play-chaps-head\">\u5f71\u7247\u91cd\u9ede<span class=\"rbs-play-chaps-count\"><\/span><span class=\"rbs-play-chaps-hint\">\u9ede\u6642\u9593\u53ef\u4ee5\u76f4\u63a5\u8df3\u5230\u90a3\u4e00\u6bb5<\/span><\/div><div class=\"rbs-play-chaps-list\"><\/div><\/div><div class=\"rbs-play-info-acts\"><a class=\"rbs-play-act rbs-play-act-main rbs-play-act-read\" href=\"#\">\u770b\u5b8c\u6574\u5716\u6587 \u2192<\/a><button class=\"rbs-play-act rbs-play-act-prev\" type=\"button\">\u2190 \u4e0a\u4e00\u96c6<\/button><button class=\"rbs-play-act rbs-play-act-next\" type=\"button\">\u4e0b\u4e00\u96c6 \u2192<\/button><\/div><\/div>\n<\/div>\n<aside class=\"rbs-play-toc\"><div class=\"rbs-play-toc-head\">\u8ab2\u7a0b\u76ee\u9304<span class=\"rbs-play-toc-count\"><\/span><\/div><div class=\"rbs-play-toc-list\"><div class=\"rbs-play-loading\">\u8ab2\u7a0b\u76ee\u9304\u6703\u5728\u524d\u53f0\u81ea\u52d5\u8f09\u5165<\/div><\/div><\/aside>\n<\/div>\n\n\n\n<div class=\"wp-block-group alignfull rbs-play-cta is-layout-flow wp-block-group-is-layout-flow\">\n<h2 class=\"wp-block-heading rbs-play-cta-title\">\u770b\u5b8c\u8ab2\u7a0b\uff0c\u60f3\u5be6\u969b\u6478\u6478\u6a5f\u5668\uff1f<\/h2>\n\n\n\n<p class=\"rbs-play-cta-text wp-block-paragraph\">\u9810\u7d04\u8a66\u6a5f\uff0c\u8b93\u6211\u5011\u7528\u4f60\u7684\u8c46\u5b50\u70d8\u4e00\u934b\u7d66\u4f60\u770b\u3002<\/p>\n\n\n\n<div class=\"wp-block-buttons rbs-play-cta-buttons is-layout-flex wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button rbs-play-cta-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/rubasseroasters.com\/zh\/free-coffee-consulting-zh\/\">\u9810\u7d04\u8a66\u6a5f \/ \u514d\u8cbb\u9867\u554f\u8aee\u8a62<\/a><\/div>\n<\/div>\n<\/div>\n\n\n\n<p class=\"rbs-play-engine-note\">\u2699\ufe0f \u7cfb\u7d71\u5f15\u64ce\uff1a\u8acb\u52ff\u89e3\u9396\u3001\u79fb\u52d5\u6216\u522a\u9664\uff1b\u65e5\u5e38\u5167\u5bb9\u8acb\u76f4\u63a5\u4fee\u6539\u4e0a\u65b9\u8996\u89ba\u5340\u584a\u3002<\/p>\n\n<style>\n.rbs-play-page,.rbs-play-page *{box-sizing:border-box}\n.rbs-play-page{font-family:\"Noto Sans TC\",\"PingFang TC\",\"Microsoft JhengHei\",system-ui,sans-serif;color:#2a2320;background:#f8f3ec;line-height:1.7;-webkit-font-smoothing:antialiased;max-width:none!important;width:100%}\n.rbs-play-page>*,.rbs-play-page .wp-block-group>*{margin-block-start:0;margin-block-end:0}\n.rbs-play-page a{color:inherit;text-decoration:none}\n.rbs-play-hero{background:linear-gradient(135deg,#241310 0%,#6e1d1d 100%);color:#fff;padding:40px max(24px,calc((100vw - 1320px)\/2)) 36px;position:relative;overflow:hidden}\n.rbs-play-hero:after{content:\"\";position:absolute;right:-90px;top:-90px;width:300px;height:300px;border-radius:50%;background:rgba(201,162,74,.12)}\n.rbs-play-hero,.rbs-play-hero p,.rbs-play-hero h1{color:#fff!important}\n.rbs-play-crumb{font-size:13.5px;opacity:.85;margin:0 0 12px!important;position:relative;z-index:1}\n.rbs-play-crumb a{text-decoration:underline;text-underline-offset:3px}\n.rbs-play-crumb-sep{opacity:.5;padding:0 7px}\n.rbs-play-crumb-now{opacity:.72}\n.rbs-play-badge{display:inline-block;font-size:12px;font-weight:800;padding:3px 10px;border-radius:99px;background:rgba(255,255,255,.18);letter-spacing:.5px;margin:0 0 12px!important;position:relative;z-index:1}\n.rbs-play-title{font-size:34px;line-height:1.3;margin:0 0 10px!important;font-weight:800;letter-spacing:.5px;color:#fff!important;position:relative;z-index:1}\n.rbs-play-lead{font-size:15.5px;opacity:.9;margin:0!important;max-width:760px;color:#fff!important;position:relative;z-index:1}\n.rbs-play-stage{display:grid;grid-template-columns:minmax(0,1fr) 366px;gap:26px;max-width:1320px;margin:28px auto 44px!important;padding:0 24px;align-items:start}\n.rbs-play-main{min-width:0}\n.rbs-play-frame{position:relative;width:100%;aspect-ratio:16\/9;background:#000;border-radius:14px;overflow:hidden;box-shadow:0 10px 30px rgba(36,19,16,.18)}\n.rbs-play-frame iframe{position:absolute;inset:0;width:100%;height:100%;border:0;display:block}\n.rbs-play-frame-empty{display:flex;align-items:center;justify-content:center;color:#b8aca2;font-size:14px;text-align:center;padding:20px}\n.rbs-play-info{background:#fff;border:1px solid #e6ddd2;border-radius:14px;padding:22px 24px 24px;margin-top:18px}\n.rbs-play-info-ep{display:inline-block;background:#a32b2b;color:#fff;font-size:12px;font-weight:900;padding:4px 12px;border-radius:99px;margin-bottom:11px}\n.rbs-play-info-title{margin:0 0 9px;font-size:22px;line-height:1.45;font-weight:800}\n.rbs-play-info-text{margin:0 0 18px;font-size:14.5px;line-height:1.75;color:#6b5f52}\n\/* \u5f71\u7247\u91cd\u9ede\uff08timecode\uff09\u3002\u684c\u6a5f\u5169\u6b04\uff1a\u4e00\u652f\u5f71\u7247\u5e38\u6709 6~10 \u500b\u91cd\u9ede\uff0c\u55ae\u6b04\u6703\u628a\u300c\u770b\u5b8c\u6574\u5716\u6587\u300d\n   \u90a3\u6392\u6309\u9215\u63a8\u5230\u5f88\u4e0b\u9762\u3002\u624b\u6a5f\u6539\u55ae\u6b04\u4e26\u52a0\u5927\u9ede\u64ca\u5340\uff0844px \u4e0a\u4e0b\uff09\uff0c\u624b\u6307\u624d\u9ede\u5f97\u5230\u3002 *\/\n.rbs-play-chaps{margin:0 0 16px}\n.rbs-play-chaps-head{font-size:13px;font-weight:900;letter-spacing:.5px;color:#a32b2b;margin:0 0 8px}\n.rbs-play-chaps-count{font-weight:800}\n.rbs-play-chaps-hint{font-size:12.5px;font-weight:700;color:#8a8078;letter-spacing:0;margin-left:4px}\n.rbs-play-chaps-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px}\n.rbs-play-chap{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;background:transparent;border:0;border-radius:8px;padding:7px 9px;cursor:pointer;font-family:inherit;font-size:14px;line-height:1.55;color:#2a2320;transition:background .15s}\n.rbs-play-chap:hover{background:#f8f3ec}\n.rbs-play-chap.on{background:#fffaf0}\n.rbs-play-chap-t{flex:0 0 auto;font-size:13px;font-weight:900;color:#a32b2b;background:#f6e7e7;border-radius:6px;padding:2px 8px;margin-top:1px;font-variant-numeric:tabular-nums}\n.rbs-play-chap.on .rbs-play-chap-t{background:#a32b2b;color:#fff}\n.rbs-play-chap-x{min-width:0;font-weight:700}\n.rbs-play-info-acts{display:flex;gap:10px;flex-wrap:wrap;align-items:center}\n\/* \u26a0\ufe0f \u9019\u516d\u689d**\u5fc5\u9808\u5e36 .rbs-play-page \u524d\u7db4**\uff08\u7b2c\u4e09\u6b21\u8e29\u5230\u540c\u4e00\u500b\u5751\uff0c2026-09-17 \u4f7f\u7528\u8005\u622a\u5716\u56de\u5831\uff09\uff1a\n   \u6a94\u982d\u7684 .rbs-play-page a{color:inherit} \u662f (0,1,1)\uff0c\u6703\u58d3\u6389\u88f8 class \u7684 (0,1,0) color\uff0c\n   \u5bb3\u300c\u770b\u5b8c\u6574\u5716\u6587\u300d\u9019\u9846 <a> \u8b8a\u6210\u7d05\u5e95\u9ed1\u5b57\u3002\u800c :hover \u90a3\u689d\u525b\u597d\u4e5f\u662f (0,1,1) \u53c8\u5beb\u5728\u5f8c\u9762\uff0c\n   \u6240\u4ee5**\u6ed1\u9f20\u79fb\u4e0a\u53bb\u662f\u5c0d\u7684\u3001\u975c\u6b62\u624d\u662f\u932f\u7684**\u2014\u2014\u81ea\u6e2c\u53ea\u770b hover \u6703\u6f0f\u6389\u3002\n   \u26d4 \u624b\u6a5f\u65b7\u9ede\u7684\u8986\u5beb\u4e5f\u8981\u5e36\u524d\u7db4\uff0c\u5426\u5247 (0,2,0) \u7684\u57fa\u5e95\u6703\u58d3\u6389 (0,1,0) \u7684 media \u8986\u5beb\u3002 *\/\n.rbs-play-page .rbs-play-act{display:inline-flex;align-items:center;gap:6px;border:1.5px solid #e6ddd2;background:#f8f3ec;color:#2a2320;border-radius:99px;padding:9px 18px;font-size:14px;font-weight:800;cursor:pointer;font-family:inherit;transition:border-color .15s,color .15s,background .15s}\n.rbs-play-page .rbs-play-act:hover{border-color:#a32b2b;color:#a32b2b;background:#fff}\n.rbs-play-page .rbs-play-act[disabled]{opacity:.4;cursor:default}\n.rbs-play-page .rbs-play-act[disabled]:hover{border-color:#e6ddd2;color:#2a2320;background:#f8f3ec}\n.rbs-play-page .rbs-play-act-main{background:#a32b2b;border-color:#a32b2b;color:#fff}\n.rbs-play-page .rbs-play-act-main:hover{background:#241310;border-color:#241310;color:#fff}\n.rbs-play-toc{background:#fff;border:1px solid #e6ddd2;border-radius:14px;overflow:hidden;position:sticky;top:16px;display:flex;flex-direction:column;max-height:calc(100vh - 32px)}\n.rbs-play-toc-head{padding:15px 18px;border-bottom:1px solid #e6ddd2;font-size:15px;font-weight:800;flex:0 0 auto}\n.rbs-play-toc-count{color:#7d726b;font-weight:700}\n.rbs-play-toc-list{overflow-y:auto;flex:1 1 auto;min-height:0}\n.rbs-play-row{display:flex;gap:12px;padding:11px 14px;border-bottom:1px solid #f0e7da;cursor:pointer;border-left:4px solid transparent;transition:background .15s}\n.rbs-play-row:last-child{border-bottom:0}\n.rbs-play-row:hover{background:#f8f3ec}\n.rbs-play-row.on{background:#fffaf0;border-left-color:#a32b2b}\n.rbs-play-row-thumb{width:106px;height:60px;border-radius:7px;background:#e6ddd2;overflow:hidden;flex:0 0 auto;position:relative}\n.rbs-play-row-thumb img{width:100%;height:100%;object-fit:cover;display:block}\n.rbs-play-row-body{min-width:0;flex:1}\n.rbs-play-row-ep{font-size:11px;font-weight:900;color:#a32b2b;letter-spacing:.6px}\n.rbs-play-row.on .rbs-play-row-ep{color:#a32b2b}\n\/* \u6a19\u984c\u8207\u6458\u8981\u5404\u9396\u4e00\u884c\uff1aEP1~EP3 \u539f\u6a19\u984c\u53ea\u6709\u56db\u5230\u516d\u500b\u5b57\uff0c\u914d\u4e00\u5f35\u7e2e\u5716\u53f3\u908a\u6703\u7a7a\u4e00\u5927\u7247\uff1b\n   \u88dc\u4e00\u884c\u6458\u8981\u628a\u7559\u767d\u586b\u6389\u3002\u5169\u8005\u90fd\u9396\u4e00\u884c\uff0c\u5341\u5217\u9ad8\u5ea6\u624d\u6703\u5b8c\u5168\u4e00\u81f4\u2014\u2014\u82e5\u6a19\u984c\u653e\u5169\u884c\u3001\n   \u6458\u8981\u518d\u4e00\u884c\uff0cbody \u6703\u9577\u5230 76px \u8d85\u904e\u7e2e\u5716\u7684 60px\uff0c\u53cd\u800c\u8b93\u9577\u6a19\u984c\u90a3\u5e7e\u5217\u8b8a\u9ad8\u3002 *\/\n.rbs-play-row-title{margin:2px 0 0;font-size:13.5px;line-height:1.5;font-weight:700;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}\n.rbs-play-row-desc{margin:3px 0 0;font-size:12px;line-height:1.55;color:#8a8078;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden}\n.rbs-play-row.on .rbs-play-row-desc{color:#7d726b}\n.rbs-play-loading,.rbs-play-err{text-align:center;padding:34px 20px;color:#7d726b;font-size:14px}\n.rbs-play-err{color:#a32b2b}\n.rbs-play-cta{background:#241310;color:#fff;padding:48px max(24px,calc((100vw - 1320px)\/2));text-align:center}\n.rbs-play-cta-title{margin:0 0 10px!important;font-size:26px;color:#fff!important}\n.rbs-play-cta-text{margin:0 0 22px!important;opacity:.82;color:#fff!important}\n.rbs-play-cta-buttons{justify-content:center;margin:0!important}\n.rbs-play-cta-button .wp-block-button__link{display:inline-block;background:#a32b2b;color:#fff;padding:13px 30px;border-radius:6px;font-weight:800;font-size:16px;text-decoration:none}\n.rbs-play-engine-note{display:none}\n.hero-section[data-type]{display:none}\n.rbs-play-setup,.rbs-play-marks{display:none!important}\n.editor-styles-wrapper .rbs-play-setup,.rbs-play-setup.rbs-play-setup-show,.editor-styles-wrapper .rbs-play-marks,.rbs-play-marks.rbs-play-setup-show{display:block!important;background:#fff8e6;border:2px dashed #c9a24a;border-radius:14px;padding:18px 20px 22px;margin:0 0 10px!important}\n.rbs-play-cfg-heading{font-size:20px!important;font-weight:800;margin:0 0 10px!important;color:#8a6d1f!important}\n.rbs-play-cfg-note{font-size:13px!important;line-height:1.7;color:#6b5f52!important;margin:0 0 6px!important;background:#fffdf6;border-left:3px solid #c9a24a;padding:7px 11px;border-radius:0 6px 6px 0}\n.rbs-play-cfg-row{background:#fff;border:1px solid #e6ddd2;border-radius:10px;padding:12px 15px 15px;margin:13px 0 0!important}\n.rbs-play-cfg-row-title{font-size:16px!important;font-weight:800;margin:0 0 4px!important;color:#a32b2b!important;border-bottom:1px solid #f0e7da;padding-bottom:7px}\n.rbs-play-cfg-label{font-size:12.5px!important;line-height:1.5;color:#8a8078!important;margin:11px 0 3px!important}\n.rbs-play-cfg-value{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace!important;font-size:13.5px!important;line-height:1.6;color:#1f5c2e!important;background:#f4faf5;border:1px solid #cfe6d4;border-radius:6px;padding:7px 10px;margin:0!important;word-break:break-all;min-height:1.7em}\n@media(max-width:1080px){.rbs-play-stage{grid-template-columns:minmax(0,1fr) 300px;gap:20px}.rbs-play-row-thumb{width:88px;height:50px}}\n@media(max-width:900px){\n.rbs-play-stage{grid-template-columns:minmax(0,1fr);gap:18px;margin:20px auto 34px!important;padding:0 16px}\n.rbs-play-toc{position:static;max-height:none}\n.rbs-play-toc-list{max-height:380px}\n.rbs-play-hero{padding:32px 16px 28px}.rbs-play-title{font-size:24px}.rbs-play-lead{font-size:14.5px}\n.rbs-play-frame{border-radius:10px}\n.rbs-play-info{padding:17px 17px 19px;border-radius:11px;margin-top:14px}.rbs-play-info-title{font-size:18px}.rbs-play-info-text{font-size:13.5px}\n.rbs-play-chaps-list{grid-template-columns:minmax(0,1fr);gap:2px}\n.rbs-play-chap{padding:11px 8px;font-size:14.5px}\n.rbs-play-chaps-hint{display:block;margin:2px 0 0}\n.rbs-play-page .rbs-play-act{padding:9px 15px;font-size:13.5px}\n.rbs-play-cta{padding:38px 16px}.rbs-play-cta-title{font-size:20px}\n}\n<\/style>\n\n<script>\n(function(){\n  var AMP = String.fromCharCode(38);\n  var SITE = 'https:\/\/rubasseroasters.com';\n  var LANG = '\/zh';\n  var CFG_DEFAULT = {\"cat\":\"ultimate-coffee-roast-guide-course-zh\",\"start\":\"rubasse-roasting-online-course-ep-1-zh\",\"order\":\"\u8ab2\u7a0bEP\"};\n\n  var root = document.querySelector('.rbs-play-page');\n  if (!root) { return; }\n\n  function cfgVal(row, selector, fallback){\n    if (!row) { return fallback; }\n    var node = row.querySelector(selector);\n    if (!node) { return fallback; }\n    return node.textContent.replace(\/[\\s ]+\/g, ' ').trim();\n  }\n\n  function isBlank(value){\n    if (!value) { return true; }\n    if (value === '-') { return true; }\n    if (value === '\u2014') { return true; }\n    if (value.charAt(0) === '\uff08') { return true; }\n    return false;\n  }\n\n  function normLayout(value){\n    var text = String(value);\n    if (text.indexOf('EP') >= 0) { return 'timeline'; }\n    if (text.indexOf('BH') >= 0) { return 'lines'; }\n    return 'rows';\n  }\n\n  function readConfig(){\n    var row = root.querySelector('.rbs-play-cfg-row-main');\n    var cat = cfgVal(row, '.rbs-play-cfg-cat', CFG_DEFAULT.cat);\n    var start = cfgVal(row, '.rbs-play-cfg-start', CFG_DEFAULT.start);\n    var order = cfgVal(row, '.rbs-play-cfg-order', CFG_DEFAULT.order);\n    return {\n      cat: isBlank(cat) ? '' : cat,\n      startSlug: isBlank(start) ? '' : start,\n      layout: normLayout(order)\n    };\n  }\n\n  var CFG = readConfig();\n\n  function inEditor(){\n    try {\n      if (document.body) {\n        if (document.body.classList.contains('editor-styles-wrapper')) { return true; }\n      }\n      if (document.querySelector('.editor-styles-wrapper')) { return true; }\n      if (document.querySelector('.block-editor-block-list__layout')) { return true; }\n      if (document.querySelector('[data-type=\"core\/group\"]')) { return true; }\n    } catch (error) { return false; }\n    return false;\n  }\n\n  var IN_EDITOR = inEditor();\n  var panels = root.querySelectorAll('.rbs-play-setup,.rbs-play-marks');\n  for (var pi = 0; pi < panels.length; pi++) {\n    if (IN_EDITOR) { panels[pi].classList.add('rbs-play-setup-show'); }\n    else { panels[pi].classList.remove('rbs-play-setup-show'); }\n  }\n\n  function el(tag, cls, text){\n    var node = document.createElement(tag);\n    if (cls) { node.className = cls; }\n    if (text) { node.textContent = text; }\n    return node;\n  }\n\n  function decode(value){\n    var box = document.createElement('textarea');\n    box.innerHTML = value;\n    return box.value.replace(\/[\\s ]+\/g, ' ').trim();\n  }\n\n  function stripTags(value){\n    var box = document.createElement('div');\n    box.innerHTML = value;\n    return box.textContent.replace(\/[\\s ]+\/g, ' ').trim();\n  }\n\n  function titleOf(post){ return decode(post.title.rendered); }\n\n  function linkOf(post){ return SITE + LANG + '\/' + post.slug + '\/'; }\n\n  \/\/ WP \u81ea\u52d5\u7522\u7684\u6458\u8981\u662f\u5167\u6587\u958b\u982d\uff0c\u800c\u5167\u6587\u958b\u982d\u901a\u5e38\u53c8\u628a\u6a19\u984c\u6284\u4e86\u4e00\u904d\n  \/\/ \uff08\u4f8b\u5982\u300c\u5496\u5561\u70d8\u7119\u7d42\u6975\u6307\u5357 | EP1\u8ab2\u7a0b\u5167\u5bb9\u4ecb\u7d39 \u203b\u672c\u8ab2\u7a0b\u6559\u6750\u2026\u300d\uff09\u3002\n  \/\/ \u6a19\u984c\u5c31\u986f\u793a\u5728\u6458\u8981\u6b63\u4e0a\u65b9\uff0c\u91cd\u8907\u5169\u6b21\u5f88\u5435\uff0c\u9019\u88e1\u628a\u958b\u982d\u90a3\u6bb5\u525d\u6389\u3002\n  function excerptOf(post, shortTitle){\n    if (!post.excerpt) { return ''; }\n    var text = stripTags(post.excerpt.rendered);\n    var out = text.replace(\/^.*?EP\\s*\\d+[.\\s|\uff5c]*\/, '');\n    if (shortTitle) {\n      if (out.indexOf(shortTitle) === 0) { out = out.slice(shortTitle.length); }\n    }\n    out = out.replace(\/^[\\s\uff1a:\uff5c|\u3001\uff0c,.\u3002\\-]+\/, '');\n    \/\/ \u9019\u6279\u6587\u7ae0\u7684\u5beb\u7a3f\u7fd2\u6163\u662f\u300c\u6a19\u984c\u6284\u4e00\u904d \u2192 \u5167\u5bb9\u6458\u8981 \u2192 \u6b63\u6587\u300d\uff0c\u800c\u6a19\u984c\u6284\u7684\u90a3\u904d\u672a\u5fc5\n    \/\/ \u8ddf\u771f\u6b63\u7684\u6a19\u984c\u9010\u5b57\u76f8\u540c\uff08EP5 \u6a19\u984c\u5beb\u300c\u5927\u8c46\u76ee\u300d\u3001\u5167\u6587\u5beb\u300c\u8c46\u76ee\u5927\u300d\uff09\uff0c\u7cbe\u78ba\u6bd4\u5c0d\u9760\u4e0d\u4f4f\u3002\n    \/\/ \u6539\u6210\u8a8d\u300c\u5167\u5bb9\u6458\u8981\u300d\u9019\u500b\u5206\u9694\u8a5e\uff1a\u53ea\u8981\u5b83\u51fa\u73fe\u5728\u5920\u524d\u9762\uff0c\u5c31\u76f4\u63a5\u53d6\u5b83\u5f8c\u9762\u90a3\u6bb5\u3002\n    var marker = out.indexOf('\u5167\u5bb9\u6458\u8981');\n    if (marker >= 0) {\n      if (marker < 90) { out = out.slice(marker + 4); }\n    }\n    out = out.replace(\/^[\\s\uff1a:\uff5c|\u3001\uff0c,.\u3002\\-]+\/, '');\n    if (out.length === 0) { out = text; }\n    if (out.length > 150) { return out.slice(0, 150) + '\u2026'; }\n    return out;\n  }\n\n  \/\/ \u2500\u2500 \u5f71\u7247\u91cd\u9ede\uff08timecode\uff09\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  \/\/ \u4f86\u6e90\uff1d\u9801\u9762\u4e0a\u7684\u300c\u5f71\u7247\u91cd\u9ede\u5340\u300d\uff08\u524d\u53f0\u96b1\u85cf\u3001\u7de8\u8f2f\u5668\u53ef\u6539\uff09\uff0c\u4e00\u884c\u4e00\u500b\u91cd\u9ede\uff1a\n  \/\/     EP1 00:30 \u5f15\u8a00\n  \/\/ \u8a8d\u6cd5\u523b\u610f\u5bec\u9b06\uff1a\u5148\u6293\u884c\u9996\u7684 EP \u7de8\u865f\uff0c\u518d\u6293\u884c\u5167\u7b2c\u4e00\u500b mm:ss\uff08\u6216 h:mm:ss\uff09\uff0c\n  \/\/ \u5269\u4e0b\u7684\u5b57\u5c31\u662f\u91cd\u9ede\u540d\u7a31\u3002\u6293\u4e0d\u5230\u6642\u9593\u7684\u884c\u76f4\u63a5\u8df3\u904e\u2014\u2014\u586b\u932f\u4e00\u884c\u4e0d\u6703\u5f04\u58de\u6574\u9801\u3002\n  var MARK_EP_RE = \/^EP\\s*(\\d+)\/i;\n  var MARK_T_RE = \/(\\d{1,3}):([0-5]\\d)(?::([0-5]\\d))?\/;\n\n  function markSeconds(match){\n    var first = parseInt(match[1], 10);\n    var second = parseInt(match[2], 10);\n    if (match[3]) { return first * 3600 + second * 60 + parseInt(match[3], 10); }\n    return first * 60 + second;\n  }\n\n  function pad2(value){\n    var text = String(value);\n    if (text.length < 2) { return '0' + text; }\n    return text;\n  }\n\n  function markClock(sec){\n    var hour = Math.floor(sec \/ 3600);\n    var minute = Math.floor((sec % 3600) \/ 60);\n    var second = sec % 60;\n    if (hour > 0) { return hour + ':' + pad2(minute) + ':' + pad2(second); }\n    return pad2(minute) + ':' + pad2(second);\n  }\n\n  function readMarks(){\n    var out = {};\n    var lines = root.querySelectorAll('.rbs-play-mark-line');\n    for (var i = 0; i < lines.length; i++) {\n      var text = lines[i].textContent.replace(\/[\\s ]+\/g, ' ').trim();\n      if (isBlank(text)) { continue; }\n      var epMatch = text.match(MARK_EP_RE);\n      if (!epMatch) { continue; }\n      var rest = text.slice(epMatch[0].length);\n      var timeMatch = rest.match(MARK_T_RE);\n      if (!timeMatch) { continue; }\n      var label = rest.slice(timeMatch.index + timeMatch[0].length);\n      label = label.replace(\/^[\\s\uff1a:\uff5c|\u3001\uff0c,.\u3002\\-\u2014]+\/, '').trim();\n      if (label.length === 0) { continue; }\n      var key = 'EP' + parseInt(epMatch[1], 10);\n      if (!out[key]) { out[key] = []; }\n      out[key].push({sec: markSeconds(timeMatch), label: label});\n    }\n    var keys = Object.keys(out);\n    for (var k = 0; k < keys.length; k++) {\n      \/\/ \u4f9d\u79d2\u6578\u6392\u5e8f\uff1a\u586b\u7684\u4eba\u672a\u5fc5\u6309\u9806\u5e8f\u6253\uff0c\u4e5f\u53ef\u80fd\u4e2d\u9593\u88dc\u63d2\u4e00\u884c\u3002\n      out[keys[k]].sort(function(a, b){ return a.sec - b.sec; });\n    }\n    return out;\n  }\n\n  var MARKS = readMarks();\n\n  \/\/ \u5f71\u7247 ID \u76f4\u63a5\u5f9e\u6587\u7ae0\u5167\u6587\u7684 YouTube \u5d4c\u5165\u78bc\u6488\uff082026-09-14 \u5be6\u6e2c\u5206\u985e 35 \u547d\u4e2d 10\/10\uff09\u3002\n  var VIDEO_RE = \/(?:youtube\\.com\\\/embed\\\/|youtu\\.be\\\/|watch\\?v=)([A-Za-z0-9_-]{11})\/;\n  function videoIdOf(post){\n    if (!post.content) { return ''; }\n    var match = post.content.rendered.match(VIDEO_RE);\n    if (match) { return match[1]; }\n    return '';\n  }\n\n  function epNum(title){\n    var match = title.match(\/EP\\s*(\\d+)\/);\n    if (match) { return parseInt(match[1], 10); }\n    return 99;\n  }\n\n  function epTitle(title){\n    var cleaned = title.replace(\/^.*?EP\\s*\\d+[.\\s|\uff5c]*\/, '');\n    if (cleaned.length === 0) { return title; }\n    return cleaned;\n  }\n\n  function bhLine(title){\n    var keys = ['\u6ef4\u6ffe', '\u7fa9\u5f0f', '\u6d78\u6ce1'];\n    for (var i = 0; i < keys.length; i++) {\n      if (title.indexOf(keys[i]) === 0) { return keys[i]; }\n    }\n    return '\u7e3d\u89bd';\n  }\n\n  \/\/ \u6392\u5e8f\u5b8c\u5168\u4e0d\u770b\u767c\u4f48\u6642\u9593\uff1a\u5206\u985e\u9801\u539f\u672c\u9760\u624b\u8abf\u767c\u4f48\u6642\u9593\u64ac\u9806\u5e8f\uff0c\u4e00\u6539\u65e5\u671f\u5c31\u6563\u3002\n  function baseOrder(posts){\n    var list = posts.slice();\n    if (CFG.layout === 'timeline') {\n      list.sort(function(a, b){ return epNum(titleOf(a)) - epNum(titleOf(b)); });\n    }\n    if (CFG.layout === 'lines') {\n      var rank = {'\u6ef4\u6ffe':0,'\u7fa9\u5f0f':1,'\u6d78\u6ce1':2,'\u7e3d\u89bd':3};\n      list.sort(function(a, b){\n        var titleA = titleOf(a);\n        var titleB = titleOf(b);\n        var lineDiff = rank[bhLine(titleA)] - rank[bhLine(titleB)];\n        if (lineDiff !== 0) { return lineDiff; }\n        return epNum(titleA) - epNum(titleB);\n      });\n    }\n    return list;\n  }\n\n  function labelOf(post, index){\n    var title = titleOf(post);\n    var number = epNum(title);\n    if (CFG.layout === 'timeline') {\n      if (number !== 99) { return 'EP' + number; }\n      return '\u5c0e\u8b80';\n    }\n    if (CFG.layout === 'lines') {\n      if (number !== 99) { return bhLine(title) + ' EP' + number; }\n      return '\u5c0e\u8b80';\n    }\n    var value = String(index + 1);\n    if (value.length < 2) { value = '0' + value; }\n    return '\u7b2c ' + value + ' \u7bc7';\n  }\n\n  function shortTitleOf(post){\n    var title = titleOf(post);\n    if (CFG.layout === 'timeline') { return epTitle(title); }\n    if (CFG.layout === 'lines') {\n      var parts = title.split('\uff5c');\n      if (parts.length > 1) { return parts[parts.length - 1].trim(); }\n      var half = title.split('|');\n      if (half.length > 1) { return half[half.length - 1].trim(); }\n    }\n    return title;\n  }\n\n  function fetchCategory(){\n    if (!CFG.cat) { return Promise.resolve(null); }\n    var url = SITE + '\/wp-json\/wp\/v2\/categories?slug=' + encodeURIComponent(CFG.cat) + AMP + 'per_page=100';\n    return fetch(url).then(function(response){\n      if (!response.ok) { throw new Error('category REST ' + response.status); }\n      return response.json();\n    }).then(function(cats){\n      for (var i = 0; i < cats.length; i++) {\n        if (cats[i].slug === CFG.cat) { return cats[i]; }\n      }\n      return null;\n    }).catch(function(){ return null; });\n  }\n\n  \/\/ \u7e2e\u5716\u6539\u7528 YouTube \u7684\u5f71\u7247\u756b\u9762\uff0c\u4e0d\u5fc5\u8acb WP \u4e00\u8d77\u5e36 featured media\uff0c\u53ef\u4ee5\u7528\u6b04\u4f4d\u767d\u540d\u55ae\u7626\u8eab\u3002\n  function fetchPosts(cat){\n    var fields = 'id,slug,title,excerpt,content';\n    var url = SITE + '\/wp-json\/wp\/v2\/posts?categories=' + cat.id + AMP + 'per_page=100' + AMP + '_fields=' + fields;\n    return fetch(url).then(function(response){\n      if (!response.ok) { throw new Error('post REST ' + response.status); }\n      return response.json();\n    }).then(function(posts){\n      return {posts: posts, error: ''};\n    }).catch(function(error){\n      return {posts: [], error: String(error)};\n    });\n  }\n\n  var ITEMS = [];\n  var CURRENT = -1;\n\n  var frame = root.querySelector('.rbs-play-frame');\n  var tocList = root.querySelector('.rbs-play-toc-list');\n  var tocCount = root.querySelector('.rbs-play-toc-count');\n  var infoEp = root.querySelector('.rbs-play-info-ep');\n  var infoTitle = root.querySelector('.rbs-play-info-title');\n  var infoText = root.querySelector('.rbs-play-info-text');\n  var infoRead = root.querySelector('.rbs-play-act-read');\n  var btnPrev = root.querySelector('.rbs-play-act-prev');\n  var btnNext = root.querySelector('.rbs-play-act-next');\n  var chapBox = root.querySelector('.rbs-play-chaps');\n  var chapList = root.querySelector('.rbs-play-chaps-list');\n  var chapCount = root.querySelector('.rbs-play-chaps-count');\n\n  function embedSrc(videoId, autoplay, startAt){\n    var src = 'https:\/\/www.youtube.com\/embed\/' + videoId + '?rel=0' + AMP + 'modestbranding=1' + AMP + 'playsinline=1' + AMP + 'enablejsapi=1';\n    if (startAt > 0) { src = src + AMP + 'start=' + startAt; }\n    if (autoplay) { src = src + AMP + 'autoplay=1'; }\n    return src;\n  }\n\n  \/\/ \u2500\u2500 \u64ad\u653e\u5668\u63a7\u5236\uff1a\u9ede timecode \u8981\u8df3\u6642\u9593\u53c8\u4e0d\u91cd\u8f09\u5f71\u7247 \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n  \/\/ \u8d70 YouTube IFrame API\uff08iframe \u5fc5\u9808\u5e36 enablejsapi=1\uff09\u3002API \u88ab\u64cb\u6389\u6216\u8f09\u4e0d\u5230\u6642\uff0c\n  \/\/ seekTo \u7528\u4e0d\u4e86 \u2192 \u9000\u56de\u300c\u91cd\u5efa iframe \u5e36 start \u53c3\u6578\u300d\uff0c\u529f\u80fd\u4e0d\u6389\u3001\u53ea\u662f\u6703\u91cd\u65b0\u8f09\u5165\u4e00\u6b21\u3002\n  var PLAYER = null;\n  var PLAYER_READY = false;\n  var POLL = 0;\n\n  function attachPlayer(){\n    if (!window.YT) { return; }\n    if (!window.YT.Player) { return; }\n    if (PLAYER) { return; }\n    var iframe = frame.querySelector('iframe');\n    if (!iframe) { return; }\n    try {\n      PLAYER = new window.YT.Player(iframe, {\n        events: {\n          onReady: function(){ PLAYER_READY = true; startPoll(); },\n          onStateChange: function(event){\n            if (event.data === 1) { startPoll(); }\n          }\n        }\n      });\n    } catch (error) { PLAYER = null; }\n  }\n\n  function loadYouTubeApi(){\n    if (window.YT) {\n      if (window.YT.Player) { attachPlayer(); return; }\n    }\n    if (document.getElementById('rbs-play-yt-api')) { return; }\n    \/\/ \u7ad9\u4e0a\u53ef\u80fd\u6709\u5225\u7684\u6771\u897f\u4e5f\u5728\u7b49\u9019\u500b callback\uff0c\u5148\u63a5\u4f4f\u539f\u672c\u7684\u518d\u4e32\u81ea\u5df1\u7684\u3002\n    var prev = window.onYouTubeIframeAPIReady;\n    window.onYouTubeIframeAPIReady = function(){\n      if (typeof prev === 'function') {\n        try { prev(); } catch (error) { prev = null; }\n      }\n      attachPlayer();\n    };\n    var tag = document.createElement('script');\n    tag.id = 'rbs-play-yt-api';\n    tag.src = 'https:\/\/www.youtube.com\/iframe_api';\n    document.head.appendChild(tag);\n  }\n\n  function dropPlayer(){\n    PLAYER_READY = false;\n    if (POLL) { clearInterval(POLL); POLL = 0; }\n    if (PLAYER) {\n      if (PLAYER.destroy) {\n        try { PLAYER.destroy(); } catch (error) { PLAYER = null; }\n      }\n    }\n    PLAYER = null;\n  }\n\n  function paintChapter(now){\n    if (!chapList) { return; }\n    var items = chapList.querySelectorAll('.rbs-play-chap');\n    var pick = -1;\n    for (var i = 0; i < items.length; i++) {\n      var sec = parseInt(items[i].getAttribute('data-sec'), 10);\n      if (now + 0.4 >= sec) { pick = i; }\n    }\n    for (var j = 0; j < items.length; j++) {\n      if (j === pick) { items[j].classList.add('on'); }\n      else { items[j].classList.remove('on'); }\n    }\n  }\n\n  \/\/ \u9ad8\u4eae\u300c\u73fe\u5728\u64ad\u5230\u54ea\u4e00\u500b\u91cd\u9ede\u300d\u3002\u53ea\u6709 API \u639b\u4e0a\u624d\u6709\u6642\u9593\u53ef\u8b80\uff1b\u6bcf\u79d2\u4e00\u6b21\uff0c\n  \/\/ \u6bd4 requestAnimationFrame \u7701\u5f97\u591a\uff0c\u800c\u91cd\u9ede\u901a\u5e38\u4ee5\u5341\u79d2\u70ba\u55ae\u4f4d\uff0c\u4e00\u79d2\u7684\u5ef6\u9072\u770b\u4e0d\u51fa\u4f86\u3002\n  function startPoll(){\n    if (POLL) { return; }\n    if (!chapList) { return; }\n    POLL = setInterval(function(){\n      if (!PLAYER) { return; }\n      if (!PLAYER.getCurrentTime) { return; }\n      var now = 0;\n      try { now = PLAYER.getCurrentTime(); } catch (error) { return; }\n      paintChapter(now);\n    }, 1000);\n  }\n\n  \/\/ Blocksy \u6709\u4e00\u689d position:fixed \u7684\u9801\u9996\u6703\u84cb\u4f4f\u6372\u52d5\u843d\u9ede\uff08\u684c\u6a5f 103px\uff0f\u624b\u6a5f 54~60px\uff0c\n  \/\/ \u6709\u4e9b\u9801\u9084\u662f\u6372\u52d5\u5f8c\u624d\u8b8a fixed\uff09\u2192 \u5be6\u5730\u91cf\uff0c\u26d4 \u4e0d\u53ef\u5beb\u6b7b\u50cf\u7d20\u3002\u540c gen_success_stories.py\u3002\n  function themeTop(){\n    var best = 0;\n    var all = document.body.getElementsByTagName('*');\n    for (var i = 0; i < all.length; i++) {\n      var node = all[i];\n      if (root.contains(node)) { continue; }\n      if (window.getComputedStyle(node).position !== 'fixed') { continue; }\n      var box = node.getBoundingClientRect();\n      if (box.top > 2) { continue; }\n      if (box.height < 10) { continue; }\n      if (box.height > 200) { continue; }\n      if (box.width < window.innerWidth * 0.8) { continue; }\n      if (box.bottom > best) { best = box.bottom; }\n    }\n    return Math.round(best);\n  }\n\n  \/\/ \u624b\u6a5f\u7248\u76ee\u9304\u8207\u91cd\u9ede\u90fd\u5728\u64ad\u653e\u5668\u4e0b\u9762\uff0c\u9ede\u4e86\u6642\u9593\u8981\u770b\u5f97\u5230\u756b\u9762\u624d\u6709\u610f\u7fa9\uff1b\n  \/\/ \u4f46\u64ad\u653e\u5668\u672c\u4f86\u5c31\u5728\u8996\u7dda\u5167\u6642\u4e82\u6372\u6703\u5f88\u7169 \u2192 \u53ea\u5728\u5b83\u8dd1\u6389\u6642\u624d\u6372\u3002\n  function scrollToPlayer(){\n    if (!frame) { return; }\n    var box = frame.getBoundingClientRect();\n    var line = themeTop() + 10;\n    if (box.top >= line) {\n      if (box.top < window.innerHeight * 0.5) { return; }\n    }\n    var target = box.top + window.pageYOffset - line;\n    if (target < 0) { target = 0; }\n    try { window.scrollTo({top: target, behavior: 'smooth'}); }\n    catch (error) { window.scrollTo(0, target); }\n  }\n\n  function seekTo(sec){\n    var item = ITEMS[CURRENT];\n    if (!item) { return; }\n    if (PLAYER_READY) {\n      if (PLAYER.seekTo) {\n        try {\n          PLAYER.seekTo(sec, true);\n          if (PLAYER.playVideo) { PLAYER.playVideo(); }\n          paintChapter(sec);\n          startPoll();\n          scrollToPlayer();\n          return;\n        } catch (error) { PLAYER_READY = false; }\n      }\n    }\n    mountVideo(item, true, sec);\n    paintChapter(sec);\n    scrollToPlayer();\n  }\n\n  function renderChapters(item){\n    var list = MARKS[item.mark];\n    if (!list) { list = []; }\n    if (chapList) { chapList.innerHTML = ''; }\n    \/\/ \u6709\u91cd\u9ede\u5c31\u7528\u91cd\u9ede\u53d6\u4ee3\u6458\u8981\uff08\u4f7f\u7528\u8005 2026-09-17 \u6307\u5b9a\uff09\uff1b\u6c92\u586b\u7684\u96c6\u6578\u9000\u56de\u6458\u8981\uff0c\u4e0d\u958b\u5929\u7a97\u3002\n    if (list.length === 0) {\n      if (chapBox) { chapBox.style.display = 'none'; }\n      if (infoText) {\n        infoText.style.display = '';\n        infoText.textContent = item.excerpt;\n      }\n      return;\n    }\n    if (infoText) {\n      infoText.style.display = 'none';\n      infoText.textContent = '';\n    }\n    if (chapBox) { chapBox.style.display = ''; }\n    for (var i = 0; i < list.length; i++) {\n      var mark = list[i];\n      var btn = el('button', 'rbs-play-chap');\n      btn.type = 'button';\n      btn.setAttribute('data-sec', String(mark.sec));\n      btn.appendChild(el('span', 'rbs-play-chap-t', markClock(mark.sec)));\n      btn.appendChild(el('span', 'rbs-play-chap-x', mark.label));\n      if (chapList) { chapList.appendChild(btn); }\n    }\n    if (chapCount) { chapCount.textContent = '\uff08' + list.length + '\uff09'; }\n  }\n\n  function showFrameMessage(text){\n    frame.innerHTML = '';\n    frame.classList.add('rbs-play-frame-empty');\n    frame.appendChild(el('div', '', text));\n  }\n\n  function mountVideo(item, autoplay, startAt){\n    dropPlayer();\n    if (!item.videoId) {\n      showFrameMessage('\u9019\u4e00\u96c6\u7684\u6587\u7ae0\u88e1\u627e\u4e0d\u5230\u5f71\u7247\uff0c\u8acb\u76f4\u63a5\u770b\u5716\u6587\u7248\u3002');\n      return;\n    }\n    frame.classList.remove('rbs-play-frame-empty');\n    frame.innerHTML = '';\n    var iframe = document.createElement('iframe');\n    iframe.setAttribute('src', embedSrc(item.videoId, autoplay, startAt));\n    iframe.setAttribute('title', item.label + ' ' + item.shortTitle);\n    iframe.setAttribute('allow', 'accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture');\n    iframe.setAttribute('allowfullscreen', '');\n    iframe.setAttribute('loading', 'lazy');\n    frame.appendChild(iframe);\n    loadYouTubeApi();\n  }\n\n  function select(index, autoplay){\n    if (index < 0) { return; }\n    if (index >= ITEMS.length) { return; }\n    CURRENT = index;\n    var item = ITEMS[index];\n\n    mountVideo(item, autoplay, 0);\n\n    if (infoEp) { infoEp.textContent = item.label; }\n    if (infoTitle) { infoTitle.textContent = item.shortTitle; }\n    renderChapters(item);\n    if (infoRead) { infoRead.setAttribute('href', item.link); }\n\n    var rows = tocList.querySelectorAll('.rbs-play-row');\n    for (var i = 0; i < rows.length; i++) {\n      if (i === index) { rows[i].classList.add('on'); }\n      else { rows[i].classList.remove('on'); }\n    }\n    if (rows[index]) {\n      rows[index].scrollIntoView({block:'nearest'});\n    }\n\n    if (btnPrev) { btnPrev.disabled = (index === 0); }\n    if (btnNext) { btnNext.disabled = (index === ITEMS.length - 1); }\n\n    try {\n      history.replaceState(null, '', '#' + item.anchor);\n    } catch (error) { return; }\n  }\n\n  function indexFromHash(){\n    var hash = String(location.hash || '').replace('#', '');\n    if (!hash) { return -1; }\n    for (var i = 0; i < ITEMS.length; i++) {\n      if (ITEMS[i].anchor === hash) { return i; }\n    }\n    return -1;\n  }\n\n  function indexFromStart(){\n    if (!CFG.startSlug) { return 0; }\n    for (var i = 0; i < ITEMS.length; i++) {\n      if (ITEMS[i].slug === CFG.startSlug) { return i; }\n    }\n    return 0;\n  }\n\n  function buildToc(){\n    tocList.innerHTML = '';\n    for (var i = 0; i < ITEMS.length; i++) {\n      var item = ITEMS[i];\n      \/\/ href \u6307\u5411\u6587\u7ae0\uff1a\u5de6\u9375\u88ab\u63a5\u7ba1\u6210\u63db\u7247\uff0c\u4e2d\u9375\uff0f\u53f3\u9375\u4ecd\u80fd\u7167\u5e38\u958b\u5716\u6587\u7248\u3002\n      var row = el('a', 'rbs-play-row');\n      row.href = item.link;\n      row.setAttribute('data-index', String(i));\n\n      var thumbBox = el('div', 'rbs-play-row-thumb');\n      if (item.videoId) {\n        var image = document.createElement('img');\n        image.src = 'https:\/\/i.ytimg.com\/vi\/' + item.videoId + '\/mqdefault.jpg';\n        image.alt = '';\n        image.loading = 'lazy';\n        thumbBox.appendChild(image);\n      }\n      row.appendChild(thumbBox);\n\n      var body = el('div', 'rbs-play-row-body');\n      body.appendChild(el('div', 'rbs-play-row-ep', item.label));\n      body.appendChild(el('p', 'rbs-play-row-title', item.shortTitle));\n      \/\/ EP1~EP3 \u7684\u539f\u6a19\u984c\u53ea\u6709\u56db\u5230\u516d\u500b\u5b57\uff0c\u53f3\u908a\u6703\u7a7a\u4e00\u5927\u7247\uff1b\u88dc\u4e00\u884c\u6458\u8981\u628a\u7559\u767d\u586b\u6389\u3002\n      if (item.excerpt) {\n        body.appendChild(el('p', 'rbs-play-row-desc', item.excerpt));\n      }\n      row.appendChild(body);\n      tocList.appendChild(row);\n    }\n\n    tocList.addEventListener('click', function(event){\n      var row = event.target.closest('.rbs-play-row');\n      if (!row) { return; }\n      event.preventDefault();\n      select(parseInt(row.getAttribute('data-index'), 10), true);\n    });\n  }\n\n  function bindActions(){\n    if (chapList) {\n      chapList.addEventListener('click', function(event){\n        var btn = event.target.closest('.rbs-play-chap');\n        if (!btn) { return; }\n        seekTo(parseInt(btn.getAttribute('data-sec'), 10));\n      });\n    }\n    if (btnPrev) {\n      btnPrev.addEventListener('click', function(){ select(CURRENT - 1, true); });\n    }\n    if (btnNext) {\n      btnNext.addEventListener('click', function(){ select(CURRENT + 1, true); });\n    }\n    window.addEventListener('hashchange', function(){\n      var index = indexFromHash();\n      if (index >= 0) {\n        if (index !== CURRENT) { select(index, true); }\n      }\n    });\n  }\n\n  function fail(text){\n    if (tocList) {\n      tocList.innerHTML = '';\n      tocList.appendChild(el('div', 'rbs-play-err', text));\n    }\n    if (frame) { showFrameMessage('\u76ee\u524d\u6c92\u6709\u53ef\u4ee5\u64ad\u653e\u7684\u5f71\u7247\u3002'); }\n  }\n\n  \/\/ \u7de8\u8f2f\u5668\u88e1\u4e0d\u639b\u64ad\u653e\u5668\uff1aiframe \u5728\u756b\u5e03\u4e2d\u81ea\u52d5\u64ad\u653e\u6703\u5f88\u5435\uff0c\u4e5f\u53ef\u80fd\u8b93\u5340\u584a\u72c0\u614b\u932f\u4e82\u3002\n  if (IN_EDITOR) {\n    if (frame) { showFrameMessage('\uff08\u524d\u53f0\u6703\u5728\u9019\u88e1\u986f\u793a\u5f71\u7247\u64ad\u653e\u5668\uff09'); }\n    if (tocList) {\n      tocList.innerHTML = '';\n      tocList.appendChild(el('div', 'rbs-play-loading', '\uff08\u524d\u53f0\u6703\u5728\u9019\u88e1\u986f\u793a\u8ab2\u7a0b\u76ee\u9304\uff09'));\n    }\n    return;\n  }\n\n  fetchCategory().then(function(cat){\n    if (!cat) {\n      fail('\u627e\u4e0d\u5230\u5206\u985e\u4ee3\u865f\u300c' + CFG.cat + '\u300d\uff0c\u8acb\u6aa2\u67e5\u9801\u9762\u6700\u4e0a\u65b9\u8a2d\u5b9a\u5340\u3002');\n      return null;\n    }\n    return fetchPosts(cat);\n  }).then(function(result){\n    if (!result) { return; }\n    if (result.error) {\n      fail('\u5f71\u7247\u6e05\u55ae\u8f09\u5165\u5931\u6557\uff0c\u8acb\u91cd\u65b0\u6574\u7406\u9801\u9762\u3002');\n      return;\n    }\n    if (result.posts.length === 0) {\n      fail('\u9019\u500b\u5206\u985e\u76ee\u524d\u6c92\u6709\u6587\u7ae0\u3002');\n      return;\n    }\n\n    var ordered = baseOrder(result.posts);\n    for (var i = 0; i < ordered.length; i++) {\n      var post = ordered[i];\n      var label = labelOf(post, i);\n      var short = shortTitleOf(post);\n      ITEMS.push({\n        slug: post.slug,\n        label: label,\n        shortTitle: short,\n        excerpt: excerptOf(post, short),\n        link: linkOf(post),\n        videoId: videoIdOf(post),\n        mark: 'EP' + epNum(titleOf(post)),\n        anchor: label.replace(\/[\\s ]+\/g, '-')\n      });\n    }\n\n    buildToc();\n    bindActions();\n    if (tocCount) { tocCount.textContent = '\uff08' + ITEMS.length + '\uff09'; }\n\n    var startIndex = indexFromHash();\n    if (startIndex < 0) { startIndex = indexFromStart(); }\n    select(startIndex, false);\n    root.classList.add('rbs-play-ready');\n  });\n})();\n<\/script>\n<\/div>\n\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":9,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_gspb_post_css":"","footnotes":""},"class_list":["post-6159","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":8}},"acf":[],"_links":{"self":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/6159","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/comments?post=6159"}],"version-history":[{"count":3,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/6159\/revisions"}],"predecessor-version":[{"id":6162,"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/pages\/6159\/revisions\/6162"}],"wp:attachment":[{"href":"https:\/\/rubasseroasters.com\/zh\/wp-json\/wp\/v2\/media?parent=6159"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}