[{"data":1,"prerenderedAt":1033},["ShallowReactive",2],{"docs:\u002Fguide\u002Fgetting-started":3},{"page":4,"untranslated":1032,"translated":1032},{"id":5,"title":6,"body":7,"description":1023,"extension":1024,"meta":1025,"navigation":250,"path":1026,"publishedAt":1027,"seo":1028,"stem":1029,"updatedAt":1030,"__hash__":1031},"docs_ja\u002Fguide\u002Fgetting-started.md","Getting Started",{"type":8,"value":9,"toc":1013},"minimark",[10,14,18,30,33,85,88,104,131,152,180,193,196,214,378,385,402,409,447,451,468,854,881,884,909,930,933,947,982,985,1009],[11,12,6],"h1",{"id":13},"getting-started",[15,16,17],"h2",{"id":17},"前提条件",[19,20,21,22,25,29],"p",{},"Workers Paidプランが有効なCloudflareアカウントが必要です。",[23,24],"br",{},[26,27,28],"code",{},"compatibility_date","は2025-11-17以降に設定してください。",[15,31,32],{"id":32},"インストール",[34,35,40],"pre",{"className":36,"code":37,"language":38,"meta":39,"style":39},"language-bash shiki shiki-themes github-light github-dark","pnpm create cloudflare@latest my-jobs --type=hello-world\ncd my-jobs\npnpm add tsumugi\n","bash","",[26,41,42,65,74],{"__ignoreMap":39},[43,44,47,51,55,58,61],"span",{"class":45,"line":46},"line",1,[43,48,50],{"class":49},"sScJk","pnpm",[43,52,54],{"class":53},"sZZnC"," create",[43,56,57],{"class":53}," cloudflare@latest",[43,59,60],{"class":53}," my-jobs",[43,62,64],{"class":63},"sj4cs"," --type=hello-world\n",[43,66,68,71],{"class":45,"line":67},2,[43,69,70],{"class":63},"cd",[43,72,73],{"class":53}," my-jobs\n",[43,75,77,79,82],{"class":45,"line":76},3,[43,78,50],{"class":49},[43,80,81],{"class":53}," add",[43,83,84],{"class":53}," tsumugi\n",[15,86,87],{"id":87},"セットアップ",[34,89,91],{"className":36,"code":90,"language":38,"meta":39,"style":39},"npx tsumugi init\n",[26,92,93],{"__ignoreMap":39},[43,94,95,98,101],{"class":45,"line":46},[43,96,97],{"class":49},"npx",[43,99,100],{"class":53}," tsumugi",[43,102,103],{"class":53}," init\n",[19,105,106,107,110,111,114,115,114,118,114,121,124,125,127,128,130],{},"新しいプロジェクトで",[26,108,109],{},"init","を実行すると、必要なCloudflareのリソースを作成し、",[26,112,113],{},"wrangler.jsonc",", ",[26,116,117],{},"src\u002Findex.ts",[26,119,120],{},"src\u002Fperformers\u002F",[26,122,123],{},".dev.vars","を生成します。",[23,126],{},"\n最後にデータベースのマイグレーションを適用して終了します。",[23,129],{},"\n途中で失敗した場合は、警告とともに再実行するコマンドを出力します。",[19,132,133,134,136,137,139,140,142,143,145,146,151],{},"wranglerの設定ファイルが既に存在する場合、",[26,135,109],{},"は設定ファイルを書き換えず、追記すべき内容を出力します。",[23,138],{},"\nこのときはマイグレーションも適用されません。",[23,141],{},"\n設定ファイルを編集した後に、出力された手順でマイグレーションを適用してください。",[23,144],{},"\nオプションと生成されるファイルは、",[147,148,150],"a",{"href":149},"\u002Freference\u002Fcli","CLI","で説明しています。",[19,153,154,157,158,160,161,163,164,166,167,114,171,114,175,179],{},[26,155,156],{},"TSUMUGI_METRICS","のbindingは任意です。",[23,159],{},"\n設定しない場合、メトリクスは記録されませんが、ほかの動作は変わりません。",[23,162],{},"\nFlowと定期実行を使う場合は、追加のbindingを設定してください。",[23,165],{},"\n設定の内容は、",[147,168,170],{"href":169},"\u002Freference\u002Fconfig#wrangler%E3%81%AEbinding","wranglerのbinding",[147,172,174],{"href":173},"\u002Fguide\u002Fflow#%E8%A8%AD%E5%AE%9A","Flowの設定",[147,176,178],{"href":177},"\u002Fguide\u002Fschedule#%E8%A8%AD%E5%AE%9A","定期実行の設定","に記載しています。",[181,182,184],"callout",{"type":183},"warning",[19,185,186,187,189,190,192],{},"Tsumugiを更新したら、マイグレーションを再適用してください。",[23,188],{},"\n新しいバージョンでは、マイグレーションが追加されていることがあります。",[23,191],{},"\n未適用のマイグレーションが残っている場合、REST APIは503で応答し、その本文に未適用のファイル名を含めます。",[15,194,195],{"id":195},"performer",[19,197,198,199,201,203,204,207,208,210,213],{},"ジョブの処理は、performerとして定義します。",[23,200],{},[26,202,109],{},"が生成する",[26,205,206],{},"src\u002Fperformers\u002Fhello.ts","が、最小の例です。",[23,209],{},[26,211,212],{},"perform","の処理とpayloadの型を、用途に合わせて書き換えてください。",[34,215,219],{"className":216,"code":217,"language":218,"meta":39,"style":39},"language-ts shiki shiki-themes github-light github-dark","\u002F\u002F src\u002Fperformers\u002Fhello.ts\nimport { Performer } from 'tsumugi\u002Fperformer';\n\nexport class Hello extends Performer\u003C{ name: string }, void, {}, Env> {\n  async perform(payload: { name: string }): Promise\u003Cvoid> {\n    console.log(`hello, ${payload.name}`);\n  }\n}\n","ts",[26,220,221,227,246,252,298,339,366,372],{"__ignoreMap":39},[43,222,223],{"class":45,"line":46},[43,224,226],{"class":225},"sJ8bj","\u002F\u002F src\u002Fperformers\u002Fhello.ts\n",[43,228,229,233,237,240,243],{"class":45,"line":67},[43,230,232],{"class":231},"szBVR","import",[43,234,236],{"class":235},"sVt8B"," { Performer } ",[43,238,239],{"class":231},"from",[43,241,242],{"class":53}," 'tsumugi\u002Fperformer'",[43,244,245],{"class":235},";\n",[43,247,248],{"class":45,"line":76},[43,249,251],{"emptyLinePlaceholder":250},true,"\n",[43,253,255,258,261,264,267,270,273,277,280,283,286,289,292,295],{"class":45,"line":254},4,[43,256,257],{"class":231},"export",[43,259,260],{"class":231}," class",[43,262,263],{"class":49}," Hello",[43,265,266],{"class":231}," extends",[43,268,269],{"class":49}," Performer",[43,271,272],{"class":235},"\u003C{ ",[43,274,276],{"class":275},"s4XuR","name",[43,278,279],{"class":231},":",[43,281,282],{"class":63}," string",[43,284,285],{"class":235}," }, ",[43,287,288],{"class":63},"void",[43,290,291],{"class":235},", {}, ",[43,293,294],{"class":49},"Env",[43,296,297],{"class":235},"> {\n",[43,299,301,304,307,310,313,315,318,320,322,324,327,329,332,335,337],{"class":45,"line":300},5,[43,302,303],{"class":231},"  async",[43,305,306],{"class":49}," perform",[43,308,309],{"class":235},"(",[43,311,312],{"class":275},"payload",[43,314,279],{"class":231},[43,316,317],{"class":235}," { ",[43,319,276],{"class":275},[43,321,279],{"class":231},[43,323,282],{"class":63},[43,325,326],{"class":235}," })",[43,328,279],{"class":231},[43,330,331],{"class":49}," Promise",[43,333,334],{"class":235},"\u003C",[43,336,288],{"class":63},[43,338,297],{"class":235},[43,340,342,345,348,350,353,355,358,360,363],{"class":45,"line":341},6,[43,343,344],{"class":235},"    console.",[43,346,347],{"class":49},"log",[43,349,309],{"class":235},[43,351,352],{"class":53},"`hello, ${",[43,354,312],{"class":235},[43,356,357],{"class":53},".",[43,359,276],{"class":235},[43,361,362],{"class":53},"}`",[43,364,365],{"class":235},");\n",[43,367,369],{"class":45,"line":368},7,[43,370,371],{"class":235},"  }\n",[43,373,375],{"class":45,"line":374},8,[43,376,377],{"class":235},"}\n",[19,379,380,381,384],{},"performerを追加するときは、",[26,382,383],{},"add-performer","を実行してください。",[34,386,388],{"className":36,"code":387,"language":38,"meta":39,"style":39},"npx tsumugi add-performer send-mail\n",[26,389,390],{"__ignoreMap":39},[43,391,392,394,396,399],{"class":45,"line":46},[43,393,97],{"class":49},[43,395,100],{"class":53},[43,397,398],{"class":53}," add-performer",[43,400,401],{"class":53}," send-mail\n",[19,403,404,405,408],{},"performerのファイルが生成され、",[26,406,407],{},"src\u002Fperformers\u002Findex.ts","にexport行が1行追記されます。",[34,410,412],{"className":216,"code":411,"language":218,"meta":39,"style":39},"\u002F\u002F src\u002Fperformers\u002Findex.ts\nexport { Hello } from '.\u002Fhello.js';\nexport { SendMail } from '.\u002Fsend-mail.js';\n",[26,413,414,419,433],{"__ignoreMap":39},[43,415,416],{"class":45,"line":46},[43,417,418],{"class":225},"\u002F\u002F src\u002Fperformers\u002Findex.ts\n",[43,420,421,423,426,428,431],{"class":45,"line":67},[43,422,257],{"class":231},[43,424,425],{"class":235}," { Hello } ",[43,427,239],{"class":231},[43,429,430],{"class":53}," '.\u002Fhello.js'",[43,432,245],{"class":235},[43,434,435,437,440,442,445],{"class":45,"line":76},[43,436,257],{"class":231},[43,438,439],{"class":235}," { SendMail } ",[43,441,239],{"class":231},[43,443,444],{"class":53}," '.\u002Fsend-mail.js'",[43,446,245],{"class":235},[15,448,450],{"id":449},"worker","Worker",[19,452,453,455,456,124,458,460,461,463,464,151],{},[26,454,109],{},"は、次の内容の",[26,457,117],{},[23,459],{},"\nperformerはWorkerのエントリポイントからexportし、その名前がbinding名として使用されます。",[23,462],{},"\nbinding名の規則については、",[147,465,467],{"href":466},"\u002Fguide\u002Fperformer#binding%E5%90%8D","binding名",[34,469,471],{"className":216,"code":470,"language":218,"meta":39,"style":39},"import { bearerAuth, defineTsumugi } from 'tsumugi';\nimport { ui } from 'tsumugi\u002Fui';\nimport * as performers from '.\u002Fperformers\u002Findex.js';\n\nexport * from '.\u002Fperformers\u002Findex.js';\n\nconst tsumugi = defineTsumugi({\n  performers,\n  \u002F\u002F secretから取得, 直書きはリポジトリとバンドルに残存\n  auth: bearerAuth((env: Env) => env.TSUMUGI_TOKEN, { cookie: 'tsumugi_token' }),\n  ui: ui({ tokenCookie: 'tsumugi_token' }),\n});\n\n\u002F\u002F Durable Objectクラスの再エクスポートが必要\nexport { TsumugiJobShard } from 'tsumugi';\n\nexport default {\n  ...tsumugi,\n  async fetch(request, env, ctx) {\n    const { pathname } = new URL(request.url);\n    if (pathname === '\u002Fenqueue') {\n      const id = await tsumugi.enqueue(env, { binding: 'Hello', payload: { name: 'world' } });\n      return Response.json({ id });\n    }\n    \u002F\u002F 残りはダッシュボードとREST APIへ\n    return tsumugi.fetch!(request, env, ctx);\n  },\n} satisfies ExportedHandler\u003CEnv>;\n",[26,472,473,487,501,521,525,538,542,558,563,569,610,626,632,637,643,657,662,673,682,707,733,750,785,800,806,812,829,835],{"__ignoreMap":39},[43,474,475,477,480,482,485],{"class":45,"line":46},[43,476,232],{"class":231},[43,478,479],{"class":235}," { bearerAuth, defineTsumugi } ",[43,481,239],{"class":231},[43,483,484],{"class":53}," 'tsumugi'",[43,486,245],{"class":235},[43,488,489,491,494,496,499],{"class":45,"line":67},[43,490,232],{"class":231},[43,492,493],{"class":235}," { ui } ",[43,495,239],{"class":231},[43,497,498],{"class":53}," 'tsumugi\u002Fui'",[43,500,245],{"class":235},[43,502,503,505,508,511,514,516,519],{"class":45,"line":76},[43,504,232],{"class":231},[43,506,507],{"class":63}," *",[43,509,510],{"class":231}," as",[43,512,513],{"class":235}," performers ",[43,515,239],{"class":231},[43,517,518],{"class":53}," '.\u002Fperformers\u002Findex.js'",[43,520,245],{"class":235},[43,522,523],{"class":45,"line":254},[43,524,251],{"emptyLinePlaceholder":250},[43,526,527,529,531,534,536],{"class":45,"line":300},[43,528,257],{"class":231},[43,530,507],{"class":63},[43,532,533],{"class":231}," from",[43,535,518],{"class":53},[43,537,245],{"class":235},[43,539,540],{"class":45,"line":341},[43,541,251],{"emptyLinePlaceholder":250},[43,543,544,547,549,552,555],{"class":45,"line":368},[43,545,546],{"class":231},"const",[43,548,100],{"class":63},[43,550,551],{"class":231}," =",[43,553,554],{"class":49}," defineTsumugi",[43,556,557],{"class":235},"({\n",[43,559,560],{"class":45,"line":374},[43,561,562],{"class":235},"  performers,\n",[43,564,566],{"class":45,"line":565},9,[43,567,568],{"class":225},"  \u002F\u002F secretから取得, 直書きはリポジトリとバンドルに残存\n",[43,570,572,575,578,581,584,586,589,592,595,598,601,604,607],{"class":45,"line":571},10,[43,573,574],{"class":235},"  auth: ",[43,576,577],{"class":49},"bearerAuth",[43,579,580],{"class":235},"((",[43,582,583],{"class":275},"env",[43,585,279],{"class":231},[43,587,588],{"class":49}," Env",[43,590,591],{"class":235},") ",[43,593,594],{"class":231},"=>",[43,596,597],{"class":235}," env.",[43,599,600],{"class":63},"TSUMUGI_TOKEN",[43,602,603],{"class":235},", { cookie: ",[43,605,606],{"class":53},"'tsumugi_token'",[43,608,609],{"class":235}," }),\n",[43,611,613,616,619,622,624],{"class":45,"line":612},11,[43,614,615],{"class":235},"  ui: ",[43,617,618],{"class":49},"ui",[43,620,621],{"class":235},"({ tokenCookie: ",[43,623,606],{"class":53},[43,625,609],{"class":235},[43,627,629],{"class":45,"line":628},12,[43,630,631],{"class":235},"});\n",[43,633,635],{"class":45,"line":634},13,[43,636,251],{"emptyLinePlaceholder":250},[43,638,640],{"class":45,"line":639},14,[43,641,642],{"class":225},"\u002F\u002F Durable Objectクラスの再エクスポートが必要\n",[43,644,646,648,651,653,655],{"class":45,"line":645},15,[43,647,257],{"class":231},[43,649,650],{"class":235}," { TsumugiJobShard } ",[43,652,239],{"class":231},[43,654,484],{"class":53},[43,656,245],{"class":235},[43,658,660],{"class":45,"line":659},16,[43,661,251],{"emptyLinePlaceholder":250},[43,663,665,667,670],{"class":45,"line":664},17,[43,666,257],{"class":231},[43,668,669],{"class":231}," default",[43,671,672],{"class":235}," {\n",[43,674,676,679],{"class":45,"line":675},18,[43,677,678],{"class":231},"  ...",[43,680,681],{"class":235},"tsumugi,\n",[43,683,685,687,690,692,695,697,699,701,704],{"class":45,"line":684},19,[43,686,303],{"class":231},[43,688,689],{"class":49}," fetch",[43,691,309],{"class":235},[43,693,694],{"class":275},"request",[43,696,114],{"class":235},[43,698,583],{"class":275},[43,700,114],{"class":235},[43,702,703],{"class":275},"ctx",[43,705,706],{"class":235},") {\n",[43,708,710,713,715,718,721,724,727,730],{"class":45,"line":709},20,[43,711,712],{"class":231},"    const",[43,714,317],{"class":235},[43,716,717],{"class":63},"pathname",[43,719,720],{"class":235}," } ",[43,722,723],{"class":231},"=",[43,725,726],{"class":231}," new",[43,728,729],{"class":49}," URL",[43,731,732],{"class":235},"(request.url);\n",[43,734,736,739,742,745,748],{"class":45,"line":735},21,[43,737,738],{"class":231},"    if",[43,740,741],{"class":235}," (pathname ",[43,743,744],{"class":231},"===",[43,746,747],{"class":53}," '\u002Fenqueue'",[43,749,706],{"class":235},[43,751,753,756,759,761,764,767,770,773,776,779,782],{"class":45,"line":752},22,[43,754,755],{"class":231},"      const",[43,757,758],{"class":63}," id",[43,760,551],{"class":231},[43,762,763],{"class":231}," await",[43,765,766],{"class":235}," tsumugi.",[43,768,769],{"class":49},"enqueue",[43,771,772],{"class":235},"(env, { binding: ",[43,774,775],{"class":53},"'Hello'",[43,777,778],{"class":235},", payload: { name: ",[43,780,781],{"class":53},"'world'",[43,783,784],{"class":235}," } });\n",[43,786,788,791,794,797],{"class":45,"line":787},23,[43,789,790],{"class":231},"      return",[43,792,793],{"class":235}," Response.",[43,795,796],{"class":49},"json",[43,798,799],{"class":235},"({ id });\n",[43,801,803],{"class":45,"line":802},24,[43,804,805],{"class":235},"    }\n",[43,807,809],{"class":45,"line":808},25,[43,810,811],{"class":225},"    \u002F\u002F 残りはダッシュボードとREST APIへ\n",[43,813,815,818,820,823,826],{"class":45,"line":814},26,[43,816,817],{"class":231},"    return",[43,819,766],{"class":235},[43,821,822],{"class":49},"fetch",[43,824,825],{"class":231},"!",[43,827,828],{"class":235},"(request, env, ctx);\n",[43,830,832],{"class":45,"line":831},27,[43,833,834],{"class":235},"  },\n",[43,836,838,841,844,847,849,851],{"class":45,"line":837},28,[43,839,840],{"class":235},"} ",[43,842,843],{"class":231},"satisfies",[43,845,846],{"class":49}," ExportedHandler",[43,848,334],{"class":235},[43,850,294],{"class":49},[43,852,853],{"class":235},">;\n",[19,855,856,859,860,114,862,114,865,868,869,871,872,876,877,179],{},[26,857,858],{},"defineTsumugi","の戻り値には、",[26,861,822],{},[26,863,864],{},"queue",[26,866,867],{},"scheduled","のハンドラに加えて、ジョブを投入する関数とFlowを開始する関数が含まれます。",[23,870],{},"\n戻り値の一覧は",[147,873,875],{"href":874},"\u002Freference\u002Fconfig#definetsumugi","設定","に、投入方法ごとの違いは",[147,878,880],{"href":879},"\u002Fguide\u002Fenqueue#%E6%8A%95%E5%85%A5%E6%96%B9%E6%B3%95","ジョブの投入",[15,882,883],{"id":883},"トークンの設定",[19,885,886,889,890,893,894,896,897,899,900,902,903,905,906,908],{},[26,887,888],{},"auth","を指定しない場合、",[26,891,892],{},"tsumugi.fetch","はすべてのリクエストに対して404で応答します。",[23,895],{},"\n上記の例では、",[26,898,577],{},"を使用しています。ローカル環境では",[26,901,123],{},"に定義された",[26,904,600],{},"を参照します。",[23,907],{},"\n本番環境では、以下のコマンドを実行してSecretを登録してください。",[34,910,912],{"className":36,"code":911,"language":38,"meta":39,"style":39},"pnpm wrangler secret put TSUMUGI_TOKEN\n",[26,913,914],{"__ignoreMap":39},[43,915,916,918,921,924,927],{"class":45,"line":46},[43,917,50],{"class":49},[43,919,920],{"class":53}," wrangler",[43,922,923],{"class":53}," secret",[43,925,926],{"class":53}," put",[43,928,929],{"class":53}," TSUMUGI_TOKEN\n",[15,931,932],{"id":932},"動作確認",[34,934,936],{"className":36,"code":935,"language":38,"meta":39,"style":39},"pnpm wrangler dev\n",[26,937,938],{"__ignoreMap":39},[43,939,940,942,944],{"class":45,"line":46},[43,941,50],{"class":49},[43,943,920],{"class":53},[43,945,946],{"class":53}," dev\n",[19,948,949,952,953,956,957,959,960,963,964,966,967,969,970,972,973,975,977,978,981],{},[26,950,951],{},"\u002Fenqueue","にアクセスするとHelloジョブが投入され、ジョブIDを含む",[26,954,955],{},"{ \"id\": \"...\" }","のレスポンスが届きます。",[23,958],{},"\n投入したジョブは、ダッシュボード(",[26,961,962],{},"\u002F",")の一覧に表示されます。",[23,965],{},"\nトークンの入力を求められたら、",[26,968,123],{},"の",[26,971,600],{},"の値を入力してください。",[23,974],{},[26,976,109],{},"が生成した直後の値は",[26,979,980],{},"dev-token","です。",[15,983,984],{"id":984},"次に参照するページ",[986,987,988,996,1002],"ul",{},[989,990,991,995],"li",{},[147,992,994],{"href":993},"\u002Fguide\u002Fperformer","Performer",": ジョブの処理を定義します。",[989,997,998,1001],{},[147,999,880],{"href":1000},"\u002Fguide\u002Fenqueue",": 予約実行, 優先度, 重複排除",[989,1003,1004,1008],{},[147,1005,1007],{"href":1006},"\u002Fguide\u002Fexecution","実行の制御",": ジョブの状態管理, リトライ設定, 実行量の制限, 実行保証について説明します。",[1010,1011,1012],"style",{},"html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}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 .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":39,"searchDepth":76,"depth":76,"links":1014},[1015,1016,1017,1018,1019,1020,1021,1022],{"id":17,"depth":67,"text":17},{"id":32,"depth":67,"text":32},{"id":87,"depth":67,"text":87},{"id":195,"depth":67,"text":195},{"id":449,"depth":67,"text":450},{"id":883,"depth":67,"text":883},{"id":932,"depth":67,"text":932},{"id":984,"depth":67,"text":984},"Tsumugiのインストールから、performerを定義したWorkerの動作確認まで","md",{},"\u002Fguide\u002Fgetting-started","2026-07-22",{"title":6,"description":1023},"guide\u002Fgetting-started","2026-10-25","9ZWvYhcGU5ff3De8QDK52kbGdq-REW52ySMczFXb3WE",false,1794027568266]