[{"data":1,"prerenderedAt":4049},["ShallowReactive",2],{"content-/fear-greed-index-automation":3,"all-pages-for-dir":4026,"related-/fear-greed-index-automation":4027,"og-image-/fear-greed-index-automation":4048},{"id":4,"title":5,"body":6,"category":4011,"concepts":4011,"description":4012,"extension":4013,"meta":4014,"navigation":335,"ogImage":4011,"path":4015,"project_name":4011,"published":4016,"publishedAt":4017,"seo":4018,"source":4011,"stem":4019,"tags":4020,"todo":4011,"unpublished":4016,"updatedAt":4017,"__hash__":4025},"pages/2025-12/2025-12-05/fear-greed-index-automation.md","Fear and Greed Index自動取得＆チャート表示の実装ガイド",{"type":7,"value":8,"toc":3989},"minimark",[9,13,17,20,31,35,40,74,80,220,224,227,265,268,271,275,281,1165,1169,1174,1438,1442,1447,3263,3267,3291,3295,3298,3363,3365,3369,3372,3376,3515,3679,3683,3780,3782,3786,3789,3887,3889,3892,3955,3958,3986],[10,11,12],"h2",{"id":12},"概要",[14,15,16],"p",{},"このNuxtプロジェクトでFear and Greed Indexを毎日自動取得し、チャート表示する実装ガイドです。",[10,18,19],{"id":19},"アーキテクチャ",[21,22,27],"pre",{"className":23,"code":25,"language":26},[24],"language-text","┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐\n│  GitHub Actions │────▶│   JSON データ    │────▶│  Nuxt + Chart   │\n│  (毎日実行)      │     │   (蓄積)         │     │  (表示)          │\n└─────────────────┘     └─────────────────┘     └─────────────────┘\n","text",[28,29,25],"code",{"__ignoreMap":30},"",[10,32,34],{"id":33},"利用可能なapi","利用可能なAPI",[36,37,39],"h3",{"id":38},"_1-仮想通貨版-alternativeme-無料","1. 仮想通貨版 (Alternative.me) - 無料",[21,41,45],{"className":42,"code":43,"language":44,"meta":30,"style":30},"language-bash shiki shiki-themes vitesse-light vitesse-light","# エンドポイント\ncurl \"https://api.alternative.me/fng/?limit=30\"\n","bash",[28,46,47,56],{"__ignoreMap":30},[48,49,52],"span",{"class":50,"line":51},"line",1,[48,53,55],{"class":54},"sxvE3","# エンドポイント\n",[48,57,59,63,67,71],{"class":50,"line":58},2,[48,60,62],{"class":61},"senZ8","curl",[48,64,66],{"class":65},"sMJiu"," \"",[48,68,70],{"class":69},"sdGka","https://api.alternative.me/fng/?limit=30",[48,72,73],{"class":65},"\"\n",[14,75,76],{},[77,78,79],"strong",{},"レスポンス例:",[21,81,85],{"className":82,"code":83,"language":84,"meta":30,"style":30},"language-json shiki shiki-themes vitesse-light vitesse-light","{\n  \"name\": \"Fear and Greed Index\",\n  \"data\": [\n    {\n      \"value\": \"74\",\n      \"value_classification\": \"Greed\",\n      \"timestamp\": \"1733356800\"\n    }\n  ]\n}\n","json",[28,86,87,93,119,134,140,162,183,202,208,214],{"__ignoreMap":30},[48,88,89],{"class":50,"line":51},[48,90,92],{"class":91},"shFtX","{\n",[48,94,95,99,103,106,109,111,114,116],{"class":50,"line":58},[48,96,98],{"class":97},"sqvqQ","  \"",[48,100,102],{"class":101},"sz8Xr","name",[48,104,105],{"class":97},"\"",[48,107,108],{"class":91},":",[48,110,66],{"class":65},[48,112,113],{"class":69},"Fear and Greed Index",[48,115,105],{"class":65},[48,117,118],{"class":91},",\n",[48,120,122,124,127,129,131],{"class":50,"line":121},3,[48,123,98],{"class":97},[48,125,126],{"class":101},"data",[48,128,105],{"class":97},[48,130,108],{"class":91},[48,132,133],{"class":91}," [\n",[48,135,137],{"class":50,"line":136},4,[48,138,139],{"class":91},"    {\n",[48,141,143,146,149,151,153,155,158,160],{"class":50,"line":142},5,[48,144,145],{"class":97},"      \"",[48,147,148],{"class":101},"value",[48,150,105],{"class":97},[48,152,108],{"class":91},[48,154,66],{"class":65},[48,156,157],{"class":69},"74",[48,159,105],{"class":65},[48,161,118],{"class":91},[48,163,165,167,170,172,174,176,179,181],{"class":50,"line":164},6,[48,166,145],{"class":97},[48,168,169],{"class":101},"value_classification",[48,171,105],{"class":97},[48,173,108],{"class":91},[48,175,66],{"class":65},[48,177,178],{"class":69},"Greed",[48,180,105],{"class":65},[48,182,118],{"class":91},[48,184,186,188,191,193,195,197,200],{"class":50,"line":185},7,[48,187,145],{"class":97},[48,189,190],{"class":101},"timestamp",[48,192,105],{"class":97},[48,194,108],{"class":91},[48,196,66],{"class":65},[48,198,199],{"class":69},"1733356800",[48,201,73],{"class":65},[48,203,205],{"class":50,"line":204},8,[48,206,207],{"class":91},"    }\n",[48,209,211],{"class":50,"line":210},9,[48,212,213],{"class":91},"  ]\n",[48,215,217],{"class":50,"line":216},10,[48,218,219],{"class":91},"}\n",[36,221,223],{"id":222},"_2-株式市場版-cnn-スクレイピング必要","2. 株式市場版 (CNN) - スクレイピング必要",[14,225,226],{},"CNNのFear & Greed Indexは公式APIがないため、以下の方法で取得:",[228,229,230,244,254],"ul",{},[231,232,233,236,237],"li",{},[77,234,235],{},"Python wrapper",": ",[238,239,243],"a",{"href":240,"rel":241},"https://github.com/DidierRLopes/fear-greed-index",[242],"nofollow","fear-greed-index",[231,245,246,236,249],{},[77,247,248],{},"FGI Tracker",[238,250,253],{"href":251,"rel":252},"https://github.com/leejustin/fgi-tracker",[242],"leejustin/fgi-tracker",[231,255,256,236,259,264],{},[77,257,258],{},"RapidAPI",[238,260,263],{"href":261,"rel":262},"https://rapidapi.com/dataapi/api/cnn-fear-and-greed-index",[242],"CNN Fear and Greed Index"," (有料)",[266,267],"hr",{},[10,269,270],{"id":270},"実装手順",[36,272,274],{"id":273},"step-1-データ取得スクリプトの作成","Step 1: データ取得スクリプトの作成",[14,276,277,280],{},[28,278,279],{},"scripts/fetch-fear-greed.mjs"," を作成:",[21,282,286],{"className":283,"code":284,"language":285,"meta":30,"style":30},"language-javascript shiki shiki-themes vitesse-light vitesse-light","// scripts/fetch-fear-greed.mjs\nimport fs from 'fs'\nimport path from 'path'\n\nconst DATA_FILE = 'apps/web/public/data/fear-greed-history.json'\n\nasync function fetchFearGreedIndex() {\n  // 仮想通貨版 (Alternative.me) - 無料で使える\n  const response = await fetch('https://api.alternative.me/fng/?limit=1')\n  const json = await response.json()\n\n  const today = new Date().toISOString().split('T')[0]\n  const entry = {\n    date: today,\n    value: parseInt(json.data[0].value),\n    classification: json.data[0].value_classification\n  }\n\n  return entry\n}\n\nasync function main() {\n  // 既存データを読み込み\n  let history = []\n  if (fs.existsSync(DATA_FILE)) {\n    const raw = fs.readFileSync(DATA_FILE, 'utf-8')\n    history = JSON.parse(raw)\n  }\n\n  // 新しいデータを取得\n  const newEntry = await fetchFearGreedIndex()\n\n  // 重複チェック（同じ日付があれば更新）\n  const existingIndex = history.findIndex(h => h.date === newEntry.date)\n  if (existingIndex >= 0) {\n    history[existingIndex] = newEntry\n  } else {\n    history.push(newEntry)\n  }\n\n  // 日付順にソート\n  history.sort((a, b) => a.date.localeCompare(b.date))\n\n  // 保存\n  const dir = path.dirname(DATA_FILE)\n  if (!fs.existsSync(dir)) {\n    fs.mkdirSync(dir, { recursive: true })\n  }\n  fs.writeFileSync(DATA_FILE, JSON.stringify(history, null, 2))\n\n  console.log(`Updated: ${newEntry.date} - ${newEntry.value} (${newEntry.classification})`)\n}\n\nmain().catch(console.error)\n","javascript",[28,287,288,293,315,331,337,356,360,377,382,412,433,438,484,496,508,540,563,569,574,583,588,593,607,613,627,653,687,710,715,720,726,742,747,753,797,818,835,846,863,868,873,879,928,933,939,962,987,1018,1023,1064,1069,1132,1137,1142],{"__ignoreMap":30},[48,289,290],{"class":50,"line":51},[48,291,292],{"class":54},"// scripts/fetch-fear-greed.mjs\n",[48,294,295,299,303,306,309,312],{"class":50,"line":58},[48,296,298],{"class":297},"sHkkW","import",[48,300,302],{"class":301},"s4oTP"," fs",[48,304,305],{"class":297}," from",[48,307,308],{"class":65}," '",[48,310,311],{"class":69},"fs",[48,313,314],{"class":65},"'\n",[48,316,317,319,322,324,326,329],{"class":50,"line":121},[48,318,298],{"class":297},[48,320,321],{"class":301}," path",[48,323,305],{"class":297},[48,325,308],{"class":65},[48,327,328],{"class":69},"path",[48,330,314],{"class":65},[48,332,333],{"class":50,"line":136},[48,334,336],{"emptyLinePlaceholder":335},true,"\n",[48,338,339,343,346,349,351,354],{"class":50,"line":142},[48,340,342],{"class":341},"stQ0i","const",[48,344,345],{"class":301}," DATA_FILE",[48,347,348],{"class":91}," =",[48,350,308],{"class":65},[48,352,353],{"class":69},"apps/web/public/data/fear-greed-history.json",[48,355,314],{"class":65},[48,357,358],{"class":50,"line":164},[48,359,336],{"emptyLinePlaceholder":335},[48,361,362,365,368,371,374],{"class":50,"line":185},[48,363,364],{"class":341},"async",[48,366,367],{"class":341}," function",[48,369,370],{"class":61}," fetchFearGreedIndex",[48,372,373],{"class":91},"()",[48,375,376],{"class":91}," {\n",[48,378,379],{"class":50,"line":204},[48,380,381],{"class":54},"  // 仮想通貨版 (Alternative.me) - 無料で使える\n",[48,383,384,387,390,392,395,398,401,404,407,409],{"class":50,"line":210},[48,385,386],{"class":341},"  const",[48,388,389],{"class":301}," response",[48,391,348],{"class":91},[48,393,394],{"class":297}," await",[48,396,397],{"class":61}," fetch",[48,399,400],{"class":91},"(",[48,402,403],{"class":65},"'",[48,405,406],{"class":69},"https://api.alternative.me/fng/?limit=1",[48,408,403],{"class":65},[48,410,411],{"class":91},")\n",[48,413,414,416,419,421,423,425,428,430],{"class":50,"line":216},[48,415,386],{"class":341},[48,417,418],{"class":301}," json",[48,420,348],{"class":91},[48,422,394],{"class":297},[48,424,389],{"class":301},[48,426,427],{"class":91},".",[48,429,84],{"class":61},[48,431,432],{"class":91},"()\n",[48,434,436],{"class":50,"line":435},11,[48,437,336],{"emptyLinePlaceholder":335},[48,439,441,443,446,448,451,454,457,460,462,465,467,469,472,474,477,481],{"class":50,"line":440},12,[48,442,386],{"class":341},[48,444,445],{"class":301}," today",[48,447,348],{"class":91},[48,449,450],{"class":341}," new",[48,452,453],{"class":61}," Date",[48,455,456],{"class":91},"().",[48,458,459],{"class":61},"toISOString",[48,461,456],{"class":91},[48,463,464],{"class":61},"split",[48,466,400],{"class":91},[48,468,403],{"class":65},[48,470,471],{"class":69},"T",[48,473,403],{"class":65},[48,475,476],{"class":91},")[",[48,478,480],{"class":479},"sM54T","0",[48,482,483],{"class":91},"]\n",[48,485,487,489,492,494],{"class":50,"line":486},13,[48,488,386],{"class":341},[48,490,491],{"class":301}," entry",[48,493,348],{"class":91},[48,495,376],{"class":91},[48,497,499,502,504,506],{"class":50,"line":498},14,[48,500,501],{"class":101},"    date",[48,503,108],{"class":91},[48,505,445],{"class":301},[48,507,118],{"class":91},[48,509,511,514,516,519,521,523,525,527,530,532,535,537],{"class":50,"line":510},15,[48,512,513],{"class":101},"    value",[48,515,108],{"class":91},[48,517,518],{"class":61}," parseInt",[48,520,400],{"class":91},[48,522,84],{"class":301},[48,524,427],{"class":91},[48,526,126],{"class":301},[48,528,529],{"class":91},"[",[48,531,480],{"class":479},[48,533,534],{"class":91},"].",[48,536,148],{"class":301},[48,538,539],{"class":91},"),\n",[48,541,543,546,548,550,552,554,556,558,560],{"class":50,"line":542},16,[48,544,545],{"class":101},"    classification",[48,547,108],{"class":91},[48,549,418],{"class":301},[48,551,427],{"class":91},[48,553,126],{"class":301},[48,555,529],{"class":91},[48,557,480],{"class":479},[48,559,534],{"class":91},[48,561,562],{"class":301},"value_classification\n",[48,564,566],{"class":50,"line":565},17,[48,567,568],{"class":91},"  }\n",[48,570,572],{"class":50,"line":571},18,[48,573,336],{"emptyLinePlaceholder":335},[48,575,577,580],{"class":50,"line":576},19,[48,578,579],{"class":297},"  return",[48,581,582],{"class":301}," entry\n",[48,584,586],{"class":50,"line":585},20,[48,587,219],{"class":91},[48,589,591],{"class":50,"line":590},21,[48,592,336],{"emptyLinePlaceholder":335},[48,594,596,598,600,603,605],{"class":50,"line":595},22,[48,597,364],{"class":341},[48,599,367],{"class":341},[48,601,602],{"class":61}," main",[48,604,373],{"class":91},[48,606,376],{"class":91},[48,608,610],{"class":50,"line":609},23,[48,611,612],{"class":54},"  // 既存データを読み込み\n",[48,614,616,619,622,624],{"class":50,"line":615},24,[48,617,618],{"class":341},"  let",[48,620,621],{"class":301}," history",[48,623,348],{"class":91},[48,625,626],{"class":91}," []\n",[48,628,630,633,636,638,640,643,645,648,651],{"class":50,"line":629},25,[48,631,632],{"class":297},"  if",[48,634,635],{"class":91}," (",[48,637,311],{"class":301},[48,639,427],{"class":91},[48,641,642],{"class":61},"existsSync",[48,644,400],{"class":91},[48,646,647],{"class":301},"DATA_FILE",[48,649,650],{"class":91},"))",[48,652,376],{"class":91},[48,654,656,659,662,664,666,668,671,673,675,678,680,683,685],{"class":50,"line":655},26,[48,657,658],{"class":341},"    const",[48,660,661],{"class":301}," raw",[48,663,348],{"class":91},[48,665,302],{"class":301},[48,667,427],{"class":91},[48,669,670],{"class":61},"readFileSync",[48,672,400],{"class":91},[48,674,647],{"class":301},[48,676,677],{"class":91},",",[48,679,308],{"class":65},[48,681,682],{"class":69},"utf-8",[48,684,403],{"class":65},[48,686,411],{"class":91},[48,688,690,693,695,698,700,703,705,708],{"class":50,"line":689},27,[48,691,692],{"class":301},"    history",[48,694,348],{"class":91},[48,696,697],{"class":301}," JSON",[48,699,427],{"class":91},[48,701,702],{"class":61},"parse",[48,704,400],{"class":91},[48,706,707],{"class":301},"raw",[48,709,411],{"class":91},[48,711,713],{"class":50,"line":712},28,[48,714,568],{"class":91},[48,716,718],{"class":50,"line":717},29,[48,719,336],{"emptyLinePlaceholder":335},[48,721,723],{"class":50,"line":722},30,[48,724,725],{"class":54},"  // 新しいデータを取得\n",[48,727,729,731,734,736,738,740],{"class":50,"line":728},31,[48,730,386],{"class":341},[48,732,733],{"class":301}," newEntry",[48,735,348],{"class":91},[48,737,394],{"class":297},[48,739,370],{"class":61},[48,741,432],{"class":91},[48,743,745],{"class":50,"line":744},32,[48,746,336],{"emptyLinePlaceholder":335},[48,748,750],{"class":50,"line":749},33,[48,751,752],{"class":54},"  // 重複チェック（同じ日付があれば更新）\n",[48,754,756,758,761,763,765,767,770,772,775,778,781,783,786,789,791,793,795],{"class":50,"line":755},34,[48,757,386],{"class":341},[48,759,760],{"class":301}," existingIndex",[48,762,348],{"class":91},[48,764,621],{"class":301},[48,766,427],{"class":91},[48,768,769],{"class":61},"findIndex",[48,771,400],{"class":91},[48,773,774],{"class":301},"h",[48,776,777],{"class":91}," =>",[48,779,780],{"class":301}," h",[48,782,427],{"class":91},[48,784,785],{"class":301},"date",[48,787,788],{"class":341}," ===",[48,790,733],{"class":301},[48,792,427],{"class":91},[48,794,785],{"class":301},[48,796,411],{"class":91},[48,798,800,802,804,807,810,813,816],{"class":50,"line":799},35,[48,801,632],{"class":297},[48,803,635],{"class":91},[48,805,806],{"class":301},"existingIndex",[48,808,809],{"class":91}," >=",[48,811,812],{"class":479}," 0",[48,814,815],{"class":91},")",[48,817,376],{"class":91},[48,819,821,823,825,827,830,832],{"class":50,"line":820},36,[48,822,692],{"class":301},[48,824,529],{"class":91},[48,826,806],{"class":301},[48,828,829],{"class":91},"]",[48,831,348],{"class":91},[48,833,834],{"class":301}," newEntry\n",[48,836,838,841,844],{"class":50,"line":837},37,[48,839,840],{"class":91},"  }",[48,842,843],{"class":297}," else",[48,845,376],{"class":91},[48,847,849,851,853,856,858,861],{"class":50,"line":848},38,[48,850,692],{"class":301},[48,852,427],{"class":91},[48,854,855],{"class":61},"push",[48,857,400],{"class":91},[48,859,860],{"class":301},"newEntry",[48,862,411],{"class":91},[48,864,866],{"class":50,"line":865},39,[48,867,568],{"class":91},[48,869,871],{"class":50,"line":870},40,[48,872,336],{"emptyLinePlaceholder":335},[48,874,876],{"class":50,"line":875},41,[48,877,878],{"class":54},"  // 日付順にソート\n",[48,880,882,885,887,890,893,895,897,900,902,904,907,909,911,913,916,918,921,923,925],{"class":50,"line":881},42,[48,883,884],{"class":301},"  history",[48,886,427],{"class":91},[48,888,889],{"class":61},"sort",[48,891,892],{"class":91},"((",[48,894,238],{"class":301},[48,896,677],{"class":91},[48,898,899],{"class":301}," b",[48,901,815],{"class":91},[48,903,777],{"class":91},[48,905,906],{"class":301}," a",[48,908,427],{"class":91},[48,910,785],{"class":301},[48,912,427],{"class":91},[48,914,915],{"class":61},"localeCompare",[48,917,400],{"class":91},[48,919,920],{"class":301},"b",[48,922,427],{"class":91},[48,924,785],{"class":301},[48,926,927],{"class":91},"))\n",[48,929,931],{"class":50,"line":930},43,[48,932,336],{"emptyLinePlaceholder":335},[48,934,936],{"class":50,"line":935},44,[48,937,938],{"class":54},"  // 保存\n",[48,940,942,944,947,949,951,953,956,958,960],{"class":50,"line":941},45,[48,943,386],{"class":341},[48,945,946],{"class":301}," dir",[48,948,348],{"class":91},[48,950,321],{"class":301},[48,952,427],{"class":91},[48,954,955],{"class":61},"dirname",[48,957,400],{"class":91},[48,959,647],{"class":301},[48,961,411],{"class":91},[48,963,965,967,969,972,974,976,978,980,983,985],{"class":50,"line":964},46,[48,966,632],{"class":297},[48,968,635],{"class":91},[48,970,971],{"class":341},"!",[48,973,311],{"class":301},[48,975,427],{"class":91},[48,977,642],{"class":61},[48,979,400],{"class":91},[48,981,982],{"class":301},"dir",[48,984,650],{"class":91},[48,986,376],{"class":91},[48,988,990,993,995,998,1000,1002,1004,1007,1010,1012,1015],{"class":50,"line":989},47,[48,991,992],{"class":301},"    fs",[48,994,427],{"class":91},[48,996,997],{"class":61},"mkdirSync",[48,999,400],{"class":91},[48,1001,982],{"class":301},[48,1003,677],{"class":91},[48,1005,1006],{"class":91}," {",[48,1008,1009],{"class":101}," recursive",[48,1011,108],{"class":91},[48,1013,1014],{"class":297}," true",[48,1016,1017],{"class":91}," })\n",[48,1019,1021],{"class":50,"line":1020},48,[48,1022,568],{"class":91},[48,1024,1026,1029,1031,1034,1036,1038,1040,1042,1044,1047,1049,1052,1054,1057,1059,1062],{"class":50,"line":1025},49,[48,1027,1028],{"class":301},"  fs",[48,1030,427],{"class":91},[48,1032,1033],{"class":61},"writeFileSync",[48,1035,400],{"class":91},[48,1037,647],{"class":301},[48,1039,677],{"class":91},[48,1041,697],{"class":301},[48,1043,427],{"class":91},[48,1045,1046],{"class":61},"stringify",[48,1048,400],{"class":91},[48,1050,1051],{"class":301},"history",[48,1053,677],{"class":91},[48,1055,1056],{"class":341}," null",[48,1058,677],{"class":91},[48,1060,1061],{"class":479}," 2",[48,1063,927],{"class":91},[48,1065,1067],{"class":50,"line":1066},50,[48,1068,336],{"emptyLinePlaceholder":335},[48,1070,1072,1075,1077,1080,1082,1085,1088,1091,1093,1095,1097,1100,1103,1105,1107,1109,1111,1113,1115,1117,1119,1121,1124,1126,1128,1130],{"class":50,"line":1071},51,[48,1073,1074],{"class":301},"  console",[48,1076,427],{"class":91},[48,1078,1079],{"class":61},"log",[48,1081,400],{"class":91},[48,1083,1084],{"class":65},"`",[48,1086,1087],{"class":69},"Updated: ",[48,1089,1090],{"class":297},"${",[48,1092,860],{"class":69},[48,1094,427],{"class":91},[48,1096,785],{"class":69},[48,1098,1099],{"class":297},"}",[48,1101,1102],{"class":69}," - ",[48,1104,1090],{"class":297},[48,1106,860],{"class":69},[48,1108,427],{"class":91},[48,1110,148],{"class":69},[48,1112,1099],{"class":297},[48,1114,635],{"class":69},[48,1116,1090],{"class":297},[48,1118,860],{"class":69},[48,1120,427],{"class":91},[48,1122,1123],{"class":69},"classification",[48,1125,1099],{"class":297},[48,1127,815],{"class":69},[48,1129,1084],{"class":65},[48,1131,411],{"class":91},[48,1133,1135],{"class":50,"line":1134},52,[48,1136,219],{"class":91},[48,1138,1140],{"class":50,"line":1139},53,[48,1141,336],{"emptyLinePlaceholder":335},[48,1143,1145,1148,1150,1153,1155,1158,1160,1163],{"class":50,"line":1144},54,[48,1146,1147],{"class":61},"main",[48,1149,456],{"class":91},[48,1151,1152],{"class":61},"catch",[48,1154,400],{"class":91},[48,1156,1157],{"class":301},"console",[48,1159,427],{"class":91},[48,1161,1162],{"class":301},"error",[48,1164,411],{"class":91},[36,1166,1168],{"id":1167},"step-2-github-actions-ワークフローの作成","Step 2: GitHub Actions ワークフローの作成",[14,1170,1171,280],{},[28,1172,1173],{},".github/workflows/fetch-fear-greed.yml",[21,1175,1179],{"className":1176,"code":1177,"language":1178,"meta":30,"style":30},"language-yaml shiki shiki-themes vitesse-light vitesse-light","name: Fetch Fear & Greed Index\n\non:\n  schedule:\n    # 毎日 UTC 0:00 (日本時間 9:00) に実行\n    - cron: '0 0 * * *'\n  workflow_dispatch:  # 手動実行も可能\n\njobs:\n  fetch:\n    runs-on: ubuntu-latest\n    permissions:\n      contents: write\n\n    steps:\n      - name: Checkout repository\n        uses: actions/checkout@v4\n\n      - name: Setup Node.js\n        uses: actions/setup-node@v4\n        with:\n          node-version: '20'\n\n      - name: Fetch Fear & Greed Index\n        run: node scripts/fetch-fear-greed.mjs\n\n      - name: Commit and push changes\n        run: |\n          git config --local user.email \"github-actions[bot]@users.noreply.github.com\"\n          git config --local user.name \"github-actions[bot]\"\n          git add apps/web/public/data/fear-greed-history.json\n          git diff --staged --quiet || git commit -m \"📊 Update Fear & Greed Index data\"\n          git push\n","yaml",[28,1180,1181,1190,1194,1202,1209,1214,1231,1241,1245,1252,1259,1269,1276,1286,1290,1297,1310,1320,1324,1335,1344,1351,1365,1369,1379,1389,1393,1404,1413,1418,1423,1428,1433],{"__ignoreMap":30},[48,1182,1183,1185,1187],{"class":50,"line":51},[48,1184,102],{"class":101},[48,1186,108],{"class":91},[48,1188,1189],{"class":69}," Fetch Fear & Greed Index\n",[48,1191,1192],{"class":50,"line":58},[48,1193,336],{"emptyLinePlaceholder":335},[48,1195,1196,1199],{"class":50,"line":121},[48,1197,1198],{"class":297},"on",[48,1200,1201],{"class":91},":\n",[48,1203,1204,1207],{"class":50,"line":136},[48,1205,1206],{"class":101},"  schedule",[48,1208,1201],{"class":91},[48,1210,1211],{"class":50,"line":142},[48,1212,1213],{"class":54},"    # 毎日 UTC 0:00 (日本時間 9:00) に実行\n",[48,1215,1216,1219,1222,1224,1226,1229],{"class":50,"line":164},[48,1217,1218],{"class":91},"    -",[48,1220,1221],{"class":101}," cron",[48,1223,108],{"class":91},[48,1225,308],{"class":65},[48,1227,1228],{"class":69},"0 0 * * *",[48,1230,314],{"class":65},[48,1232,1233,1236,1238],{"class":50,"line":185},[48,1234,1235],{"class":101},"  workflow_dispatch",[48,1237,108],{"class":91},[48,1239,1240],{"class":54},"  # 手動実行も可能\n",[48,1242,1243],{"class":50,"line":204},[48,1244,336],{"emptyLinePlaceholder":335},[48,1246,1247,1250],{"class":50,"line":210},[48,1248,1249],{"class":101},"jobs",[48,1251,1201],{"class":91},[48,1253,1254,1257],{"class":50,"line":216},[48,1255,1256],{"class":101},"  fetch",[48,1258,1201],{"class":91},[48,1260,1261,1264,1266],{"class":50,"line":435},[48,1262,1263],{"class":101},"    runs-on",[48,1265,108],{"class":91},[48,1267,1268],{"class":69}," ubuntu-latest\n",[48,1270,1271,1274],{"class":50,"line":440},[48,1272,1273],{"class":101},"    permissions",[48,1275,1201],{"class":91},[48,1277,1278,1281,1283],{"class":50,"line":486},[48,1279,1280],{"class":101},"      contents",[48,1282,108],{"class":91},[48,1284,1285],{"class":69}," write\n",[48,1287,1288],{"class":50,"line":498},[48,1289,336],{"emptyLinePlaceholder":335},[48,1291,1292,1295],{"class":50,"line":510},[48,1293,1294],{"class":101},"    steps",[48,1296,1201],{"class":91},[48,1298,1299,1302,1305,1307],{"class":50,"line":542},[48,1300,1301],{"class":91},"      -",[48,1303,1304],{"class":101}," name",[48,1306,108],{"class":91},[48,1308,1309],{"class":69}," Checkout repository\n",[48,1311,1312,1315,1317],{"class":50,"line":565},[48,1313,1314],{"class":101},"        uses",[48,1316,108],{"class":91},[48,1318,1319],{"class":69}," actions/checkout@v4\n",[48,1321,1322],{"class":50,"line":571},[48,1323,336],{"emptyLinePlaceholder":335},[48,1325,1326,1328,1330,1332],{"class":50,"line":576},[48,1327,1301],{"class":91},[48,1329,1304],{"class":101},[48,1331,108],{"class":91},[48,1333,1334],{"class":69}," Setup Node.js\n",[48,1336,1337,1339,1341],{"class":50,"line":585},[48,1338,1314],{"class":101},[48,1340,108],{"class":91},[48,1342,1343],{"class":69}," actions/setup-node@v4\n",[48,1345,1346,1349],{"class":50,"line":590},[48,1347,1348],{"class":101},"        with",[48,1350,1201],{"class":91},[48,1352,1353,1356,1358,1360,1363],{"class":50,"line":595},[48,1354,1355],{"class":101},"          node-version",[48,1357,108],{"class":91},[48,1359,308],{"class":65},[48,1361,1362],{"class":69},"20",[48,1364,314],{"class":65},[48,1366,1367],{"class":50,"line":609},[48,1368,336],{"emptyLinePlaceholder":335},[48,1370,1371,1373,1375,1377],{"class":50,"line":615},[48,1372,1301],{"class":91},[48,1374,1304],{"class":101},[48,1376,108],{"class":91},[48,1378,1189],{"class":69},[48,1380,1381,1384,1386],{"class":50,"line":629},[48,1382,1383],{"class":101},"        run",[48,1385,108],{"class":91},[48,1387,1388],{"class":69}," node scripts/fetch-fear-greed.mjs\n",[48,1390,1391],{"class":50,"line":655},[48,1392,336],{"emptyLinePlaceholder":335},[48,1394,1395,1397,1399,1401],{"class":50,"line":689},[48,1396,1301],{"class":91},[48,1398,1304],{"class":101},[48,1400,108],{"class":91},[48,1402,1403],{"class":69}," Commit and push changes\n",[48,1405,1406,1408,1410],{"class":50,"line":712},[48,1407,1383],{"class":101},[48,1409,108],{"class":91},[48,1411,1412],{"class":297}," |\n",[48,1414,1415],{"class":50,"line":717},[48,1416,1417],{"class":69},"          git config --local user.email \"github-actions[bot]@users.noreply.github.com\"\n",[48,1419,1420],{"class":50,"line":722},[48,1421,1422],{"class":69},"          git config --local user.name \"github-actions[bot]\"\n",[48,1424,1425],{"class":50,"line":728},[48,1426,1427],{"class":69},"          git add apps/web/public/data/fear-greed-history.json\n",[48,1429,1430],{"class":50,"line":744},[48,1431,1432],{"class":69},"          git diff --staged --quiet || git commit -m \"📊 Update Fear & Greed Index data\"\n",[48,1434,1435],{"class":50,"line":749},[48,1436,1437],{"class":69},"          git push\n",[36,1439,1441],{"id":1440},"step-3-チャートコンポーネントの作成","Step 3: チャートコンポーネントの作成",[14,1443,1444,280],{},[28,1445,1446],{},"apps/web/app/components/FearGreedChart.vue",[21,1448,1452],{"className":1449,"code":1450,"language":1451,"meta":30,"style":30},"language-vue shiki shiki-themes vitesse-light vitesse-light","\u003Ctemplate>\n  \u003Cdiv class=\"fear-greed-chart\">\n    \u003Ch3>Fear & Greed Index\u003C/h3>\n    \u003Cdiv v-if=\"loading\">Loading...\u003C/div>\n    \u003Ccanvas v-else ref=\"chartCanvas\">\u003C/canvas>\n    \u003Cp v-if=\"latestData\" class=\"latest-value\">\n      最新: {{ latestData.value }} ({{ latestData.classification }})\n      \u003Cspan class=\"date\">{{ latestData.date }}\u003C/span>\n    \u003C/p>\n  \u003C/div>\n\u003C/template>\n\n\u003Cscript setup>\nimport { ref, onMounted, watch } from 'vue'\nimport { Chart, registerables } from 'chart.js'\n\nChart.register(...registerables)\n\nconst chartCanvas = ref(null)\nconst loading = ref(true)\nconst latestData = ref(null)\nlet chartInstance = null\n\nonMounted(async () => {\n  try {\n    const response = await fetch('/data/fear-greed-history.json')\n    const data = await response.json()\n\n    // 最新30日分を表示\n    const recentData = data.slice(-30)\n    latestData.value = recentData[recentData.length - 1]\n\n    chartInstance = new Chart(chartCanvas.value, {\n      type: 'line',\n      data: {\n        labels: recentData.map(d => d.date),\n        datasets: [{\n          label: 'Fear & Greed Index',\n          data: recentData.map(d => d.value),\n          borderColor: getGradientColor,\n          backgroundColor: 'rgba(75, 192, 192, 0.1)',\n          fill: true,\n          tension: 0.3\n        }]\n      },\n      options: {\n        responsive: true,\n        scales: {\n          y: {\n            min: 0,\n            max: 100,\n            ticks: {\n              callback: (value) => {\n                if (value === 0) return 'Extreme Fear'\n                if (value === 25) return 'Fear'\n                if (value === 50) return 'Neutral'\n                if (value === 75) return 'Greed'\n                if (value === 100) return 'Extreme Greed'\n                return value\n              }\n            }\n          }\n        },\n        plugins: {\n          tooltip: {\n            callbacks: {\n              label: (context) => {\n                const value = context.parsed.y\n                return `${value} - ${getClassification(value)}`\n              }\n            }\n          }\n        }\n      }\n    })\n  } catch (error) {\n    console.error('Failed to load fear greed data:', error)\n  } finally {\n    loading.value = false\n  }\n})\n\nfunction getClassification(value) {\n  if (value \u003C= 25) return 'Extreme Fear'\n  if (value \u003C= 45) return 'Fear'\n  if (value \u003C= 55) return 'Neutral'\n  if (value \u003C= 75) return 'Greed'\n  return 'Extreme Greed'\n}\n\nfunction getGradientColor(context) {\n  const chart = context.chart\n  const { ctx, chartArea } = chart\n  if (!chartArea) return 'rgb(75, 192, 192)'\n\n  const gradient = ctx.createLinearGradient(0, chartArea.bottom, 0, chartArea.top)\n  gradient.addColorStop(0, 'rgb(220, 53, 69)')    // Extreme Fear (赤)\n  gradient.addColorStop(0.25, 'rgb(255, 193, 7)') // Fear (オレンジ)\n  gradient.addColorStop(0.5, 'rgb(108, 117, 125)') // Neutral (グレー)\n  gradient.addColorStop(0.75, 'rgb(40, 167, 69)')  // Greed (緑)\n  gradient.addColorStop(1, 'rgb(0, 123, 255)')     // Extreme Greed (青)\n\n  return gradient\n}\n\u003C/script>\n\n\u003Cstyle scoped>\n.fear-greed-chart {\n  padding: 20px;\n  background: var(--color-bg-secondary, #f8f9fa);\n  border-radius: 8px;\n}\n\n.latest-value {\n  text-align: center;\n  font-size: 1.2em;\n  margin-top: 16px;\n}\n\n.date {\n  color: #666;\n  font-size: 0.8em;\n  margin-left: 8px;\n}\n\u003C/style>\n","vue",[28,1453,1454,1465,1488,1509,1538,1567,1597,1602,1630,1639,1648,1656,1660,1672,1701,1726,1730,1748,1752,1770,1788,1805,1818,1822,1838,1845,1868,1887,1891,1896,1922,1953,1957,1980,1995,2004,2034,2044,2059,2086,2098,2114,2125,2135,2140,2145,2154,2165,2174,2183,2194,2206,2215,2232,2257,2282,2307,2331,2355,2364,2370,2376,2382,2388,2398,2408,2418,2437,2461,2493,2498,2503,2508,2514,2520,2526,2542,2568,2578,2593,2598,2604,2609,2626,2650,2674,2698,2721,2732,2737,2742,2757,2774,2796,2819,2824,2869,2898,2926,2954,2982,3010,3015,3023,3028,3037,3042,3055,3064,3081,3109,3124,3129,3134,3143,3156,3172,3187,3192,3197,3206,3221,3235,3249,3254],{"__ignoreMap":30},[48,1455,1456,1459,1462],{"class":50,"line":51},[48,1457,1458],{"class":91},"\u003C",[48,1460,1461],{"class":297},"template",[48,1463,1464],{"class":91},">\n",[48,1466,1467,1470,1473,1476,1479,1481,1484,1486],{"class":50,"line":58},[48,1468,1469],{"class":91},"  \u003C",[48,1471,1472],{"class":297},"div",[48,1474,1475],{"class":301}," class",[48,1477,1478],{"class":91},"=",[48,1480,105],{"class":65},[48,1482,1483],{"class":69},"fear-greed-chart",[48,1485,105],{"class":65},[48,1487,1464],{"class":91},[48,1489,1490,1493,1495,1498,1502,1505,1507],{"class":50,"line":121},[48,1491,1492],{"class":91},"    \u003C",[48,1494,36],{"class":297},[48,1496,1497],{"class":91},">",[48,1499,1501],{"class":1500},"sG7-3","Fear & Greed Index",[48,1503,1504],{"class":91},"\u003C/",[48,1506,36],{"class":297},[48,1508,1464],{"class":91},[48,1510,1511,1513,1515,1518,1520,1522,1525,1527,1529,1532,1534,1536],{"class":50,"line":136},[48,1512,1492],{"class":91},[48,1514,1472],{"class":297},[48,1516,1517],{"class":301}," v-if",[48,1519,1478],{"class":91},[48,1521,105],{"class":65},[48,1523,1524],{"class":69},"loading",[48,1526,105],{"class":65},[48,1528,1497],{"class":91},[48,1530,1531],{"class":1500},"Loading...",[48,1533,1504],{"class":91},[48,1535,1472],{"class":297},[48,1537,1464],{"class":91},[48,1539,1540,1542,1545,1548,1551,1553,1555,1558,1560,1563,1565],{"class":50,"line":142},[48,1541,1492],{"class":91},[48,1543,1544],{"class":297},"canvas",[48,1546,1547],{"class":301}," v-else",[48,1549,1550],{"class":301}," ref",[48,1552,1478],{"class":91},[48,1554,105],{"class":65},[48,1556,1557],{"class":69},"chartCanvas",[48,1559,105],{"class":65},[48,1561,1562],{"class":91},">\u003C/",[48,1564,1544],{"class":297},[48,1566,1464],{"class":91},[48,1568,1569,1571,1573,1575,1577,1579,1582,1584,1586,1588,1590,1593,1595],{"class":50,"line":164},[48,1570,1492],{"class":91},[48,1572,14],{"class":297},[48,1574,1517],{"class":301},[48,1576,1478],{"class":91},[48,1578,105],{"class":65},[48,1580,1581],{"class":69},"latestData",[48,1583,105],{"class":65},[48,1585,1475],{"class":301},[48,1587,1478],{"class":91},[48,1589,105],{"class":65},[48,1591,1592],{"class":69},"latest-value",[48,1594,105],{"class":65},[48,1596,1464],{"class":91},[48,1598,1599],{"class":50,"line":185},[48,1600,1601],{"class":1500},"      最新: {{ latestData.value }} ({{ latestData.classification }})\n",[48,1603,1604,1607,1609,1611,1613,1615,1617,1619,1621,1624,1626,1628],{"class":50,"line":204},[48,1605,1606],{"class":91},"      \u003C",[48,1608,48],{"class":297},[48,1610,1475],{"class":301},[48,1612,1478],{"class":91},[48,1614,105],{"class":65},[48,1616,785],{"class":69},[48,1618,105],{"class":65},[48,1620,1497],{"class":91},[48,1622,1623],{"class":1500},"{{ latestData.date }}",[48,1625,1504],{"class":91},[48,1627,48],{"class":297},[48,1629,1464],{"class":91},[48,1631,1632,1635,1637],{"class":50,"line":210},[48,1633,1634],{"class":91},"    \u003C/",[48,1636,14],{"class":297},[48,1638,1464],{"class":91},[48,1640,1641,1644,1646],{"class":50,"line":216},[48,1642,1643],{"class":91},"  \u003C/",[48,1645,1472],{"class":297},[48,1647,1464],{"class":91},[48,1649,1650,1652,1654],{"class":50,"line":435},[48,1651,1504],{"class":91},[48,1653,1461],{"class":297},[48,1655,1464],{"class":91},[48,1657,1658],{"class":50,"line":440},[48,1659,336],{"emptyLinePlaceholder":335},[48,1661,1662,1664,1667,1670],{"class":50,"line":486},[48,1663,1458],{"class":91},[48,1665,1666],{"class":297},"script",[48,1668,1669],{"class":301}," setup",[48,1671,1464],{"class":91},[48,1673,1674,1676,1678,1680,1682,1685,1687,1690,1693,1695,1697,1699],{"class":50,"line":498},[48,1675,298],{"class":297},[48,1677,1006],{"class":91},[48,1679,1550],{"class":301},[48,1681,677],{"class":91},[48,1683,1684],{"class":301}," onMounted",[48,1686,677],{"class":91},[48,1688,1689],{"class":301}," watch",[48,1691,1692],{"class":91}," }",[48,1694,305],{"class":297},[48,1696,308],{"class":65},[48,1698,1451],{"class":69},[48,1700,314],{"class":65},[48,1702,1703,1705,1707,1710,1712,1715,1717,1719,1721,1724],{"class":50,"line":510},[48,1704,298],{"class":297},[48,1706,1006],{"class":91},[48,1708,1709],{"class":301}," Chart",[48,1711,677],{"class":91},[48,1713,1714],{"class":301}," registerables",[48,1716,1692],{"class":91},[48,1718,305],{"class":297},[48,1720,308],{"class":65},[48,1722,1723],{"class":69},"chart.js",[48,1725,314],{"class":65},[48,1727,1728],{"class":50,"line":542},[48,1729,336],{"emptyLinePlaceholder":335},[48,1731,1732,1735,1737,1740,1743,1746],{"class":50,"line":565},[48,1733,1734],{"class":301},"Chart",[48,1736,427],{"class":91},[48,1738,1739],{"class":61},"register",[48,1741,1742],{"class":91},"(...",[48,1744,1745],{"class":301},"registerables",[48,1747,411],{"class":91},[48,1749,1750],{"class":50,"line":571},[48,1751,336],{"emptyLinePlaceholder":335},[48,1753,1754,1756,1759,1761,1763,1765,1768],{"class":50,"line":576},[48,1755,342],{"class":341},[48,1757,1758],{"class":301}," chartCanvas",[48,1760,348],{"class":91},[48,1762,1550],{"class":61},[48,1764,400],{"class":91},[48,1766,1767],{"class":341},"null",[48,1769,411],{"class":91},[48,1771,1772,1774,1777,1779,1781,1783,1786],{"class":50,"line":585},[48,1773,342],{"class":341},[48,1775,1776],{"class":301}," loading",[48,1778,348],{"class":91},[48,1780,1550],{"class":61},[48,1782,400],{"class":91},[48,1784,1785],{"class":297},"true",[48,1787,411],{"class":91},[48,1789,1790,1792,1795,1797,1799,1801,1803],{"class":50,"line":590},[48,1791,342],{"class":341},[48,1793,1794],{"class":301}," latestData",[48,1796,348],{"class":91},[48,1798,1550],{"class":61},[48,1800,400],{"class":91},[48,1802,1767],{"class":341},[48,1804,411],{"class":91},[48,1806,1807,1810,1813,1815],{"class":50,"line":595},[48,1808,1809],{"class":341},"let",[48,1811,1812],{"class":301}," chartInstance",[48,1814,348],{"class":91},[48,1816,1817],{"class":341}," null\n",[48,1819,1820],{"class":50,"line":609},[48,1821,336],{"emptyLinePlaceholder":335},[48,1823,1824,1827,1829,1831,1834,1836],{"class":50,"line":615},[48,1825,1826],{"class":61},"onMounted",[48,1828,400],{"class":91},[48,1830,364],{"class":341},[48,1832,1833],{"class":91}," ()",[48,1835,777],{"class":91},[48,1837,376],{"class":91},[48,1839,1840,1843],{"class":50,"line":629},[48,1841,1842],{"class":297},"  try",[48,1844,376],{"class":91},[48,1846,1847,1849,1851,1853,1855,1857,1859,1861,1864,1866],{"class":50,"line":655},[48,1848,658],{"class":341},[48,1850,389],{"class":301},[48,1852,348],{"class":91},[48,1854,394],{"class":297},[48,1856,397],{"class":61},[48,1858,400],{"class":91},[48,1860,403],{"class":65},[48,1862,1863],{"class":69},"/data/fear-greed-history.json",[48,1865,403],{"class":65},[48,1867,411],{"class":91},[48,1869,1870,1872,1875,1877,1879,1881,1883,1885],{"class":50,"line":689},[48,1871,658],{"class":341},[48,1873,1874],{"class":301}," data",[48,1876,348],{"class":91},[48,1878,394],{"class":297},[48,1880,389],{"class":301},[48,1882,427],{"class":91},[48,1884,84],{"class":61},[48,1886,432],{"class":91},[48,1888,1889],{"class":50,"line":712},[48,1890,336],{"emptyLinePlaceholder":335},[48,1892,1893],{"class":50,"line":717},[48,1894,1895],{"class":54},"    // 最新30日分を表示\n",[48,1897,1898,1900,1903,1905,1907,1909,1912,1914,1917,1920],{"class":50,"line":722},[48,1899,658],{"class":341},[48,1901,1902],{"class":301}," recentData",[48,1904,348],{"class":91},[48,1906,1874],{"class":301},[48,1908,427],{"class":91},[48,1910,1911],{"class":61},"slice",[48,1913,400],{"class":91},[48,1915,1916],{"class":341},"-",[48,1918,1919],{"class":479},"30",[48,1921,411],{"class":91},[48,1923,1924,1927,1929,1931,1933,1935,1937,1940,1942,1945,1948,1951],{"class":50,"line":728},[48,1925,1926],{"class":301},"    latestData",[48,1928,427],{"class":91},[48,1930,148],{"class":301},[48,1932,348],{"class":91},[48,1934,1902],{"class":301},[48,1936,529],{"class":91},[48,1938,1939],{"class":301},"recentData",[48,1941,427],{"class":91},[48,1943,1944],{"class":101},"length",[48,1946,1947],{"class":341}," -",[48,1949,1950],{"class":479}," 1",[48,1952,483],{"class":91},[48,1954,1955],{"class":50,"line":744},[48,1956,336],{"emptyLinePlaceholder":335},[48,1958,1959,1962,1964,1966,1968,1970,1972,1974,1976,1978],{"class":50,"line":749},[48,1960,1961],{"class":301},"    chartInstance",[48,1963,348],{"class":91},[48,1965,450],{"class":341},[48,1967,1709],{"class":61},[48,1969,400],{"class":91},[48,1971,1557],{"class":301},[48,1973,427],{"class":91},[48,1975,148],{"class":301},[48,1977,677],{"class":91},[48,1979,376],{"class":91},[48,1981,1982,1985,1987,1989,1991,1993],{"class":50,"line":755},[48,1983,1984],{"class":101},"      type",[48,1986,108],{"class":91},[48,1988,308],{"class":65},[48,1990,50],{"class":69},[48,1992,403],{"class":65},[48,1994,118],{"class":91},[48,1996,1997,2000,2002],{"class":50,"line":799},[48,1998,1999],{"class":101},"      data",[48,2001,108],{"class":91},[48,2003,376],{"class":91},[48,2005,2006,2009,2011,2013,2015,2018,2020,2023,2025,2028,2030,2032],{"class":50,"line":820},[48,2007,2008],{"class":101},"        labels",[48,2010,108],{"class":91},[48,2012,1902],{"class":301},[48,2014,427],{"class":91},[48,2016,2017],{"class":61},"map",[48,2019,400],{"class":91},[48,2021,2022],{"class":301},"d",[48,2024,777],{"class":91},[48,2026,2027],{"class":301}," d",[48,2029,427],{"class":91},[48,2031,785],{"class":301},[48,2033,539],{"class":91},[48,2035,2036,2039,2041],{"class":50,"line":837},[48,2037,2038],{"class":101},"        datasets",[48,2040,108],{"class":91},[48,2042,2043],{"class":91}," [{\n",[48,2045,2046,2049,2051,2053,2055,2057],{"class":50,"line":848},[48,2047,2048],{"class":101},"          label",[48,2050,108],{"class":91},[48,2052,308],{"class":65},[48,2054,1501],{"class":69},[48,2056,403],{"class":65},[48,2058,118],{"class":91},[48,2060,2061,2064,2066,2068,2070,2072,2074,2076,2078,2080,2082,2084],{"class":50,"line":865},[48,2062,2063],{"class":101},"          data",[48,2065,108],{"class":91},[48,2067,1902],{"class":301},[48,2069,427],{"class":91},[48,2071,2017],{"class":61},[48,2073,400],{"class":91},[48,2075,2022],{"class":301},[48,2077,777],{"class":91},[48,2079,2027],{"class":301},[48,2081,427],{"class":91},[48,2083,148],{"class":301},[48,2085,539],{"class":91},[48,2087,2088,2091,2093,2096],{"class":50,"line":870},[48,2089,2090],{"class":101},"          borderColor",[48,2092,108],{"class":91},[48,2094,2095],{"class":301}," getGradientColor",[48,2097,118],{"class":91},[48,2099,2100,2103,2105,2107,2110,2112],{"class":50,"line":875},[48,2101,2102],{"class":101},"          backgroundColor",[48,2104,108],{"class":91},[48,2106,308],{"class":65},[48,2108,2109],{"class":69},"rgba(75, 192, 192, 0.1)",[48,2111,403],{"class":65},[48,2113,118],{"class":91},[48,2115,2116,2119,2121,2123],{"class":50,"line":881},[48,2117,2118],{"class":101},"          fill",[48,2120,108],{"class":91},[48,2122,1014],{"class":297},[48,2124,118],{"class":91},[48,2126,2127,2130,2132],{"class":50,"line":930},[48,2128,2129],{"class":101},"          tension",[48,2131,108],{"class":91},[48,2133,2134],{"class":479}," 0.3\n",[48,2136,2137],{"class":50,"line":935},[48,2138,2139],{"class":91},"        }]\n",[48,2141,2142],{"class":50,"line":941},[48,2143,2144],{"class":91},"      },\n",[48,2146,2147,2150,2152],{"class":50,"line":964},[48,2148,2149],{"class":101},"      options",[48,2151,108],{"class":91},[48,2153,376],{"class":91},[48,2155,2156,2159,2161,2163],{"class":50,"line":989},[48,2157,2158],{"class":101},"        responsive",[48,2160,108],{"class":91},[48,2162,1014],{"class":297},[48,2164,118],{"class":91},[48,2166,2167,2170,2172],{"class":50,"line":1020},[48,2168,2169],{"class":101},"        scales",[48,2171,108],{"class":91},[48,2173,376],{"class":91},[48,2175,2176,2179,2181],{"class":50,"line":1025},[48,2177,2178],{"class":101},"          y",[48,2180,108],{"class":91},[48,2182,376],{"class":91},[48,2184,2185,2188,2190,2192],{"class":50,"line":1066},[48,2186,2187],{"class":101},"            min",[48,2189,108],{"class":91},[48,2191,812],{"class":479},[48,2193,118],{"class":91},[48,2195,2196,2199,2201,2204],{"class":50,"line":1071},[48,2197,2198],{"class":101},"            max",[48,2200,108],{"class":91},[48,2202,2203],{"class":479}," 100",[48,2205,118],{"class":91},[48,2207,2208,2211,2213],{"class":50,"line":1134},[48,2209,2210],{"class":101},"            ticks",[48,2212,108],{"class":91},[48,2214,376],{"class":91},[48,2216,2217,2220,2222,2224,2226,2228,2230],{"class":50,"line":1139},[48,2218,2219],{"class":61},"              callback",[48,2221,108],{"class":91},[48,2223,635],{"class":91},[48,2225,148],{"class":301},[48,2227,815],{"class":91},[48,2229,777],{"class":91},[48,2231,376],{"class":91},[48,2233,2234,2237,2239,2241,2243,2245,2247,2250,2252,2255],{"class":50,"line":1144},[48,2235,2236],{"class":297},"                if",[48,2238,635],{"class":91},[48,2240,148],{"class":301},[48,2242,788],{"class":341},[48,2244,812],{"class":479},[48,2246,815],{"class":91},[48,2248,2249],{"class":297}," return",[48,2251,308],{"class":65},[48,2253,2254],{"class":69},"Extreme Fear",[48,2256,314],{"class":65},[48,2258,2260,2262,2264,2266,2268,2271,2273,2275,2277,2280],{"class":50,"line":2259},55,[48,2261,2236],{"class":297},[48,2263,635],{"class":91},[48,2265,148],{"class":301},[48,2267,788],{"class":341},[48,2269,2270],{"class":479}," 25",[48,2272,815],{"class":91},[48,2274,2249],{"class":297},[48,2276,308],{"class":65},[48,2278,2279],{"class":69},"Fear",[48,2281,314],{"class":65},[48,2283,2285,2287,2289,2291,2293,2296,2298,2300,2302,2305],{"class":50,"line":2284},56,[48,2286,2236],{"class":297},[48,2288,635],{"class":91},[48,2290,148],{"class":301},[48,2292,788],{"class":341},[48,2294,2295],{"class":479}," 50",[48,2297,815],{"class":91},[48,2299,2249],{"class":297},[48,2301,308],{"class":65},[48,2303,2304],{"class":69},"Neutral",[48,2306,314],{"class":65},[48,2308,2310,2312,2314,2316,2318,2321,2323,2325,2327,2329],{"class":50,"line":2309},57,[48,2311,2236],{"class":297},[48,2313,635],{"class":91},[48,2315,148],{"class":301},[48,2317,788],{"class":341},[48,2319,2320],{"class":479}," 75",[48,2322,815],{"class":91},[48,2324,2249],{"class":297},[48,2326,308],{"class":65},[48,2328,178],{"class":69},[48,2330,314],{"class":65},[48,2332,2334,2336,2338,2340,2342,2344,2346,2348,2350,2353],{"class":50,"line":2333},58,[48,2335,2236],{"class":297},[48,2337,635],{"class":91},[48,2339,148],{"class":301},[48,2341,788],{"class":341},[48,2343,2203],{"class":479},[48,2345,815],{"class":91},[48,2347,2249],{"class":297},[48,2349,308],{"class":65},[48,2351,2352],{"class":69},"Extreme Greed",[48,2354,314],{"class":65},[48,2356,2358,2361],{"class":50,"line":2357},59,[48,2359,2360],{"class":297},"                return",[48,2362,2363],{"class":301}," value\n",[48,2365,2367],{"class":50,"line":2366},60,[48,2368,2369],{"class":91},"              }\n",[48,2371,2373],{"class":50,"line":2372},61,[48,2374,2375],{"class":91},"            }\n",[48,2377,2379],{"class":50,"line":2378},62,[48,2380,2381],{"class":91},"          }\n",[48,2383,2385],{"class":50,"line":2384},63,[48,2386,2387],{"class":91},"        },\n",[48,2389,2391,2394,2396],{"class":50,"line":2390},64,[48,2392,2393],{"class":101},"        plugins",[48,2395,108],{"class":91},[48,2397,376],{"class":91},[48,2399,2401,2404,2406],{"class":50,"line":2400},65,[48,2402,2403],{"class":101},"          tooltip",[48,2405,108],{"class":91},[48,2407,376],{"class":91},[48,2409,2411,2414,2416],{"class":50,"line":2410},66,[48,2412,2413],{"class":101},"            callbacks",[48,2415,108],{"class":91},[48,2417,376],{"class":91},[48,2419,2421,2424,2426,2428,2431,2433,2435],{"class":50,"line":2420},67,[48,2422,2423],{"class":61},"              label",[48,2425,108],{"class":91},[48,2427,635],{"class":91},[48,2429,2430],{"class":301},"context",[48,2432,815],{"class":91},[48,2434,777],{"class":91},[48,2436,376],{"class":91},[48,2438,2440,2443,2446,2448,2451,2453,2456,2458],{"class":50,"line":2439},68,[48,2441,2442],{"class":341},"                const",[48,2444,2445],{"class":301}," value",[48,2447,348],{"class":91},[48,2449,2450],{"class":301}," context",[48,2452,427],{"class":91},[48,2454,2455],{"class":301},"parsed",[48,2457,427],{"class":91},[48,2459,2460],{"class":301},"y\n",[48,2462,2464,2466,2469,2471,2473,2475,2477,2479,2482,2484,2486,2488,2490],{"class":50,"line":2463},69,[48,2465,2360],{"class":297},[48,2467,2468],{"class":65}," `",[48,2470,1090],{"class":297},[48,2472,148],{"class":69},[48,2474,1099],{"class":297},[48,2476,1102],{"class":69},[48,2478,1090],{"class":297},[48,2480,2481],{"class":61},"getClassification",[48,2483,400],{"class":91},[48,2485,148],{"class":69},[48,2487,815],{"class":91},[48,2489,1099],{"class":297},[48,2491,2492],{"class":65},"`\n",[48,2494,2496],{"class":50,"line":2495},70,[48,2497,2369],{"class":91},[48,2499,2501],{"class":50,"line":2500},71,[48,2502,2375],{"class":91},[48,2504,2506],{"class":50,"line":2505},72,[48,2507,2381],{"class":91},[48,2509,2511],{"class":50,"line":2510},73,[48,2512,2513],{"class":91},"        }\n",[48,2515,2517],{"class":50,"line":2516},74,[48,2518,2519],{"class":91},"      }\n",[48,2521,2523],{"class":50,"line":2522},75,[48,2524,2525],{"class":91},"    })\n",[48,2527,2529,2531,2534,2536,2538,2540],{"class":50,"line":2528},76,[48,2530,840],{"class":91},[48,2532,2533],{"class":297}," catch",[48,2535,635],{"class":91},[48,2537,1162],{"class":301},[48,2539,815],{"class":91},[48,2541,376],{"class":91},[48,2543,2545,2548,2550,2552,2554,2556,2559,2561,2563,2566],{"class":50,"line":2544},77,[48,2546,2547],{"class":301},"    console",[48,2549,427],{"class":91},[48,2551,1162],{"class":61},[48,2553,400],{"class":91},[48,2555,403],{"class":65},[48,2557,2558],{"class":69},"Failed to load fear greed data:",[48,2560,403],{"class":65},[48,2562,677],{"class":91},[48,2564,2565],{"class":301}," error",[48,2567,411],{"class":91},[48,2569,2571,2573,2576],{"class":50,"line":2570},78,[48,2572,840],{"class":91},[48,2574,2575],{"class":297}," finally",[48,2577,376],{"class":91},[48,2579,2581,2584,2586,2588,2590],{"class":50,"line":2580},79,[48,2582,2583],{"class":301},"    loading",[48,2585,427],{"class":91},[48,2587,148],{"class":301},[48,2589,348],{"class":91},[48,2591,2592],{"class":297}," false\n",[48,2594,2596],{"class":50,"line":2595},80,[48,2597,568],{"class":91},[48,2599,2601],{"class":50,"line":2600},81,[48,2602,2603],{"class":91},"})\n",[48,2605,2607],{"class":50,"line":2606},82,[48,2608,336],{"emptyLinePlaceholder":335},[48,2610,2612,2615,2618,2620,2622,2624],{"class":50,"line":2611},83,[48,2613,2614],{"class":341},"function",[48,2616,2617],{"class":61}," getClassification",[48,2619,400],{"class":91},[48,2621,148],{"class":301},[48,2623,815],{"class":91},[48,2625,376],{"class":91},[48,2627,2629,2631,2633,2635,2638,2640,2642,2644,2646,2648],{"class":50,"line":2628},84,[48,2630,632],{"class":297},[48,2632,635],{"class":91},[48,2634,148],{"class":301},[48,2636,2637],{"class":91}," \u003C=",[48,2639,2270],{"class":479},[48,2641,815],{"class":91},[48,2643,2249],{"class":297},[48,2645,308],{"class":65},[48,2647,2254],{"class":69},[48,2649,314],{"class":65},[48,2651,2653,2655,2657,2659,2661,2664,2666,2668,2670,2672],{"class":50,"line":2652},85,[48,2654,632],{"class":297},[48,2656,635],{"class":91},[48,2658,148],{"class":301},[48,2660,2637],{"class":91},[48,2662,2663],{"class":479}," 45",[48,2665,815],{"class":91},[48,2667,2249],{"class":297},[48,2669,308],{"class":65},[48,2671,2279],{"class":69},[48,2673,314],{"class":65},[48,2675,2677,2679,2681,2683,2685,2688,2690,2692,2694,2696],{"class":50,"line":2676},86,[48,2678,632],{"class":297},[48,2680,635],{"class":91},[48,2682,148],{"class":301},[48,2684,2637],{"class":91},[48,2686,2687],{"class":479}," 55",[48,2689,815],{"class":91},[48,2691,2249],{"class":297},[48,2693,308],{"class":65},[48,2695,2304],{"class":69},[48,2697,314],{"class":65},[48,2699,2701,2703,2705,2707,2709,2711,2713,2715,2717,2719],{"class":50,"line":2700},87,[48,2702,632],{"class":297},[48,2704,635],{"class":91},[48,2706,148],{"class":301},[48,2708,2637],{"class":91},[48,2710,2320],{"class":479},[48,2712,815],{"class":91},[48,2714,2249],{"class":297},[48,2716,308],{"class":65},[48,2718,178],{"class":69},[48,2720,314],{"class":65},[48,2722,2724,2726,2728,2730],{"class":50,"line":2723},88,[48,2725,579],{"class":297},[48,2727,308],{"class":65},[48,2729,2352],{"class":69},[48,2731,314],{"class":65},[48,2733,2735],{"class":50,"line":2734},89,[48,2736,219],{"class":91},[48,2738,2740],{"class":50,"line":2739},90,[48,2741,336],{"emptyLinePlaceholder":335},[48,2743,2745,2747,2749,2751,2753,2755],{"class":50,"line":2744},91,[48,2746,2614],{"class":341},[48,2748,2095],{"class":61},[48,2750,400],{"class":91},[48,2752,2430],{"class":301},[48,2754,815],{"class":91},[48,2756,376],{"class":91},[48,2758,2760,2762,2765,2767,2769,2771],{"class":50,"line":2759},92,[48,2761,386],{"class":341},[48,2763,2764],{"class":301}," chart",[48,2766,348],{"class":91},[48,2768,2450],{"class":301},[48,2770,427],{"class":91},[48,2772,2773],{"class":301},"chart\n",[48,2775,2777,2779,2781,2784,2786,2789,2791,2793],{"class":50,"line":2776},93,[48,2778,386],{"class":341},[48,2780,1006],{"class":91},[48,2782,2783],{"class":301}," ctx",[48,2785,677],{"class":91},[48,2787,2788],{"class":301}," chartArea",[48,2790,1692],{"class":91},[48,2792,348],{"class":91},[48,2794,2795],{"class":301}," chart\n",[48,2797,2799,2801,2803,2805,2808,2810,2812,2814,2817],{"class":50,"line":2798},94,[48,2800,632],{"class":297},[48,2802,635],{"class":91},[48,2804,971],{"class":341},[48,2806,2807],{"class":301},"chartArea",[48,2809,815],{"class":91},[48,2811,2249],{"class":297},[48,2813,308],{"class":65},[48,2815,2816],{"class":69},"rgb(75, 192, 192)",[48,2818,314],{"class":65},[48,2820,2822],{"class":50,"line":2821},95,[48,2823,336],{"emptyLinePlaceholder":335},[48,2825,2827,2829,2832,2834,2836,2838,2841,2843,2845,2847,2849,2851,2854,2856,2858,2860,2862,2864,2867],{"class":50,"line":2826},96,[48,2828,386],{"class":341},[48,2830,2831],{"class":301}," gradient",[48,2833,348],{"class":91},[48,2835,2783],{"class":301},[48,2837,427],{"class":91},[48,2839,2840],{"class":61},"createLinearGradient",[48,2842,400],{"class":91},[48,2844,480],{"class":479},[48,2846,677],{"class":91},[48,2848,2788],{"class":301},[48,2850,427],{"class":91},[48,2852,2853],{"class":301},"bottom",[48,2855,677],{"class":91},[48,2857,812],{"class":479},[48,2859,677],{"class":91},[48,2861,2788],{"class":301},[48,2863,427],{"class":91},[48,2865,2866],{"class":301},"top",[48,2868,411],{"class":91},[48,2870,2872,2875,2877,2880,2882,2884,2886,2888,2891,2893,2895],{"class":50,"line":2871},97,[48,2873,2874],{"class":301},"  gradient",[48,2876,427],{"class":91},[48,2878,2879],{"class":61},"addColorStop",[48,2881,400],{"class":91},[48,2883,480],{"class":479},[48,2885,677],{"class":91},[48,2887,308],{"class":65},[48,2889,2890],{"class":69},"rgb(220, 53, 69)",[48,2892,403],{"class":65},[48,2894,815],{"class":91},[48,2896,2897],{"class":54},"    // Extreme Fear (赤)\n",[48,2899,2901,2903,2905,2907,2909,2912,2914,2916,2919,2921,2923],{"class":50,"line":2900},98,[48,2902,2874],{"class":301},[48,2904,427],{"class":91},[48,2906,2879],{"class":61},[48,2908,400],{"class":91},[48,2910,2911],{"class":479},"0.25",[48,2913,677],{"class":91},[48,2915,308],{"class":65},[48,2917,2918],{"class":69},"rgb(255, 193, 7)",[48,2920,403],{"class":65},[48,2922,815],{"class":91},[48,2924,2925],{"class":54}," // Fear (オレンジ)\n",[48,2927,2929,2931,2933,2935,2937,2940,2942,2944,2947,2949,2951],{"class":50,"line":2928},99,[48,2930,2874],{"class":301},[48,2932,427],{"class":91},[48,2934,2879],{"class":61},[48,2936,400],{"class":91},[48,2938,2939],{"class":479},"0.5",[48,2941,677],{"class":91},[48,2943,308],{"class":65},[48,2945,2946],{"class":69},"rgb(108, 117, 125)",[48,2948,403],{"class":65},[48,2950,815],{"class":91},[48,2952,2953],{"class":54}," // Neutral (グレー)\n",[48,2955,2957,2959,2961,2963,2965,2968,2970,2972,2975,2977,2979],{"class":50,"line":2956},100,[48,2958,2874],{"class":301},[48,2960,427],{"class":91},[48,2962,2879],{"class":61},[48,2964,400],{"class":91},[48,2966,2967],{"class":479},"0.75",[48,2969,677],{"class":91},[48,2971,308],{"class":65},[48,2973,2974],{"class":69},"rgb(40, 167, 69)",[48,2976,403],{"class":65},[48,2978,815],{"class":91},[48,2980,2981],{"class":54},"  // Greed (緑)\n",[48,2983,2985,2987,2989,2991,2993,2996,2998,3000,3003,3005,3007],{"class":50,"line":2984},101,[48,2986,2874],{"class":301},[48,2988,427],{"class":91},[48,2990,2879],{"class":61},[48,2992,400],{"class":91},[48,2994,2995],{"class":479},"1",[48,2997,677],{"class":91},[48,2999,308],{"class":65},[48,3001,3002],{"class":69},"rgb(0, 123, 255)",[48,3004,403],{"class":65},[48,3006,815],{"class":91},[48,3008,3009],{"class":54},"     // Extreme Greed (青)\n",[48,3011,3013],{"class":50,"line":3012},102,[48,3014,336],{"emptyLinePlaceholder":335},[48,3016,3018,3020],{"class":50,"line":3017},103,[48,3019,579],{"class":297},[48,3021,3022],{"class":301}," gradient\n",[48,3024,3026],{"class":50,"line":3025},104,[48,3027,219],{"class":91},[48,3029,3031,3033,3035],{"class":50,"line":3030},105,[48,3032,1504],{"class":91},[48,3034,1666],{"class":297},[48,3036,1464],{"class":91},[48,3038,3040],{"class":50,"line":3039},106,[48,3041,336],{"emptyLinePlaceholder":335},[48,3043,3045,3047,3050,3053],{"class":50,"line":3044},107,[48,3046,1458],{"class":91},[48,3048,3049],{"class":297},"style",[48,3051,3052],{"class":301}," scoped",[48,3054,1464],{"class":91},[48,3056,3058,3060,3062],{"class":50,"line":3057},108,[48,3059,427],{"class":91},[48,3061,1483],{"class":301},[48,3063,376],{"class":91},[48,3065,3067,3070,3072,3075,3078],{"class":50,"line":3066},109,[48,3068,3069],{"class":101},"  padding",[48,3071,108],{"class":91},[48,3073,3074],{"class":479}," 20",[48,3076,3077],{"class":341},"px",[48,3079,3080],{"class":91},";\n",[48,3082,3084,3087,3089,3092,3094,3097,3099,3102,3106],{"class":50,"line":3083},110,[48,3085,3086],{"class":101},"  background",[48,3088,108],{"class":91},[48,3090,3091],{"class":101}," var",[48,3093,400],{"class":91},[48,3095,3096],{"class":301},"--color-bg-secondary",[48,3098,677],{"class":91},[48,3100,3101],{"class":91}," #",[48,3103,3105],{"class":3104},"snbK4","f8f9fa",[48,3107,3108],{"class":91},");\n",[48,3110,3112,3115,3117,3120,3122],{"class":50,"line":3111},111,[48,3113,3114],{"class":101},"  border-radius",[48,3116,108],{"class":91},[48,3118,3119],{"class":479}," 8",[48,3121,3077],{"class":341},[48,3123,3080],{"class":91},[48,3125,3127],{"class":50,"line":3126},112,[48,3128,219],{"class":91},[48,3130,3132],{"class":50,"line":3131},113,[48,3133,336],{"emptyLinePlaceholder":335},[48,3135,3137,3139,3141],{"class":50,"line":3136},114,[48,3138,427],{"class":91},[48,3140,1592],{"class":301},[48,3142,376],{"class":91},[48,3144,3146,3149,3151,3154],{"class":50,"line":3145},115,[48,3147,3148],{"class":101},"  text-align",[48,3150,108],{"class":91},[48,3152,3153],{"class":3104}," center",[48,3155,3080],{"class":91},[48,3157,3159,3162,3164,3167,3170],{"class":50,"line":3158},116,[48,3160,3161],{"class":101},"  font-size",[48,3163,108],{"class":91},[48,3165,3166],{"class":479}," 1.2",[48,3168,3169],{"class":341},"em",[48,3171,3080],{"class":91},[48,3173,3175,3178,3180,3183,3185],{"class":50,"line":3174},117,[48,3176,3177],{"class":101},"  margin-top",[48,3179,108],{"class":91},[48,3181,3182],{"class":479}," 16",[48,3184,3077],{"class":341},[48,3186,3080],{"class":91},[48,3188,3190],{"class":50,"line":3189},118,[48,3191,219],{"class":91},[48,3193,3195],{"class":50,"line":3194},119,[48,3196,336],{"emptyLinePlaceholder":335},[48,3198,3200,3202,3204],{"class":50,"line":3199},120,[48,3201,427],{"class":91},[48,3203,785],{"class":301},[48,3205,376],{"class":91},[48,3207,3209,3212,3214,3216,3219],{"class":50,"line":3208},121,[48,3210,3211],{"class":101},"  color",[48,3213,108],{"class":91},[48,3215,3101],{"class":91},[48,3217,3218],{"class":3104},"666",[48,3220,3080],{"class":91},[48,3222,3224,3226,3228,3231,3233],{"class":50,"line":3223},122,[48,3225,3161],{"class":101},[48,3227,108],{"class":91},[48,3229,3230],{"class":479}," 0.8",[48,3232,3169],{"class":341},[48,3234,3080],{"class":91},[48,3236,3238,3241,3243,3245,3247],{"class":50,"line":3237},123,[48,3239,3240],{"class":101},"  margin-left",[48,3242,108],{"class":91},[48,3244,3119],{"class":479},[48,3246,3077],{"class":341},[48,3248,3080],{"class":91},[48,3250,3252],{"class":50,"line":3251},124,[48,3253,219],{"class":91},[48,3255,3257,3259,3261],{"class":50,"line":3256},125,[48,3258,1504],{"class":91},[48,3260,3049],{"class":297},[48,3262,1464],{"class":91},[36,3264,3266],{"id":3265},"step-4-chartjsのインストール","Step 4: Chart.jsのインストール",[21,3268,3270],{"className":42,"code":3269,"language":44,"meta":30,"style":30},"cd apps/web\npnpm add chart.js\n",[28,3271,3272,3280],{"__ignoreMap":30},[48,3273,3274,3277],{"class":50,"line":51},[48,3275,3276],{"class":101},"cd",[48,3278,3279],{"class":69}," apps/web\n",[48,3281,3282,3285,3288],{"class":50,"line":58},[48,3283,3284],{"class":61},"pnpm",[48,3286,3287],{"class":69}," add",[48,3289,3290],{"class":69}," chart.js\n",[36,3292,3294],{"id":3293},"step-5-ページでコンポーネントを使用","Step 5: ページでコンポーネントを使用",[14,3296,3297],{},"任意のVueページまたはMarkdownで使用:",[21,3299,3301],{"className":1449,"code":3300,"language":1451,"meta":30,"style":30},"\u003Ctemplate>\n  \u003Cdiv>\n    \u003Ch1>市場センチメント\u003C/h1>\n    \u003CFearGreedChart />\n  \u003C/div>\n\u003C/template>\n",[28,3302,3303,3311,3319,3337,3347,3355],{"__ignoreMap":30},[48,3304,3305,3307,3309],{"class":50,"line":51},[48,3306,1458],{"class":91},[48,3308,1461],{"class":297},[48,3310,1464],{"class":91},[48,3312,3313,3315,3317],{"class":50,"line":58},[48,3314,1469],{"class":91},[48,3316,1472],{"class":297},[48,3318,1464],{"class":91},[48,3320,3321,3323,3326,3328,3331,3333,3335],{"class":50,"line":121},[48,3322,1492],{"class":91},[48,3324,3325],{"class":297},"h1",[48,3327,1497],{"class":91},[48,3329,3330],{"class":1500},"市場センチメント",[48,3332,1504],{"class":91},[48,3334,3325],{"class":297},[48,3336,1464],{"class":91},[48,3338,3339,3341,3344],{"class":50,"line":136},[48,3340,1492],{"class":91},[48,3342,3343],{"class":297},"FearGreedChart",[48,3345,3346],{"class":91}," />\n",[48,3348,3349,3351,3353],{"class":50,"line":142},[48,3350,1643],{"class":91},[48,3352,1472],{"class":297},[48,3354,1464],{"class":91},[48,3356,3357,3359,3361],{"class":50,"line":164},[48,3358,1504],{"class":91},[48,3360,1461],{"class":297},[48,3362,1464],{"class":91},[266,3364],{},[10,3366,3368],{"id":3367},"cnn-fear-greed-index-株式市場版-を使う場合","CNN Fear & Greed Index (株式市場版) を使う場合",[14,3370,3371],{},"株式市場版が必要な場合は、以下の方法があります:",[36,3373,3375],{"id":3374},"方法a-python-wrapper-を使う","方法A: Python wrapper を使う",[21,3377,3379],{"className":1176,"code":3378,"language":1178,"meta":30,"style":30},"# .github/workflows/fetch-fear-greed.yml\njobs:\n  fetch:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n\n      - name: Setup Python\n        uses: actions/setup-python@v5\n        with:\n          python-version: '3.11'\n\n      - name: Install dependencies\n        run: pip install fear-greed-index\n\n      - name: Fetch CNN Fear & Greed\n        run: python scripts/fetch-cnn-fgi.py\n",[28,3380,3381,3386,3392,3398,3406,3412,3423,3427,3438,3447,3453,3467,3471,3482,3491,3495,3506],{"__ignoreMap":30},[48,3382,3383],{"class":50,"line":51},[48,3384,3385],{"class":54},"# .github/workflows/fetch-fear-greed.yml\n",[48,3387,3388,3390],{"class":50,"line":58},[48,3389,1249],{"class":101},[48,3391,1201],{"class":91},[48,3393,3394,3396],{"class":50,"line":121},[48,3395,1256],{"class":101},[48,3397,1201],{"class":91},[48,3399,3400,3402,3404],{"class":50,"line":136},[48,3401,1263],{"class":101},[48,3403,108],{"class":91},[48,3405,1268],{"class":69},[48,3407,3408,3410],{"class":50,"line":142},[48,3409,1294],{"class":101},[48,3411,1201],{"class":91},[48,3413,3414,3416,3419,3421],{"class":50,"line":164},[48,3415,1301],{"class":91},[48,3417,3418],{"class":101}," uses",[48,3420,108],{"class":91},[48,3422,1319],{"class":69},[48,3424,3425],{"class":50,"line":185},[48,3426,336],{"emptyLinePlaceholder":335},[48,3428,3429,3431,3433,3435],{"class":50,"line":204},[48,3430,1301],{"class":91},[48,3432,1304],{"class":101},[48,3434,108],{"class":91},[48,3436,3437],{"class":69}," Setup Python\n",[48,3439,3440,3442,3444],{"class":50,"line":210},[48,3441,1314],{"class":101},[48,3443,108],{"class":91},[48,3445,3446],{"class":69}," actions/setup-python@v5\n",[48,3448,3449,3451],{"class":50,"line":216},[48,3450,1348],{"class":101},[48,3452,1201],{"class":91},[48,3454,3455,3458,3460,3462,3465],{"class":50,"line":435},[48,3456,3457],{"class":101},"          python-version",[48,3459,108],{"class":91},[48,3461,308],{"class":65},[48,3463,3464],{"class":69},"3.11",[48,3466,314],{"class":65},[48,3468,3469],{"class":50,"line":440},[48,3470,336],{"emptyLinePlaceholder":335},[48,3472,3473,3475,3477,3479],{"class":50,"line":486},[48,3474,1301],{"class":91},[48,3476,1304],{"class":101},[48,3478,108],{"class":91},[48,3480,3481],{"class":69}," Install dependencies\n",[48,3483,3484,3486,3488],{"class":50,"line":498},[48,3485,1383],{"class":101},[48,3487,108],{"class":91},[48,3489,3490],{"class":69}," pip install fear-greed-index\n",[48,3492,3493],{"class":50,"line":510},[48,3494,336],{"emptyLinePlaceholder":335},[48,3496,3497,3499,3501,3503],{"class":50,"line":542},[48,3498,1301],{"class":91},[48,3500,1304],{"class":101},[48,3502,108],{"class":91},[48,3504,3505],{"class":69}," Fetch CNN Fear & Greed\n",[48,3507,3508,3510,3512],{"class":50,"line":565},[48,3509,1383],{"class":101},[48,3511,108],{"class":91},[48,3513,3514],{"class":69}," python scripts/fetch-cnn-fgi.py\n",[21,3516,3520],{"className":3517,"code":3518,"language":3519,"meta":30,"style":30},"language-python shiki shiki-themes vitesse-light vitesse-light","# scripts/fetch-cnn-fgi.py\nfrom fear_greed_index import cnn_fgi\nimport json\nfrom datetime import date\n\nfgi = cnn_fgi.get()\ntoday = date.today().isoformat()\n\nentry = {\n    \"date\": today,\n    \"value\": fgi.value,\n    \"classification\": fgi.description\n}\n\n# JSONファイルに追記...\n","python",[28,3521,3522,3527,3540,3547,3559,3563,3580,3602,3606,3615,3630,3649,3666,3670,3674],{"__ignoreMap":30},[48,3523,3524],{"class":50,"line":51},[48,3525,3526],{"class":54},"# scripts/fetch-cnn-fgi.py\n",[48,3528,3529,3532,3535,3537],{"class":50,"line":58},[48,3530,3531],{"class":297},"from",[48,3533,3534],{"class":1500}," fear_greed_index ",[48,3536,298],{"class":297},[48,3538,3539],{"class":1500}," cnn_fgi\n",[48,3541,3542,3544],{"class":50,"line":121},[48,3543,298],{"class":297},[48,3545,3546],{"class":1500}," json\n",[48,3548,3549,3551,3554,3556],{"class":50,"line":136},[48,3550,3531],{"class":297},[48,3552,3553],{"class":1500}," datetime ",[48,3555,298],{"class":297},[48,3557,3558],{"class":1500}," date\n",[48,3560,3561],{"class":50,"line":142},[48,3562,336],{"emptyLinePlaceholder":335},[48,3564,3565,3568,3570,3573,3575,3578],{"class":50,"line":164},[48,3566,3567],{"class":1500},"fgi ",[48,3569,1478],{"class":91},[48,3571,3572],{"class":1500}," cnn_fgi",[48,3574,427],{"class":91},[48,3576,3577],{"class":1500},"get",[48,3579,432],{"class":91},[48,3581,3582,3585,3587,3590,3592,3595,3597,3600],{"class":50,"line":185},[48,3583,3584],{"class":1500},"today ",[48,3586,1478],{"class":91},[48,3588,3589],{"class":1500}," date",[48,3591,427],{"class":91},[48,3593,3594],{"class":1500},"today",[48,3596,456],{"class":91},[48,3598,3599],{"class":1500},"isoformat",[48,3601,432],{"class":91},[48,3603,3604],{"class":50,"line":204},[48,3605,336],{"emptyLinePlaceholder":335},[48,3607,3608,3611,3613],{"class":50,"line":210},[48,3609,3610],{"class":1500},"entry ",[48,3612,1478],{"class":91},[48,3614,376],{"class":91},[48,3616,3617,3620,3622,3624,3626,3628],{"class":50,"line":216},[48,3618,3619],{"class":65},"    \"",[48,3621,785],{"class":69},[48,3623,105],{"class":65},[48,3625,108],{"class":91},[48,3627,445],{"class":1500},[48,3629,118],{"class":91},[48,3631,3632,3634,3636,3638,3640,3643,3645,3647],{"class":50,"line":435},[48,3633,3619],{"class":65},[48,3635,148],{"class":69},[48,3637,105],{"class":65},[48,3639,108],{"class":91},[48,3641,3642],{"class":1500}," fgi",[48,3644,427],{"class":91},[48,3646,148],{"class":1500},[48,3648,118],{"class":91},[48,3650,3651,3653,3655,3657,3659,3661,3663],{"class":50,"line":440},[48,3652,3619],{"class":65},[48,3654,1123],{"class":69},[48,3656,105],{"class":65},[48,3658,108],{"class":91},[48,3660,3642],{"class":1500},[48,3662,427],{"class":91},[48,3664,3665],{"class":1500},"description\n",[48,3667,3668],{"class":50,"line":486},[48,3669,219],{"class":91},[48,3671,3672],{"class":50,"line":498},[48,3673,336],{"emptyLinePlaceholder":335},[48,3675,3676],{"class":50,"line":510},[48,3677,3678],{"class":54},"# JSONファイルに追記...\n",[36,3680,3682],{"id":3681},"方法b-rapidapi-を使う-有料","方法B: RapidAPI を使う (有料)",[21,3684,3686],{"className":283,"code":3685,"language":285,"meta":30,"style":30},"// RapidAPIのキーが必要\nconst response = await fetch('https://cnn-fear-and-greed-index.p.rapidapi.com/index/fear-greed', {\n  headers: {\n    'X-RapidAPI-Key': process.env.RAPIDAPI_KEY,\n    'X-RapidAPI-Host': 'cnn-fear-and-greed-index.p.rapidapi.com'\n  }\n})\n",[28,3687,3688,3693,3718,3727,3754,3772,3776],{"__ignoreMap":30},[48,3689,3690],{"class":50,"line":51},[48,3691,3692],{"class":54},"// RapidAPIのキーが必要\n",[48,3694,3695,3697,3699,3701,3703,3705,3707,3709,3712,3714,3716],{"class":50,"line":58},[48,3696,342],{"class":341},[48,3698,389],{"class":301},[48,3700,348],{"class":91},[48,3702,394],{"class":297},[48,3704,397],{"class":61},[48,3706,400],{"class":91},[48,3708,403],{"class":65},[48,3710,3711],{"class":69},"https://cnn-fear-and-greed-index.p.rapidapi.com/index/fear-greed",[48,3713,403],{"class":65},[48,3715,677],{"class":91},[48,3717,376],{"class":91},[48,3719,3720,3723,3725],{"class":50,"line":121},[48,3721,3722],{"class":101},"  headers",[48,3724,108],{"class":91},[48,3726,376],{"class":91},[48,3728,3729,3732,3735,3737,3739,3742,3744,3747,3749,3752],{"class":50,"line":136},[48,3730,3731],{"class":65},"    '",[48,3733,3734],{"class":69},"X-RapidAPI-Key",[48,3736,403],{"class":65},[48,3738,108],{"class":91},[48,3740,3741],{"class":301}," process",[48,3743,427],{"class":91},[48,3745,3746],{"class":301},"env",[48,3748,427],{"class":91},[48,3750,3751],{"class":301},"RAPIDAPI_KEY",[48,3753,118],{"class":91},[48,3755,3756,3758,3761,3763,3765,3767,3770],{"class":50,"line":142},[48,3757,3731],{"class":65},[48,3759,3760],{"class":69},"X-RapidAPI-Host",[48,3762,403],{"class":65},[48,3764,108],{"class":91},[48,3766,308],{"class":65},[48,3768,3769],{"class":69},"cnn-fear-and-greed-index.p.rapidapi.com",[48,3771,314],{"class":65},[48,3773,3774],{"class":50,"line":164},[48,3775,568],{"class":91},[48,3777,3778],{"class":50,"line":185},[48,3779,2603],{"class":91},[266,3781],{},[10,3783,3785],{"id":3784},"cloudflare-pagesへのデプロイ時の考慮事項","Cloudflare Pagesへのデプロイ時の考慮事項",[14,3787,3788],{},"このプロジェクトはCloudflare Pagesにデプロイされるため、JSONデータファイルは自動的にCDNで配信されます。",[3790,3791,3792,3805],"ol",{},[231,3793,3794,108,3797],{},[77,3795,3796],{},"データ更新フロー",[228,3798,3799,3802],{},[231,3800,3801],{},"GitHub Actions → JSONファイル更新 → Git Push",[231,3803,3804],{},"Cloudflare Pages → 自動ビルド＆デプロイ → 新データ反映",[231,3806,3807,3810,3811],{},[77,3808,3809],{},"キャッシュ設定"," (必要に応じて):",[21,3812,3814],{"className":283,"code":3813,"language":285,"meta":30,"style":30},"// nuxt.config.ts\nrouteRules: {\n  '/data/**': {\n    headers: {\n      'Cache-Control': 'public, max-age=3600' // 1時間キャッシュ\n    }\n  }\n}\n",[28,3815,3816,3821,3830,3844,3853,3875,3879,3883],{"__ignoreMap":30},[48,3817,3818],{"class":50,"line":51},[48,3819,3820],{"class":54},"// nuxt.config.ts\n",[48,3822,3823,3826,3828],{"class":50,"line":58},[48,3824,3825],{"class":61},"routeRules",[48,3827,108],{"class":91},[48,3829,376],{"class":91},[48,3831,3832,3835,3838,3840,3842],{"class":50,"line":121},[48,3833,3834],{"class":65},"  '",[48,3836,3837],{"class":69},"/data/**",[48,3839,403],{"class":65},[48,3841,236],{"class":1500},[48,3843,92],{"class":91},[48,3845,3846,3849,3851],{"class":50,"line":136},[48,3847,3848],{"class":101},"    headers",[48,3850,108],{"class":91},[48,3852,376],{"class":91},[48,3854,3855,3858,3861,3863,3865,3867,3870,3872],{"class":50,"line":142},[48,3856,3857],{"class":65},"      '",[48,3859,3860],{"class":69},"Cache-Control",[48,3862,403],{"class":65},[48,3864,108],{"class":91},[48,3866,308],{"class":65},[48,3868,3869],{"class":69},"public, max-age=3600",[48,3871,403],{"class":65},[48,3873,3874],{"class":54}," // 1時間キャッシュ\n",[48,3876,3877],{"class":50,"line":164},[48,3878,207],{"class":91},[48,3880,3881],{"class":50,"line":185},[48,3882,568],{"class":91},[48,3884,3885],{"class":50,"line":204},[48,3886,219],{"class":91},[266,3888],{},[10,3890,3891],{"id":3891},"まとめ",[3893,3894,3895,3908],"table",{},[3896,3897,3898],"thead",{},[3899,3900,3901,3905],"tr",{},[3902,3903,3904],"th",{},"項目",[3902,3906,3907],{},"内容",[3909,3910,3911,3920,3928,3939,3947],"tbody",{},[3899,3912,3913,3917],{},[3914,3915,3916],"td",{},"データソース",[3914,3918,3919],{},"Alternative.me (仮想通貨) または CNN (株式市場)",[3899,3921,3922,3925],{},[3914,3923,3924],{},"実行頻度",[3914,3926,3927],{},"毎日 (GitHub Actions cron)",[3899,3929,3930,3933],{},[3914,3931,3932],{},"データ形式",[3914,3934,3935,3936,815],{},"JSON (",[28,3937,3938],{},"public/data/fear-greed-history.json",[3899,3940,3941,3944],{},[3914,3942,3943],{},"可視化",[3914,3945,3946],{},"Chart.js (Vue コンポーネント)",[3899,3948,3949,3952],{},[3914,3950,3951],{},"デプロイ",[3914,3953,3954],{},"Cloudflare Pages (自動)",[10,3956,3957],{"id":3957},"参考リンク",[228,3959,3960,3967,3973,3979],{},[231,3961,3962],{},[238,3963,3966],{"href":3964,"rel":3965},"https://alternative.me/crypto/fear-and-greed-index/",[242],"Alternative.me Crypto Fear & Greed Index",[231,3968,3969],{},[238,3970,263],{"href":3971,"rel":3972},"https://www.cnn.com/markets/fear-and-greed",[242],[231,3974,3975],{},[238,3976,3978],{"href":240,"rel":3977},[242],"GitHub - fear-greed-index (Python wrapper)",[231,3980,3981],{},[238,3982,3985],{"href":3983,"rel":3984},"https://www.chartjs.org/docs/",[242],"Chart.js Documentation",[3049,3987,3988],{},"html pre.shiki code .sxvE3, html code.shiki .sxvE3{--shiki-default:#A0ADA0;--shiki-dark:#A0ADA0}html pre.shiki code .senZ8, html code.shiki .senZ8{--shiki-default:#59873A;--shiki-dark:#59873A}html pre.shiki code .sMJiu, html code.shiki .sMJiu{--shiki-default:#B5695977;--shiki-dark:#B5695977}html pre.shiki code .sdGka, html code.shiki .sdGka{--shiki-default:#B56959;--shiki-dark:#B56959}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 .shFtX, html code.shiki .shFtX{--shiki-default:#999999;--shiki-dark:#999999}html pre.shiki code .sqvqQ, html code.shiki .sqvqQ{--shiki-default:#99841877;--shiki-dark:#99841877}html pre.shiki code .sz8Xr, html code.shiki .sz8Xr{--shiki-default:#998418;--shiki-dark:#998418}html pre.shiki code .sHkkW, html code.shiki .sHkkW{--shiki-default:#1E754F;--shiki-dark:#1E754F}html pre.shiki code .s4oTP, html code.shiki .s4oTP{--shiki-default:#B07D48;--shiki-dark:#B07D48}html pre.shiki code .stQ0i, html code.shiki .stQ0i{--shiki-default:#AB5959;--shiki-dark:#AB5959}html pre.shiki code .sM54T, html code.shiki .sM54T{--shiki-default:#2F798A;--shiki-dark:#2F798A}html pre.shiki code .sG7-3, html code.shiki .sG7-3{--shiki-default:#393A34;--shiki-dark:#393A34}html pre.shiki code .snbK4, html code.shiki .snbK4{--shiki-default:#A65E2B;--shiki-dark:#A65E2B}",{"title":30,"searchDepth":58,"depth":58,"links":3990},[3991,3992,3993,3997,4004,4008,4009,4010],{"id":12,"depth":58,"text":12},{"id":19,"depth":58,"text":19},{"id":33,"depth":58,"text":34,"children":3994},[3995,3996],{"id":38,"depth":121,"text":39},{"id":222,"depth":121,"text":223},{"id":270,"depth":58,"text":270,"children":3998},[3999,4000,4001,4002,4003],{"id":273,"depth":121,"text":274},{"id":1167,"depth":121,"text":1168},{"id":1440,"depth":121,"text":1441},{"id":3265,"depth":121,"text":3266},{"id":3293,"depth":121,"text":3294},{"id":3367,"depth":58,"text":3368,"children":4005},[4006,4007],{"id":3374,"depth":121,"text":3375},{"id":3681,"depth":121,"text":3682},{"id":3784,"depth":58,"text":3785},{"id":3891,"depth":58,"text":3891},{"id":3957,"depth":58,"text":3957},null,"GitHub Actionsで毎日Fear and Greed Indexを取得し、Nuxtアプリでチャート表示する方法","md",{},"/fear-greed-index-automation",false,"2025-12-05T00:00:00.000Z",{"title":5,"description":4012},"2025-12/2025-12-05/fear-greed-index-automation",[4021,4022,113,4023,4024],"GitHub Actions","自動化","Chart.js","投資","PWQ4_0zFwiWSei-JzEFMuf_2XP-CpvOdT86EcW0Jw3E",[],[4028,4032,4036,4040,4044],{"title":4029,"path":4030,"publishedAt":4031},"GitHub ActionsでClaudeを統合する方法","/github-actions-claude-integration","2025-11-25T00:00:00.000Z",{"title":4033,"path":4034,"publishedAt":4035},"個別株を現物で中長期に持つ理由｜「集中投資はレバレッジと同じ」が成り立たない一点について","/why-individual-stocks-cash-longterm","2026-07-31T00:00:00.000Z",{"title":4037,"path":4038,"publishedAt":4039},"Notionアーカイブのドキュメント移行 — スプレッドシート連動「リンクされた表」の貼り付けを自動化する","/notion-to-google-docs-linked-tables","2026-07-28T00:00:00.000Z",{"title":4041,"path":4042,"publishedAt":4043},"Kindle電子書籍をOCRで蔵書DBに取り込む新コマンドを作った","/kindle-ocr-pipeline-async-command","2026-07-23T00:00:00.000Z",{"title":4045,"path":4046,"publishedAt":4047},"メモリ半導体の月次先行指標を拡充 - DRAM/NAND価格・シンガポールNODX・台湾外銷訂単を毎朝チェーンへ","/memory-leading-indicators-expansion","2026-07-19T00:00:00.000Z","https://log.eurekapu.com/og/blog/fear-greed-index-automation.png?v=2025-12-05T00%3A00%3A00.000Z&title=Fear%20and%20Greed%20Index%E8%87%AA%E5%8B%95%E5%8F%96%E5%BE%97%EF%BC%86%E3%83%81%E3%83%A3%E3%83%BC%E3%83%88%E8%A1%A8%E7%A4%BA%E3%81%AE%E5%AE%9F%E8%A3%85%E3%82%AC%E3%82%A4%E3%83%89&author=Kei%20Komatsu&sig=52200f9873a6d84f",1785654964371]