[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"navigation":3,"post-page-\u002Fposts\u002Fquick-post-creation":186},[4],{"title":5,"path":6,"stem":7,"children":8,"page":185},"Posts","\u002Fposts","posts",[9,13,17,21,25,29,33,37,41,45,49,53,57,61,65,69,73,77,81,85,89,93,97,101,105,109,113,117,121,125,129,133,137,141,145,149,153,157,161,165,169,173,177,181],{"title":10,"path":11,"stem":12},"2022年终总结","\u002Fposts\u002F2022-year-end-summary","posts\u002F2022-year-end-summary",{"title":14,"path":15,"stem":16},"2023年终总结","\u002Fposts\u002F2023-year-end-summary","posts\u002F2023-year-end-summary",{"title":18,"path":19,"stem":20},"2024年终总结","\u002Fposts\u002F2024-year-end-summary","posts\u002F2024-year-end-summary",{"title":22,"path":23,"stem":24},"2025年终总结","\u002Fposts\u002F2025-year-end-summary","posts\u002F2025-year-end-summary",{"title":26,"path":27,"stem":28},"制作一个有趣的404页面","\u002Fposts\u002Fadd-an-interesting-404-page","posts\u002Fadd-an-interesting-404-page",{"title":30,"path":31,"stem":32},"光速结束的秋招","\u002Fposts\u002Fautumn-move-that-ends-at-the-speed-of-light","posts\u002Fautumn-move-that-ends-at-the-speed-of-light",{"title":34,"path":35,"stem":36},"总是遇到一些烂项目","\u002Fposts\u002Fbad-projects-always-encountered","posts\u002Fbad-projects-always-encountered",{"title":38,"path":39,"stem":40},"又买了一辆车","\u002Fposts\u002Fbuy-another-car","posts\u002Fbuy-another-car",{"title":42,"path":43,"stem":44},"CesiumJS初始化","\u002Fposts\u002Fcesium-demos-init","posts\u002Fcesium-demos-init",{"title":46,"path":47,"stem":48},"情侣之间的矛盾","\u002Fposts\u002Fcouple-conflicts","posts\u002Fcouple-conflicts",{"title":50,"path":51,"stem":52},"自定义hugo短代码","\u002Fposts\u002Fcustom-hugo-shortcode","posts\u002Fcustom-hugo-shortcode",{"title":54,"path":55,"stem":56},"基于Element ui的日期滑块设计","\u002Fposts\u002Fdateslider-by-elementui","posts\u002Fdateslider-by-elementui",{"title":58,"path":59,"stem":60},"培养阅读和写作的习惯","\u002Fposts\u002Fdevelop-reading-and-writing-habits","posts\u002Fdevelop-reading-and-writing-habits",{"title":62,"path":63,"stem":64},"懒折桂枝","\u002Fposts\u002Fdisdain-the-laurel","posts\u002Fdisdain-the-laurel",{"title":66,"path":67,"stem":68},"就业求职二三事","\u002Fposts\u002Femployment-and-job-hunting-matters","posts\u002Femployment-and-job-hunting-matters",{"title":70,"path":71,"stem":72},"两年之期已满，龙王尚未归位","\u002Fposts\u002Fend-of-first-labor-contract","posts\u002Fend-of-first-labor-contract",{"title":74,"path":75,"stem":76},"终于毕业了","\u002Fposts\u002Ffinally-graduated","posts\u002Ffinally-graduated",{"title":78,"path":79,"stem":80},"第一次和女朋友买衣服","\u002Fposts\u002Ffirst-shopping-with-girlfriend","posts\u002Ffirst-shopping-with-girlfriend",{"title":82,"path":83,"stem":84},"从解封到变阳","\u002Fposts\u002Ffrom-unblocking-to-be-diagnosed","posts\u002Ffrom-unblocking-to-be-diagnosed",{"title":86,"path":87,"stem":88},"大和解","\u002Fposts\u002Fgreat-reconciliation","posts\u002Fgreat-reconciliation",{"title":90,"path":91,"stem":92},"无效争论","\u002Fposts\u002Finvalid-argument","posts\u002Finvalid-argument",{"title":94,"path":95,"stem":96},"生活的恶意与人的运势","\u002Fposts\u002Fmalice-of-life-and-human-fortune","posts\u002Fmalice-of-life-and-human-fortune",{"title":98,"path":99,"stem":100},"男人应该自信","\u002Fposts\u002Fmen-should-be-confident","posts\u002Fmen-should-be-confident",{"title":102,"path":103,"stem":104},"第一次装机记录","\u002Fposts\u002Fmy-first-computer-build","posts\u002Fmy-first-computer-build",{"title":106,"path":107,"stem":108},"三年之痛","\u002Fposts\u002Fpain-of-three-years","posts\u002Fpain-of-three-years",{"title":110,"path":111,"stem":112},"使用 pnpm 管理 nodejs 版本","\u002Fposts\u002Fpnpm-manages-nodejs-version","posts\u002Fpnpm-manages-nodejs-version",{"title":114,"path":115,"stem":116},"快速创建一篇博客文章","\u002Fposts\u002Fquick-post-creation","posts\u002Fquick-post-creation",{"title":118,"path":119,"stem":120},"记录一下和对象的坎坷","\u002Fposts\u002Frecording-the-bumpy-road-with-objects","posts\u002Frecording-the-bumpy-road-with-objects",{"title":122,"path":123,"stem":124},"审了一份简历","\u002Fposts\u002Freviewing-a-resume","posts\u002Freviewing-a-resume",{"title":126,"path":127,"stem":128},"使用 ACME 申请证书并自动续期","\u002Fposts\u002Fset-acme-certificate-with-auto-renew","posts\u002Fset-acme-certificate-with-auto-renew",{"title":130,"path":131,"stem":132},"为文章设置过期提示","\u002Fposts\u002Fset-expiration-reminder-for-posts","posts\u002Fset-expiration-reminder-for-posts",{"title":134,"path":135,"stem":136},"鞋带和代码","\u002Fposts\u002Fshoelace-and-code","posts\u002Fshoelace-and-code",{"title":138,"path":139,"stem":140},"闲聊前端工程师的能力与职责","\u002Fposts\u002Fthe-capabilities-and-responsibilities-of-frontend-engineers","posts\u002Fthe-capabilities-and-responsibilities-of-frontend-engineers",{"title":142,"path":143,"stem":144},"根标签\u003Chtml>与伪类:root的区别","\u002Fposts\u002Fthe-difference-between-root-and-html","posts\u002Fthe-difference-between-root-and-html",{"title":146,"path":147,"stem":148},"门边的素质","\u002Fposts\u002Fthe-qualities-at-the-doors","posts\u002Fthe-qualities-at-the-doors",{"title":150,"path":151,"stem":152},"uni-leaflet 官方文档","\u002Fposts\u002Funi-leaflet-doc","posts\u002Funi-leaflet-doc",{"title":154,"path":155,"stem":156},"Vue速通(1)","\u002Fposts\u002Fvue-speedrun-1","posts\u002Fvue-speedrun-1",{"title":158,"path":159,"stem":160},"Vue速通(2)","\u002Fposts\u002Fvue-speedrun-2","posts\u002Fvue-speedrun-2",{"title":162,"path":163,"stem":164},"Vue速通(3)","\u002Fposts\u002Fvue-speedrun-3","posts\u002Fvue-speedrun-3",{"title":166,"path":167,"stem":168},"Vue速通(4)","\u002Fposts\u002Fvue-speedrun-4","posts\u002Fvue-speedrun-4",{"title":170,"path":171,"stem":172},"Vue速通(5)","\u002Fposts\u002Fvue-speedrun-5","posts\u002Fvue-speedrun-5",{"title":174,"path":175,"stem":176},"Vue速通(6)","\u002Fposts\u002Fvue-speedrun-6","posts\u002Fvue-speedrun-6",{"title":178,"path":179,"stem":180},"WSL2 访问 Clash 网络代理","\u002Fposts\u002Fwsl2-access-clash-network-proxy","posts\u002Fwsl2-access-clash-network-proxy",{"title":182,"path":183,"stem":184},"WSL2 中网络服务访问 localhost","\u002Fposts\u002Fwsl2-network-service-work-on-localhost","posts\u002Fwsl2-network-service-work-on-localhost",false,{"post":187,"prevPost":2330,"nextPost":2338,"relatedPosts":2343},{"id":188,"title":114,"aigc":185,"body":189,"categories":2319,"cover":2321,"createdAt":2322,"description":195,"draft":185,"encrypted":185,"extension":234,"hidden":185,"meta":2323,"navigation":337,"original":185,"outdated":185,"outdatedAt":2321,"outdatedWarning":2321,"path":115,"seo":2324,"stem":116,"subTitle":2321,"tags":2325,"toc":185,"updatedAt":2321,"__hash__":2328,"charCount":2329},"posts\u002Fposts\u002Fquick-post-creation.md",{"type":190,"value":191,"toc":2317},"minimark",[192,196,199,202,205,218,226,229,283,286,2313],[193,194,195],"p",{},"最近想多总结、创作。但是创建一篇文章还是有些麻烦的，我是使用md文档管理博文的，其中需要设置文件的文件名、文章的标题、路由、创建时间、分类、标签等。",[193,197,198],{},"最先我是手动复制一篇模板，然后逐个修改上述参数。后来使用node脚本可以自动设置文件名、文章路由、创建时间。",[193,200,201],{},"文章的文件名和路由通常是一致的，且为了seo友好，通常设置语义化英文。但是我的英文随着毕业，越来越差劲了，每回都是先想好中文标题，然后Google翻译为英文，然后再使用脚本创建文件，填入中文标题。说实话挺费劲的，我最先想好的的文章标题，居然需要粘贴两次才能正式确认。",[193,203,204],{},"这个机械的过程，完全可以使用 AI 帮助我完成，综合考量之下，我发现互联网活佛 Cloudflare 的 Workers AI 可以完美的满足我的需求：",[206,207,208,212,215],"ol",{},[209,210,211],"li",{},"拥有一定的免费 token，且定期刷新。",[209,213,214],{},"可以直接使用 api 调用。",[209,216,217],{},"无需实名认证等强制要求。",[193,219,220,221,225],{},"这样我就可以直接在脚本中插入中文参数，然后 AI 自动翻译为英文，设置为文件名和文章路由，无需打开翻译软件。例如： ",[222,223,224],"code",{},"pnpm new-post 快速创建一篇博文","。",[193,227,228],{},"然后我就获得了 quick-post-creation.md 文件如下：",[230,231,236],"pre",{"className":232,"code":233,"language":234,"meta":235,"style":235},"language-md shiki shiki-themes github-dark","---\ntitle: '快速创建一篇博客文章'\npath: '\u002Fposts\u002Fquick-post-creation'\ncreatedAt: '2026-05-18T16:35:42+08:00'\ncategories: []\ntags: []\n---\n","md","",[222,237,238,247,254,260,266,272,278],{"__ignoreMap":235},[239,240,243],"span",{"class":241,"line":242},"line",1,[239,244,246],{"class":245},"sIZOC","---\n",[239,248,250],{"class":241,"line":249},2,[239,251,253],{"class":252},"s95oV","title: '快速创建一篇博客文章'\n",[239,255,257],{"class":241,"line":256},3,[239,258,259],{"class":252},"path: '\u002Fposts\u002Fquick-post-creation'\n",[239,261,263],{"class":241,"line":262},4,[239,264,265],{"class":252},"createdAt: '2026-05-18T16:35:42+08:00'\n",[239,267,269],{"class":241,"line":268},5,[239,270,271],{"class":252},"categories: []\n",[239,273,275],{"class":241,"line":274},6,[239,276,277],{"class":252},"tags: []\n",[239,279,281],{"class":241,"line":280},7,[239,282,246],{"class":245},[193,284,285],{},"看起来很完美，省下的功夫够我多写两篇博文了，下面记录一下我的脚本：",[230,287,291],{"className":288,"code":289,"language":290,"meta":235,"style":235},"language-javascript shiki shiki-themes github-dark","import fs from 'fs'\nimport path from 'path'\nimport dotenv from 'dotenv'\n\ndotenv.config({\n  path: process.env.NUXT_ENV_DOTENV || '.env.production',\n})\n\n\u002F\u002F =====================  Cloudflare API 配置  =====================\nconst CLOUDFLARE_ACCOUNT_ID = process.env.CLOUDFLARE_ACCOUNT_ID\nconst CLOUDFLARE_API_TOKEN = process.env.CLOUDFLARE_API_TOKEN\nconst CLOUDFLARE_AI_MODEL = process.env.CLOUDFLARE_AI_MODEL\n\nif (!CLOUDFLARE_ACCOUNT_ID || !CLOUDFLARE_API_TOKEN || !CLOUDFLARE_AI_MODEL) {\n  console.error('❌ 环境变量读取失败！请检查 .env 文件是否配置完整')\n  console.error('CLOUDFLARE_ACCOUNT_ID:', CLOUDFLARE_ACCOUNT_ID)\n  console.error(\n    'CLOUDFLARE_API_TOKEN:',\n    CLOUDFLARE_API_TOKEN ? '已配置' : '未配置',\n  )\n  process.exit(1)\n}\n\u002F\u002F ===============================================================\n\nfunction pad(n) {\n  return String(n).padStart(2, '0')\n}\nfunction formatLocalISO(d = new Date()) {\n  const year = d.getFullYear()\n  const month = pad(d.getMonth() + 1)\n  const day = pad(d.getDate())\n  const hours = pad(d.getHours())\n  const minutes = pad(d.getMinutes())\n  const seconds = pad(d.getSeconds())\n  const offsetMin = -d.getTimezoneOffset()\n  const sign = offsetMin >= 0 ? '+' : '-'\n  const offH = pad(Math.floor(Math.abs(offsetMin) \u002F 60))\n  const offM = pad(Math.abs(offsetMin) % 60)\n  return `'${year}-${month}-${day}T${hours}:${minutes}:${seconds}${sign}${offH}:${offM}'`\n}\n\nasync function generateSlugFromChineseTitle(chineseTitle) {\n  try {\n    const prompt = `请将以下中文标题翻译成纯英文，仅返回英文，无任何其他文字，如无必要无需使用the开头，在保证语义完整的情况下尽量简洁干练，用于URL路径：\"${chineseTitle}\"`\n\n    \u002F\u002F 调用 Cloudflare AI API\n    const response = await fetch(\n      `https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Faccounts\u002F${CLOUDFLARE_ACCOUNT_ID}\u002Fai\u002Frun\u002F${CLOUDFLARE_AI_MODEL}`,\n      {\n        method: 'POST',\n        headers: {\n          Authorization: `Bearer ${CLOUDFLARE_API_TOKEN}`,\n          'Content-Type': 'application\u002Fjson',\n        },\n        body: JSON.stringify({\n          messages: [{ role: 'user', content: prompt }],\n        }),\n      },\n    )\n\n    const result = await response.json()\n\n    \u002F\u002F 接口调用失败处理\n    if (!result.success) {\n      throw new Error(result.errors?.[0]?.message || 'Cloudflare API 调用失败')\n    }\n\n    const englishText = result.result.response.trim()\n    \u002F\u002F 生成URL友好的slug\n    const slug = englishText\n      .toLowerCase()\n      .replace(\u002F[^a-z0-9]+\u002Fg, '-')\n      .replace(\u002F^-+|-+$\u002Fg, '')\n\n    return slug\n  } catch (err) {\n    console.error('Cloudflare AI生成失败：', err.message)\n    process.exit(1)\n  }\n}\n\nasync function main() {\n  const chineseTitle = process.argv[2]\n  if (!chineseTitle) {\n    console.log('用法：pnpm new-post \"中文文章标题\"')\n    process.exit(1)\n  }\n\n  const slug = await generateSlugFromChineseTitle(chineseTitle)\n  const filename = `${slug}.md`\n  const title = chineseTitle\n\n  const targetDir = path.resolve(process.cwd(), 'content', 'posts')\n  const targetPath = path.join(targetDir, filename)\n\n  if (fs.existsSync(targetPath)) {\n    console.error('文件已存在：', targetPath)\n    process.exit(1)\n  }\n\n  await fs.promises.mkdir(targetDir, { recursive: true })\n\n  const templatePath = path.resolve(\n    process.cwd(),\n    'scripts',\n    'temp',\n    'default.md',\n  )\n  let tpl = ''\n  try {\n    tpl = await fs.promises.readFile(templatePath, 'utf8')\n  } catch (e) {\n    tpl = `---\ntitle: '${title}'\npath: '\u002Fposts\u002F${slug}'\ncreatedAt: ${formatLocalISO()}\ncategories: []\ntags: []\ndraft: true\n---\n`\n  }\n\n  if (\u002F^---\\n[\\s\\S]*?\\n---\u002Fm.test(tpl)) {\n    tpl = tpl.replace(\u002F^title:.*$\u002Fm, `title: '${title}'`)\n    tpl = tpl.replace(\u002F^path:.*$\u002Fm, `path: '\u002Fposts\u002F${slug}'`)\n    tpl = tpl.replace(\u002F^createdAt:.*$\u002Fm, `createdAt: ${formatLocalISO()}`)\n  } else {\n    tpl =\n      `---\ntitle: '${title}'\npath: '\u002Fposts\u002F${slug}'\ncreatedAt: ${formatLocalISO()}\ncategories: []\ntags: []\ndraft: true\n---\n\n` + tpl\n  }\n\n  await fs.promises.writeFile(targetPath, tpl, 'utf8')\n  console.log('✅ 创建成功：', path.relative(process.cwd(), targetPath))\n  console.log('📝 标题：', title)\n  console.log('🔗 路径：', `\u002Fposts\u002F${slug}`)\n}\n\nmain().catch((err) => {\n  console.error('❌ 执行失败：', err)\n  process.exit(1)\n})\n\n","javascript",[222,292,293,309,321,333,339,351,369,374,379,386,404,419,434,439,472,490,509,519,527,547,553,569,575,581,586,603,630,635,659,679,708,728,747,766,785,806,835,870,895,953,958,963,982,991,1010,1015,1021,1039,1057,1063,1074,1080,1095,1109,1115,1132,1144,1150,1156,1162,1167,1187,1192,1198,1211,1239,1245,1250,1268,1274,1287,1298,1333,1369,1374,1383,1395,1411,1425,1431,1436,1441,1454,1472,1485,1500,1513,1518,1523,1539,1558,1571,1576,1611,1629,1634,1648,1663,1676,1681,1686,1707,1712,1728,1738,1746,1754,1762,1767,1782,1789,1812,1822,1832,1844,1854,1868,1873,1878,1884,1889,1895,1900,1905,1943,1985,2024,2065,2075,2083,2089,2098,2107,2118,2123,2128,2133,2138,2143,2155,2160,2165,2182,2207,2222,2245,2250,2255,2280,2295,2308],{"__ignoreMap":235},[239,294,295,299,302,305],{"class":241,"line":242},[239,296,298],{"class":297},"snl16","import",[239,300,301],{"class":252}," fs ",[239,303,304],{"class":297},"from",[239,306,308],{"class":307},"sU2Wk"," 'fs'\n",[239,310,311,313,316,318],{"class":241,"line":249},[239,312,298],{"class":297},[239,314,315],{"class":252}," path ",[239,317,304],{"class":297},[239,319,320],{"class":307}," 'path'\n",[239,322,323,325,328,330],{"class":241,"line":256},[239,324,298],{"class":297},[239,326,327],{"class":252}," dotenv ",[239,329,304],{"class":297},[239,331,332],{"class":307}," 'dotenv'\n",[239,334,335],{"class":241,"line":262},[239,336,338],{"emptyLinePlaceholder":337},true,"\n",[239,340,341,344,348],{"class":241,"line":268},[239,342,343],{"class":252},"dotenv.",[239,345,347],{"class":346},"svObZ","config",[239,349,350],{"class":252},"({\n",[239,352,353,356,360,363,366],{"class":241,"line":274},[239,354,355],{"class":252},"  path: process.env.",[239,357,359],{"class":358},"sDLfK","NUXT_ENV_DOTENV",[239,361,362],{"class":297}," ||",[239,364,365],{"class":307}," '.env.production'",[239,367,368],{"class":252},",\n",[239,370,371],{"class":241,"line":280},[239,372,373],{"class":252},"})\n",[239,375,377],{"class":241,"line":376},8,[239,378,338],{"emptyLinePlaceholder":337},[239,380,382],{"class":241,"line":381},9,[239,383,385],{"class":384},"sAwPA","\u002F\u002F =====================  Cloudflare API 配置  =====================\n",[239,387,389,392,395,398,401],{"class":241,"line":388},10,[239,390,391],{"class":297},"const",[239,393,394],{"class":358}," CLOUDFLARE_ACCOUNT_ID",[239,396,397],{"class":297}," =",[239,399,400],{"class":252}," process.env.",[239,402,403],{"class":358},"CLOUDFLARE_ACCOUNT_ID\n",[239,405,407,409,412,414,416],{"class":241,"line":406},11,[239,408,391],{"class":297},[239,410,411],{"class":358}," CLOUDFLARE_API_TOKEN",[239,413,397],{"class":297},[239,415,400],{"class":252},[239,417,418],{"class":358},"CLOUDFLARE_API_TOKEN\n",[239,420,422,424,427,429,431],{"class":241,"line":421},12,[239,423,391],{"class":297},[239,425,426],{"class":358}," CLOUDFLARE_AI_MODEL",[239,428,397],{"class":297},[239,430,400],{"class":252},[239,432,433],{"class":358},"CLOUDFLARE_AI_MODEL\n",[239,435,437],{"class":241,"line":436},13,[239,438,338],{"emptyLinePlaceholder":337},[239,440,442,445,448,451,454,456,459,462,464,466,469],{"class":241,"line":441},14,[239,443,444],{"class":297},"if",[239,446,447],{"class":252}," (",[239,449,450],{"class":297},"!",[239,452,453],{"class":358},"CLOUDFLARE_ACCOUNT_ID",[239,455,362],{"class":297},[239,457,458],{"class":297}," !",[239,460,461],{"class":358},"CLOUDFLARE_API_TOKEN",[239,463,362],{"class":297},[239,465,458],{"class":297},[239,467,468],{"class":358},"CLOUDFLARE_AI_MODEL",[239,470,471],{"class":252},") {\n",[239,473,475,478,481,484,487],{"class":241,"line":474},15,[239,476,477],{"class":252},"  console.",[239,479,480],{"class":346},"error",[239,482,483],{"class":252},"(",[239,485,486],{"class":307},"'❌ 环境变量读取失败！请检查 .env 文件是否配置完整'",[239,488,489],{"class":252},")\n",[239,491,493,495,497,499,502,505,507],{"class":241,"line":492},16,[239,494,477],{"class":252},[239,496,480],{"class":346},[239,498,483],{"class":252},[239,500,501],{"class":307},"'CLOUDFLARE_ACCOUNT_ID:'",[239,503,504],{"class":252},", ",[239,506,453],{"class":358},[239,508,489],{"class":252},[239,510,512,514,516],{"class":241,"line":511},17,[239,513,477],{"class":252},[239,515,480],{"class":346},[239,517,518],{"class":252},"(\n",[239,520,522,525],{"class":241,"line":521},18,[239,523,524],{"class":307},"    'CLOUDFLARE_API_TOKEN:'",[239,526,368],{"class":252},[239,528,530,533,536,539,542,545],{"class":241,"line":529},19,[239,531,532],{"class":358},"    CLOUDFLARE_API_TOKEN",[239,534,535],{"class":297}," ?",[239,537,538],{"class":307}," '已配置'",[239,540,541],{"class":297}," :",[239,543,544],{"class":307}," '未配置'",[239,546,368],{"class":252},[239,548,550],{"class":241,"line":549},20,[239,551,552],{"class":252},"  )\n",[239,554,556,559,562,564,567],{"class":241,"line":555},21,[239,557,558],{"class":252},"  process.",[239,560,561],{"class":346},"exit",[239,563,483],{"class":252},[239,565,566],{"class":358},"1",[239,568,489],{"class":252},[239,570,572],{"class":241,"line":571},22,[239,573,574],{"class":252},"}\n",[239,576,578],{"class":241,"line":577},23,[239,579,580],{"class":384},"\u002F\u002F ===============================================================\n",[239,582,584],{"class":241,"line":583},24,[239,585,338],{"emptyLinePlaceholder":337},[239,587,589,592,595,597,601],{"class":241,"line":588},25,[239,590,591],{"class":297},"function",[239,593,594],{"class":346}," pad",[239,596,483],{"class":252},[239,598,600],{"class":599},"s9osk","n",[239,602,471],{"class":252},[239,604,606,609,612,615,618,620,623,625,628],{"class":241,"line":605},26,[239,607,608],{"class":297},"  return",[239,610,611],{"class":346}," String",[239,613,614],{"class":252},"(n).",[239,616,617],{"class":346},"padStart",[239,619,483],{"class":252},[239,621,622],{"class":358},"2",[239,624,504],{"class":252},[239,626,627],{"class":307},"'0'",[239,629,489],{"class":252},[239,631,633],{"class":241,"line":632},27,[239,634,574],{"class":252},[239,636,638,640,643,645,648,650,653,656],{"class":241,"line":637},28,[239,639,591],{"class":297},[239,641,642],{"class":346}," formatLocalISO",[239,644,483],{"class":252},[239,646,647],{"class":599},"d",[239,649,397],{"class":297},[239,651,652],{"class":297}," new",[239,654,655],{"class":346}," Date",[239,657,658],{"class":252},"()) {\n",[239,660,662,665,668,670,673,676],{"class":241,"line":661},29,[239,663,664],{"class":297},"  const",[239,666,667],{"class":358}," year",[239,669,397],{"class":297},[239,671,672],{"class":252}," d.",[239,674,675],{"class":346},"getFullYear",[239,677,678],{"class":252},"()\n",[239,680,682,684,687,689,691,694,697,700,703,706],{"class":241,"line":681},30,[239,683,664],{"class":297},[239,685,686],{"class":358}," month",[239,688,397],{"class":297},[239,690,594],{"class":346},[239,692,693],{"class":252},"(d.",[239,695,696],{"class":346},"getMonth",[239,698,699],{"class":252},"() ",[239,701,702],{"class":297},"+",[239,704,705],{"class":358}," 1",[239,707,489],{"class":252},[239,709,711,713,716,718,720,722,725],{"class":241,"line":710},31,[239,712,664],{"class":297},[239,714,715],{"class":358}," day",[239,717,397],{"class":297},[239,719,594],{"class":346},[239,721,693],{"class":252},[239,723,724],{"class":346},"getDate",[239,726,727],{"class":252},"())\n",[239,729,731,733,736,738,740,742,745],{"class":241,"line":730},32,[239,732,664],{"class":297},[239,734,735],{"class":358}," hours",[239,737,397],{"class":297},[239,739,594],{"class":346},[239,741,693],{"class":252},[239,743,744],{"class":346},"getHours",[239,746,727],{"class":252},[239,748,750,752,755,757,759,761,764],{"class":241,"line":749},33,[239,751,664],{"class":297},[239,753,754],{"class":358}," minutes",[239,756,397],{"class":297},[239,758,594],{"class":346},[239,760,693],{"class":252},[239,762,763],{"class":346},"getMinutes",[239,765,727],{"class":252},[239,767,769,771,774,776,778,780,783],{"class":241,"line":768},34,[239,770,664],{"class":297},[239,772,773],{"class":358}," seconds",[239,775,397],{"class":297},[239,777,594],{"class":346},[239,779,693],{"class":252},[239,781,782],{"class":346},"getSeconds",[239,784,727],{"class":252},[239,786,788,790,793,795,798,801,804],{"class":241,"line":787},35,[239,789,664],{"class":297},[239,791,792],{"class":358}," offsetMin",[239,794,397],{"class":297},[239,796,797],{"class":297}," -",[239,799,800],{"class":252},"d.",[239,802,803],{"class":346},"getTimezoneOffset",[239,805,678],{"class":252},[239,807,809,811,814,816,819,822,825,827,830,832],{"class":241,"line":808},36,[239,810,664],{"class":297},[239,812,813],{"class":358}," sign",[239,815,397],{"class":297},[239,817,818],{"class":252}," offsetMin ",[239,820,821],{"class":297},">=",[239,823,824],{"class":358}," 0",[239,826,535],{"class":297},[239,828,829],{"class":307}," '+'",[239,831,541],{"class":297},[239,833,834],{"class":307}," '-'\n",[239,836,838,840,843,845,847,850,853,855,858,861,864,867],{"class":241,"line":837},37,[239,839,664],{"class":297},[239,841,842],{"class":358}," offH",[239,844,397],{"class":297},[239,846,594],{"class":346},[239,848,849],{"class":252},"(Math.",[239,851,852],{"class":346},"floor",[239,854,849],{"class":252},[239,856,857],{"class":346},"abs",[239,859,860],{"class":252},"(offsetMin) ",[239,862,863],{"class":297},"\u002F",[239,865,866],{"class":358}," 60",[239,868,869],{"class":252},"))\n",[239,871,873,875,878,880,882,884,886,888,891,893],{"class":241,"line":872},38,[239,874,664],{"class":297},[239,876,877],{"class":358}," offM",[239,879,397],{"class":297},[239,881,594],{"class":346},[239,883,849],{"class":252},[239,885,857],{"class":346},[239,887,860],{"class":252},[239,889,890],{"class":297},"%",[239,892,866],{"class":358},[239,894,489],{"class":252},[239,896,898,900,903,906,909,912,914,917,920,923,926,929,931,934,937,940,942,945,947,950],{"class":241,"line":897},39,[239,899,608],{"class":297},[239,901,902],{"class":307}," `'${",[239,904,905],{"class":252},"year",[239,907,908],{"class":307},"}-${",[239,910,911],{"class":252},"month",[239,913,908],{"class":307},[239,915,916],{"class":252},"day",[239,918,919],{"class":307},"}T${",[239,921,922],{"class":252},"hours",[239,924,925],{"class":307},"}:${",[239,927,928],{"class":252},"minutes",[239,930,925],{"class":307},[239,932,933],{"class":252},"seconds",[239,935,936],{"class":307},"}${",[239,938,939],{"class":252},"sign",[239,941,936],{"class":307},[239,943,944],{"class":252},"offH",[239,946,925],{"class":307},[239,948,949],{"class":252},"offM",[239,951,952],{"class":307},"}'`\n",[239,954,956],{"class":241,"line":955},40,[239,957,574],{"class":252},[239,959,961],{"class":241,"line":960},41,[239,962,338],{"emptyLinePlaceholder":337},[239,964,966,969,972,975,977,980],{"class":241,"line":965},42,[239,967,968],{"class":297},"async",[239,970,971],{"class":297}," function",[239,973,974],{"class":346}," generateSlugFromChineseTitle",[239,976,483],{"class":252},[239,978,979],{"class":599},"chineseTitle",[239,981,471],{"class":252},[239,983,985,988],{"class":241,"line":984},43,[239,986,987],{"class":297},"  try",[239,989,990],{"class":252}," {\n",[239,992,994,997,1000,1002,1005,1007],{"class":241,"line":993},44,[239,995,996],{"class":297},"    const",[239,998,999],{"class":358}," prompt",[239,1001,397],{"class":297},[239,1003,1004],{"class":307}," `请将以下中文标题翻译成纯英文，仅返回英文，无任何其他文字，如无必要无需使用the开头，在保证语义完整的情况下尽量简洁干练，用于URL路径：\"${",[239,1006,979],{"class":252},[239,1008,1009],{"class":307},"}\"`\n",[239,1011,1013],{"class":241,"line":1012},45,[239,1014,338],{"emptyLinePlaceholder":337},[239,1016,1018],{"class":241,"line":1017},46,[239,1019,1020],{"class":384},"    \u002F\u002F 调用 Cloudflare AI API\n",[239,1022,1024,1026,1029,1031,1034,1037],{"class":241,"line":1023},47,[239,1025,996],{"class":297},[239,1027,1028],{"class":358}," response",[239,1030,397],{"class":297},[239,1032,1033],{"class":297}," await",[239,1035,1036],{"class":346}," fetch",[239,1038,518],{"class":252},[239,1040,1042,1045,1047,1050,1052,1055],{"class":241,"line":1041},48,[239,1043,1044],{"class":307},"      `https:\u002F\u002Fapi.cloudflare.com\u002Fclient\u002Fv4\u002Faccounts\u002F${",[239,1046,453],{"class":358},[239,1048,1049],{"class":307},"}\u002Fai\u002Frun\u002F${",[239,1051,468],{"class":358},[239,1053,1054],{"class":307},"}`",[239,1056,368],{"class":252},[239,1058,1060],{"class":241,"line":1059},49,[239,1061,1062],{"class":252},"      {\n",[239,1064,1066,1069,1072],{"class":241,"line":1065},50,[239,1067,1068],{"class":252},"        method: ",[239,1070,1071],{"class":307},"'POST'",[239,1073,368],{"class":252},[239,1075,1077],{"class":241,"line":1076},51,[239,1078,1079],{"class":252},"        headers: {\n",[239,1081,1083,1086,1089,1091,1093],{"class":241,"line":1082},52,[239,1084,1085],{"class":252},"          Authorization: ",[239,1087,1088],{"class":307},"`Bearer ${",[239,1090,461],{"class":358},[239,1092,1054],{"class":307},[239,1094,368],{"class":252},[239,1096,1098,1101,1104,1107],{"class":241,"line":1097},53,[239,1099,1100],{"class":307},"          'Content-Type'",[239,1102,1103],{"class":252},": ",[239,1105,1106],{"class":307},"'application\u002Fjson'",[239,1108,368],{"class":252},[239,1110,1112],{"class":241,"line":1111},54,[239,1113,1114],{"class":252},"        },\n",[239,1116,1118,1121,1124,1127,1130],{"class":241,"line":1117},55,[239,1119,1120],{"class":252},"        body: ",[239,1122,1123],{"class":358},"JSON",[239,1125,1126],{"class":252},".",[239,1128,1129],{"class":346},"stringify",[239,1131,350],{"class":252},[239,1133,1135,1138,1141],{"class":241,"line":1134},56,[239,1136,1137],{"class":252},"          messages: [{ role: ",[239,1139,1140],{"class":307},"'user'",[239,1142,1143],{"class":252},", content: prompt }],\n",[239,1145,1147],{"class":241,"line":1146},57,[239,1148,1149],{"class":252},"        }),\n",[239,1151,1153],{"class":241,"line":1152},58,[239,1154,1155],{"class":252},"      },\n",[239,1157,1159],{"class":241,"line":1158},59,[239,1160,1161],{"class":252},"    )\n",[239,1163,1165],{"class":241,"line":1164},60,[239,1166,338],{"emptyLinePlaceholder":337},[239,1168,1170,1172,1175,1177,1179,1182,1185],{"class":241,"line":1169},61,[239,1171,996],{"class":297},[239,1173,1174],{"class":358}," result",[239,1176,397],{"class":297},[239,1178,1033],{"class":297},[239,1180,1181],{"class":252}," response.",[239,1183,1184],{"class":346},"json",[239,1186,678],{"class":252},[239,1188,1190],{"class":241,"line":1189},62,[239,1191,338],{"emptyLinePlaceholder":337},[239,1193,1195],{"class":241,"line":1194},63,[239,1196,1197],{"class":384},"    \u002F\u002F 接口调用失败处理\n",[239,1199,1201,1204,1206,1208],{"class":241,"line":1200},64,[239,1202,1203],{"class":297},"    if",[239,1205,447],{"class":252},[239,1207,450],{"class":297},[239,1209,1210],{"class":252},"result.success) {\n",[239,1212,1214,1217,1219,1222,1225,1228,1231,1234,1237],{"class":241,"line":1213},65,[239,1215,1216],{"class":297},"      throw",[239,1218,652],{"class":297},[239,1220,1221],{"class":346}," Error",[239,1223,1224],{"class":252},"(result.errors?.[",[239,1226,1227],{"class":358},"0",[239,1229,1230],{"class":252},"]?.message ",[239,1232,1233],{"class":297},"||",[239,1235,1236],{"class":307}," 'Cloudflare API 调用失败'",[239,1238,489],{"class":252},[239,1240,1242],{"class":241,"line":1241},66,[239,1243,1244],{"class":252},"    }\n",[239,1246,1248],{"class":241,"line":1247},67,[239,1249,338],{"emptyLinePlaceholder":337},[239,1251,1253,1255,1258,1260,1263,1266],{"class":241,"line":1252},68,[239,1254,996],{"class":297},[239,1256,1257],{"class":358}," englishText",[239,1259,397],{"class":297},[239,1261,1262],{"class":252}," result.result.response.",[239,1264,1265],{"class":346},"trim",[239,1267,678],{"class":252},[239,1269,1271],{"class":241,"line":1270},69,[239,1272,1273],{"class":384},"    \u002F\u002F 生成URL友好的slug\n",[239,1275,1277,1279,1282,1284],{"class":241,"line":1276},70,[239,1278,996],{"class":297},[239,1280,1281],{"class":358}," slug",[239,1283,397],{"class":297},[239,1285,1286],{"class":252}," englishText\n",[239,1288,1290,1293,1296],{"class":241,"line":1289},71,[239,1291,1292],{"class":252},"      .",[239,1294,1295],{"class":346},"toLowerCase",[239,1297,678],{"class":252},[239,1299,1301,1303,1306,1308,1310,1313,1316,1319,1321,1323,1326,1328,1331],{"class":241,"line":1300},72,[239,1302,1292],{"class":252},[239,1304,1305],{"class":346},"replace",[239,1307,483],{"class":252},[239,1309,863],{"class":307},[239,1311,1312],{"class":358},"[",[239,1314,1315],{"class":297},"^",[239,1317,1318],{"class":358},"a-z0-9]",[239,1320,702],{"class":297},[239,1322,863],{"class":307},[239,1324,1325],{"class":297},"g",[239,1327,504],{"class":252},[239,1329,1330],{"class":307},"'-'",[239,1332,489],{"class":252},[239,1334,1336,1338,1340,1342,1344,1346,1350,1353,1355,1358,1360,1362,1364,1367],{"class":241,"line":1335},73,[239,1337,1292],{"class":252},[239,1339,1305],{"class":346},[239,1341,483],{"class":252},[239,1343,863],{"class":307},[239,1345,1315],{"class":297},[239,1347,1349],{"class":1348},"sns5M","-",[239,1351,1352],{"class":297},"+|",[239,1354,1349],{"class":1348},[239,1356,1357],{"class":297},"+$",[239,1359,863],{"class":307},[239,1361,1325],{"class":297},[239,1363,504],{"class":252},[239,1365,1366],{"class":307},"''",[239,1368,489],{"class":252},[239,1370,1372],{"class":241,"line":1371},74,[239,1373,338],{"emptyLinePlaceholder":337},[239,1375,1377,1380],{"class":241,"line":1376},75,[239,1378,1379],{"class":297},"    return",[239,1381,1382],{"class":252}," slug\n",[239,1384,1386,1389,1392],{"class":241,"line":1385},76,[239,1387,1388],{"class":252},"  } ",[239,1390,1391],{"class":297},"catch",[239,1393,1394],{"class":252}," (err) {\n",[239,1396,1398,1401,1403,1405,1408],{"class":241,"line":1397},77,[239,1399,1400],{"class":252},"    console.",[239,1402,480],{"class":346},[239,1404,483],{"class":252},[239,1406,1407],{"class":307},"'Cloudflare AI生成失败：'",[239,1409,1410],{"class":252},", err.message)\n",[239,1412,1414,1417,1419,1421,1423],{"class":241,"line":1413},78,[239,1415,1416],{"class":252},"    process.",[239,1418,561],{"class":346},[239,1420,483],{"class":252},[239,1422,566],{"class":358},[239,1424,489],{"class":252},[239,1426,1428],{"class":241,"line":1427},79,[239,1429,1430],{"class":252},"  }\n",[239,1432,1434],{"class":241,"line":1433},80,[239,1435,574],{"class":252},[239,1437,1439],{"class":241,"line":1438},81,[239,1440,338],{"emptyLinePlaceholder":337},[239,1442,1444,1446,1448,1451],{"class":241,"line":1443},82,[239,1445,968],{"class":297},[239,1447,971],{"class":297},[239,1449,1450],{"class":346}," main",[239,1452,1453],{"class":252},"() {\n",[239,1455,1457,1459,1462,1464,1467,1469],{"class":241,"line":1456},83,[239,1458,664],{"class":297},[239,1460,1461],{"class":358}," chineseTitle",[239,1463,397],{"class":297},[239,1465,1466],{"class":252}," process.argv[",[239,1468,622],{"class":358},[239,1470,1471],{"class":252},"]\n",[239,1473,1475,1478,1480,1482],{"class":241,"line":1474},84,[239,1476,1477],{"class":297},"  if",[239,1479,447],{"class":252},[239,1481,450],{"class":297},[239,1483,1484],{"class":252},"chineseTitle) {\n",[239,1486,1488,1490,1493,1495,1498],{"class":241,"line":1487},85,[239,1489,1400],{"class":252},[239,1491,1492],{"class":346},"log",[239,1494,483],{"class":252},[239,1496,1497],{"class":307},"'用法：pnpm new-post \"中文文章标题\"'",[239,1499,489],{"class":252},[239,1501,1503,1505,1507,1509,1511],{"class":241,"line":1502},86,[239,1504,1416],{"class":252},[239,1506,561],{"class":346},[239,1508,483],{"class":252},[239,1510,566],{"class":358},[239,1512,489],{"class":252},[239,1514,1516],{"class":241,"line":1515},87,[239,1517,1430],{"class":252},[239,1519,1521],{"class":241,"line":1520},88,[239,1522,338],{"emptyLinePlaceholder":337},[239,1524,1526,1528,1530,1532,1534,1536],{"class":241,"line":1525},89,[239,1527,664],{"class":297},[239,1529,1281],{"class":358},[239,1531,397],{"class":297},[239,1533,1033],{"class":297},[239,1535,974],{"class":346},[239,1537,1538],{"class":252},"(chineseTitle)\n",[239,1540,1542,1544,1547,1549,1552,1555],{"class":241,"line":1541},90,[239,1543,664],{"class":297},[239,1545,1546],{"class":358}," filename",[239,1548,397],{"class":297},[239,1550,1551],{"class":307}," `${",[239,1553,1554],{"class":252},"slug",[239,1556,1557],{"class":307},"}.md`\n",[239,1559,1561,1563,1566,1568],{"class":241,"line":1560},91,[239,1562,664],{"class":297},[239,1564,1565],{"class":358}," title",[239,1567,397],{"class":297},[239,1569,1570],{"class":252}," chineseTitle\n",[239,1572,1574],{"class":241,"line":1573},92,[239,1575,338],{"emptyLinePlaceholder":337},[239,1577,1579,1581,1584,1586,1589,1592,1595,1598,1601,1604,1606,1609],{"class":241,"line":1578},93,[239,1580,664],{"class":297},[239,1582,1583],{"class":358}," targetDir",[239,1585,397],{"class":297},[239,1587,1588],{"class":252}," path.",[239,1590,1591],{"class":346},"resolve",[239,1593,1594],{"class":252},"(process.",[239,1596,1597],{"class":346},"cwd",[239,1599,1600],{"class":252},"(), ",[239,1602,1603],{"class":307},"'content'",[239,1605,504],{"class":252},[239,1607,1608],{"class":307},"'posts'",[239,1610,489],{"class":252},[239,1612,1614,1616,1619,1621,1623,1626],{"class":241,"line":1613},94,[239,1615,664],{"class":297},[239,1617,1618],{"class":358}," targetPath",[239,1620,397],{"class":297},[239,1622,1588],{"class":252},[239,1624,1625],{"class":346},"join",[239,1627,1628],{"class":252},"(targetDir, filename)\n",[239,1630,1632],{"class":241,"line":1631},95,[239,1633,338],{"emptyLinePlaceholder":337},[239,1635,1637,1639,1642,1645],{"class":241,"line":1636},96,[239,1638,1477],{"class":297},[239,1640,1641],{"class":252}," (fs.",[239,1643,1644],{"class":346},"existsSync",[239,1646,1647],{"class":252},"(targetPath)) {\n",[239,1649,1651,1653,1655,1657,1660],{"class":241,"line":1650},97,[239,1652,1400],{"class":252},[239,1654,480],{"class":346},[239,1656,483],{"class":252},[239,1658,1659],{"class":307},"'文件已存在：'",[239,1661,1662],{"class":252},", targetPath)\n",[239,1664,1666,1668,1670,1672,1674],{"class":241,"line":1665},98,[239,1667,1416],{"class":252},[239,1669,561],{"class":346},[239,1671,483],{"class":252},[239,1673,566],{"class":358},[239,1675,489],{"class":252},[239,1677,1679],{"class":241,"line":1678},99,[239,1680,1430],{"class":252},[239,1682,1684],{"class":241,"line":1683},100,[239,1685,338],{"emptyLinePlaceholder":337},[239,1687,1689,1692,1695,1698,1701,1704],{"class":241,"line":1688},101,[239,1690,1691],{"class":297},"  await",[239,1693,1694],{"class":252}," fs.promises.",[239,1696,1697],{"class":346},"mkdir",[239,1699,1700],{"class":252},"(targetDir, { recursive: ",[239,1702,1703],{"class":358},"true",[239,1705,1706],{"class":252}," })\n",[239,1708,1710],{"class":241,"line":1709},102,[239,1711,338],{"emptyLinePlaceholder":337},[239,1713,1715,1717,1720,1722,1724,1726],{"class":241,"line":1714},103,[239,1716,664],{"class":297},[239,1718,1719],{"class":358}," templatePath",[239,1721,397],{"class":297},[239,1723,1588],{"class":252},[239,1725,1591],{"class":346},[239,1727,518],{"class":252},[239,1729,1731,1733,1735],{"class":241,"line":1730},104,[239,1732,1416],{"class":252},[239,1734,1597],{"class":346},[239,1736,1737],{"class":252},"(),\n",[239,1739,1741,1744],{"class":241,"line":1740},105,[239,1742,1743],{"class":307},"    'scripts'",[239,1745,368],{"class":252},[239,1747,1749,1752],{"class":241,"line":1748},106,[239,1750,1751],{"class":307},"    'temp'",[239,1753,368],{"class":252},[239,1755,1757,1760],{"class":241,"line":1756},107,[239,1758,1759],{"class":307},"    'default.md'",[239,1761,368],{"class":252},[239,1763,1765],{"class":241,"line":1764},108,[239,1766,552],{"class":252},[239,1768,1770,1773,1776,1779],{"class":241,"line":1769},109,[239,1771,1772],{"class":297},"  let",[239,1774,1775],{"class":252}," tpl ",[239,1777,1778],{"class":297},"=",[239,1780,1781],{"class":307}," ''\n",[239,1783,1785,1787],{"class":241,"line":1784},110,[239,1786,987],{"class":297},[239,1788,990],{"class":252},[239,1790,1792,1795,1797,1799,1801,1804,1807,1810],{"class":241,"line":1791},111,[239,1793,1794],{"class":252},"    tpl ",[239,1796,1778],{"class":297},[239,1798,1033],{"class":297},[239,1800,1694],{"class":252},[239,1802,1803],{"class":346},"readFile",[239,1805,1806],{"class":252},"(templatePath, ",[239,1808,1809],{"class":307},"'utf8'",[239,1811,489],{"class":252},[239,1813,1815,1817,1819],{"class":241,"line":1814},112,[239,1816,1388],{"class":252},[239,1818,1391],{"class":297},[239,1820,1821],{"class":252}," (e) {\n",[239,1823,1825,1827,1829],{"class":241,"line":1824},113,[239,1826,1794],{"class":252},[239,1828,1778],{"class":297},[239,1830,1831],{"class":307}," `---\n",[239,1833,1835,1838,1841],{"class":241,"line":1834},114,[239,1836,1837],{"class":307},"title: '${",[239,1839,1840],{"class":252},"title",[239,1842,1843],{"class":307},"}'\n",[239,1845,1847,1850,1852],{"class":241,"line":1846},115,[239,1848,1849],{"class":307},"path: '\u002Fposts\u002F${",[239,1851,1554],{"class":252},[239,1853,1843],{"class":307},[239,1855,1857,1860,1863,1866],{"class":241,"line":1856},116,[239,1858,1859],{"class":307},"createdAt: ${",[239,1861,1862],{"class":346},"formatLocalISO",[239,1864,1865],{"class":307},"()",[239,1867,574],{"class":307},[239,1869,1871],{"class":241,"line":1870},117,[239,1872,271],{"class":307},[239,1874,1876],{"class":241,"line":1875},118,[239,1877,277],{"class":307},[239,1879,1881],{"class":241,"line":1880},119,[239,1882,1883],{"class":307},"draft: true\n",[239,1885,1887],{"class":241,"line":1886},120,[239,1888,246],{"class":307},[239,1890,1892],{"class":241,"line":1891},121,[239,1893,1894],{"class":307},"`\n",[239,1896,1898],{"class":241,"line":1897},122,[239,1899,1430],{"class":252},[239,1901,1903],{"class":241,"line":1902},123,[239,1904,338],{"emptyLinePlaceholder":337},[239,1906,1908,1910,1912,1914,1916,1919,1922,1925,1928,1930,1932,1935,1937,1940],{"class":241,"line":1907},124,[239,1909,1477],{"class":297},[239,1911,447],{"class":252},[239,1913,863],{"class":307},[239,1915,1315],{"class":297},[239,1917,1918],{"class":1348},"---",[239,1920,1921],{"class":358},"\\n[\\s\\S]",[239,1923,1924],{"class":297},"*?",[239,1926,1927],{"class":358},"\\n",[239,1929,1918],{"class":1348},[239,1931,863],{"class":307},[239,1933,1934],{"class":297},"m",[239,1936,1126],{"class":252},[239,1938,1939],{"class":346},"test",[239,1941,1942],{"class":252},"(tpl)) {\n",[239,1944,1946,1948,1950,1953,1955,1957,1959,1961,1964,1966,1969,1971,1973,1975,1978,1980,1983],{"class":241,"line":1945},125,[239,1947,1794],{"class":252},[239,1949,1778],{"class":297},[239,1951,1952],{"class":252}," tpl.",[239,1954,1305],{"class":346},[239,1956,483],{"class":252},[239,1958,863],{"class":307},[239,1960,1315],{"class":297},[239,1962,1963],{"class":1348},"title:",[239,1965,1126],{"class":358},[239,1967,1968],{"class":297},"*$",[239,1970,863],{"class":307},[239,1972,1934],{"class":297},[239,1974,504],{"class":252},[239,1976,1977],{"class":307},"`title: '${",[239,1979,1840],{"class":252},[239,1981,1982],{"class":307},"}'`",[239,1984,489],{"class":252},[239,1986,1988,1990,1992,1994,1996,1998,2000,2002,2005,2007,2009,2011,2013,2015,2018,2020,2022],{"class":241,"line":1987},126,[239,1989,1794],{"class":252},[239,1991,1778],{"class":297},[239,1993,1952],{"class":252},[239,1995,1305],{"class":346},[239,1997,483],{"class":252},[239,1999,863],{"class":307},[239,2001,1315],{"class":297},[239,2003,2004],{"class":1348},"path:",[239,2006,1126],{"class":358},[239,2008,1968],{"class":297},[239,2010,863],{"class":307},[239,2012,1934],{"class":297},[239,2014,504],{"class":252},[239,2016,2017],{"class":307},"`path: '\u002Fposts\u002F${",[239,2019,1554],{"class":252},[239,2021,1982],{"class":307},[239,2023,489],{"class":252},[239,2025,2027,2029,2031,2033,2035,2037,2039,2041,2044,2046,2048,2050,2052,2054,2057,2059,2061,2063],{"class":241,"line":2026},127,[239,2028,1794],{"class":252},[239,2030,1778],{"class":297},[239,2032,1952],{"class":252},[239,2034,1305],{"class":346},[239,2036,483],{"class":252},[239,2038,863],{"class":307},[239,2040,1315],{"class":297},[239,2042,2043],{"class":1348},"createdAt:",[239,2045,1126],{"class":358},[239,2047,1968],{"class":297},[239,2049,863],{"class":307},[239,2051,1934],{"class":297},[239,2053,504],{"class":252},[239,2055,2056],{"class":307},"`createdAt: ${",[239,2058,1862],{"class":346},[239,2060,1865],{"class":307},[239,2062,1054],{"class":307},[239,2064,489],{"class":252},[239,2066,2068,2070,2073],{"class":241,"line":2067},128,[239,2069,1388],{"class":252},[239,2071,2072],{"class":297},"else",[239,2074,990],{"class":252},[239,2076,2078,2080],{"class":241,"line":2077},129,[239,2079,1794],{"class":252},[239,2081,2082],{"class":297},"=\n",[239,2084,2086],{"class":241,"line":2085},130,[239,2087,2088],{"class":307},"      `---\n",[239,2090,2092,2094,2096],{"class":241,"line":2091},131,[239,2093,1837],{"class":307},[239,2095,1840],{"class":252},[239,2097,1843],{"class":307},[239,2099,2101,2103,2105],{"class":241,"line":2100},132,[239,2102,1849],{"class":307},[239,2104,1554],{"class":252},[239,2106,1843],{"class":307},[239,2108,2110,2112,2114,2116],{"class":241,"line":2109},133,[239,2111,1859],{"class":307},[239,2113,1862],{"class":346},[239,2115,1865],{"class":307},[239,2117,574],{"class":307},[239,2119,2121],{"class":241,"line":2120},134,[239,2122,271],{"class":307},[239,2124,2126],{"class":241,"line":2125},135,[239,2127,277],{"class":307},[239,2129,2131],{"class":241,"line":2130},136,[239,2132,1883],{"class":307},[239,2134,2136],{"class":241,"line":2135},137,[239,2137,246],{"class":307},[239,2139,2141],{"class":241,"line":2140},138,[239,2142,338],{"emptyLinePlaceholder":337},[239,2144,2146,2149,2152],{"class":241,"line":2145},139,[239,2147,2148],{"class":307},"`",[239,2150,2151],{"class":297}," +",[239,2153,2154],{"class":252}," tpl\n",[239,2156,2158],{"class":241,"line":2157},140,[239,2159,1430],{"class":252},[239,2161,2163],{"class":241,"line":2162},141,[239,2164,338],{"emptyLinePlaceholder":337},[239,2166,2168,2170,2172,2175,2178,2180],{"class":241,"line":2167},142,[239,2169,1691],{"class":297},[239,2171,1694],{"class":252},[239,2173,2174],{"class":346},"writeFile",[239,2176,2177],{"class":252},"(targetPath, tpl, ",[239,2179,1809],{"class":307},[239,2181,489],{"class":252},[239,2183,2185,2187,2189,2191,2194,2197,2200,2202,2204],{"class":241,"line":2184},143,[239,2186,477],{"class":252},[239,2188,1492],{"class":346},[239,2190,483],{"class":252},[239,2192,2193],{"class":307},"'✅ 创建成功：'",[239,2195,2196],{"class":252},", path.",[239,2198,2199],{"class":346},"relative",[239,2201,1594],{"class":252},[239,2203,1597],{"class":346},[239,2205,2206],{"class":252},"(), targetPath))\n",[239,2208,2210,2212,2214,2216,2219],{"class":241,"line":2209},144,[239,2211,477],{"class":252},[239,2213,1492],{"class":346},[239,2215,483],{"class":252},[239,2217,2218],{"class":307},"'📝 标题：'",[239,2220,2221],{"class":252},", title)\n",[239,2223,2225,2227,2229,2231,2234,2236,2239,2241,2243],{"class":241,"line":2224},145,[239,2226,477],{"class":252},[239,2228,1492],{"class":346},[239,2230,483],{"class":252},[239,2232,2233],{"class":307},"'🔗 路径：'",[239,2235,504],{"class":252},[239,2237,2238],{"class":307},"`\u002Fposts\u002F${",[239,2240,1554],{"class":252},[239,2242,1054],{"class":307},[239,2244,489],{"class":252},[239,2246,2248],{"class":241,"line":2247},146,[239,2249,574],{"class":252},[239,2251,2253],{"class":241,"line":2252},147,[239,2254,338],{"emptyLinePlaceholder":337},[239,2256,2258,2261,2264,2266,2269,2272,2275,2278],{"class":241,"line":2257},148,[239,2259,2260],{"class":346},"main",[239,2262,2263],{"class":252},"().",[239,2265,1391],{"class":346},[239,2267,2268],{"class":252},"((",[239,2270,2271],{"class":599},"err",[239,2273,2274],{"class":252},") ",[239,2276,2277],{"class":297},"=>",[239,2279,990],{"class":252},[239,2281,2283,2285,2287,2289,2292],{"class":241,"line":2282},149,[239,2284,477],{"class":252},[239,2286,480],{"class":346},[239,2288,483],{"class":252},[239,2290,2291],{"class":307},"'❌ 执行失败：'",[239,2293,2294],{"class":252},", err)\n",[239,2296,2298,2300,2302,2304,2306],{"class":241,"line":2297},150,[239,2299,558],{"class":252},[239,2301,561],{"class":346},[239,2303,483],{"class":252},[239,2305,566],{"class":358},[239,2307,489],{"class":252},[239,2309,2311],{"class":241,"line":2310},151,[239,2312,373],{"class":252},[2314,2315,2316],"style",{},"html pre.shiki code .snl16, html code.shiki .snl16{--shiki-default:#F97583}html pre.shiki code .s95oV, html code.shiki .s95oV{--shiki-default:#E1E4E8}html pre.shiki code .sU2Wk, html code.shiki .sU2Wk{--shiki-default:#9ECBFF}html pre.shiki code .svObZ, html code.shiki .svObZ{--shiki-default:#B392F0}html pre.shiki code .sDLfK, html code.shiki .sDLfK{--shiki-default:#79B8FF}html pre.shiki code .sAwPA, html code.shiki .sAwPA{--shiki-default:#6A737D}html pre.shiki code .s9osk, html code.shiki .s9osk{--shiki-default:#FFAB70}html pre.shiki code .sns5M, html code.shiki .sns5M{--shiki-default:#DBEDFF}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html pre.shiki code .sIZOC, html code.shiki .sIZOC{--shiki-default:#79B8FF;--shiki-default-font-weight:bold}",{"title":235,"searchDepth":249,"depth":256,"links":2318},[],[2320],"随笔・通用",null,"2026-05-18",{},{"title":114,"description":195},[2326,2327],"博客","AI","o9kQuaU9Abgzhz220oiVlY-V0RaMAna2GvxeQi-Ccho",1580,{"title":46,"path":47,"createdAt":2331,"categories":2332,"tags":2334},"2026-05-25",[2333],"思辨・自留",[2335,2336,2337],"两性关系","人生态度","牢骚",{"title":122,"path":123,"createdAt":2322,"categories":2339,"tags":2341},[2340],"随笔・自留",[2342],"工作",[2344,2349,2355,2361,2366],{"title":58,"path":59,"createdAt":2345,"categories":2346,"tags":2347},"2026-05-10",[2333],[2348,2327],"目标",{"title":42,"path":43,"createdAt":2350,"categories":2351,"tags":2352},"2023-08-07",[2320],[2353,2354],"webgis","cesiumjs",{"title":110,"path":111,"createdAt":2356,"categories":2357,"tags":2358},"2023-07-09",[2320],[2359,2360],"nodejs","笔记",{"title":50,"path":51,"createdAt":2362,"categories":2363,"tags":2364},"2023-06-03",[2320],[2365,2360],"hugo",{"title":126,"path":127,"createdAt":2367,"categories":2368,"tags":2369},"2023-04-16",[2320],[2370],"计算机网络"]