[{"data":1,"prerenderedAt":2828},["ShallowReactive",2],{"blog-little-hotelier-mcp-claude-code-cursor-vscode-th":3,"blog-langs-little-hotelier-mcp-claude-code-cursor-vscode":2399,"blog-list-th":2408},{"id":4,"title":5,"body":6,"description":2356,"extension":2357,"meta":2358,"navigation":1036,"path":2395,"seo":2396,"stem":2397,"__hash__":2398},"content/blog/th/little-hotelier-mcp-claude-code-cursor-vscode.md","วิธีใช้ Claude Code กับข้อมูล Little Hotelier (MCP)",{"type":7,"value":8,"toc":2338},"minimark",[9,21,24,29,44,86,92,95,105,139,156,159,163,166,171,179,215,233,267,273,368,383,387,403,461,476,480,503,647,663,671,675,693,751,754,779,838,848,851,966,969,982,985,988,999,1002,1547,1558,1562,1569,2056,2074,2077,2082,2085,2089,2158,2164,2168,2171,2219,2223,2299,2302,2305,2334],[10,11,12,13,17,18],"p",{},"เพิ่ม MCP server ระยะไกลหนึ่งตัว คือ ",[14,15,16],"code",{},"https://dashboard.hotelier.tools/api/mcp"," พร้อม API key ของ Hotelier Tools แล้ว Claude Code, Cursor, VS Code (โหมด agent ของ Copilot), Windsurf หรือ Gemini CLI จะอ่านข้อมูลการจอง ราคา และใบแจ้งหนี้ใน Little Hotelier ของคุณได้ระหว่างเขียนโค้ดให้คุณ ใน Claude Code ใช้แค่คำสั่งเดียว: ",[14,19,20],{},"claude mcp add --transport http hotelier-tools https://dashboard.hotelier.tools/api/mcp --header \"Authorization: Bearer htk_YOUR_API_KEY\"",[10,22,23],{},"ด้านล่างคือการตั้งค่าแบบตรงตัวของแต่ละเครื่องมือ (ตรวจเทียบกับเอกสารของผู้ให้บริการแต่ละรายเมื่อเดือนตุลาคม 2026) ไอเดียสามอย่างที่น่าสร้าง และกรณีที่ควรเรียก REST API โดยตรงแทน",[25,26,28],"h2",{"id":27},"ก่อนเริ่ม-สร้าง-api-key","ก่อนเริ่ม: สร้าง API key",[10,30,31,32,39,40],{},"Little Hotelier ไม่มี MCP server และเอกสาร API สำหรับพันธมิตรของ SiteMinder เองก็ระบุว่าข้อมูลห้องว่างและราคา",[33,34,38],"a",{"href":35,"rel":36},"https://developer.siteminder.com/smx-api/reference/availability-and-rates/publishers",[37],"nofollow","ดึงจาก Little Hotelier ไม่ได้"," Hotelier Tools มีทั้ง MCP server และ REST API โดยเชื่อมต่อผ่านบัญชี Little Hotelier ของที่พักคุณเอง Hotelier Tools ไม่ได้มีส่วนเกี่ยวข้องกับ SiteMinder หรือ Little Hotelier และไม่ได้รับการรับรองจากทั้งสองบริษัท อ่านพื้นฐานเพิ่มเติม: ",[33,41,43],{"href":42},"/blog/little-hotelier-api","Little Hotelier มี API ไหม?",[45,46,47,60,70,80],"ol",{},[48,49,50,51,55,56,59],"li",{},"ใน Hotelier Tools เชื่อมต่อ Little Hotelier ที่หน้า ",[52,53,54],"strong",{},"Credentials"," (",[14,57,58],{},"/credentials",") หากยังไม่ได้ทำ",[48,61,62,63,55,66,69],{},"เปิด ",[52,64,65],{},"Developer → API & MCP → API Keys",[14,67,68],{},"/developer/api-keys",")",[48,71,72,73,76,77],{},"พิมพ์ชื่อที่บอกว่าจะใช้คีย์นี้ที่ไหน เช่น ",[14,74,75],{},"cursor-laptop"," แล้วกด ",[52,78,79],{},"Generate key",[48,81,82,83],{},"คัดลอกคีย์ทันที เพราะระบบเตือนว่า \"Copy this key now — it will not be shown again.\" (คีย์จะไม่แสดงอีก) คีย์จะขึ้นต้นด้วย ",[14,84,85],{},"htk_",[87,88],"screenshot",{"alt":89,"caption":90,"path":68,"src":91},"หน้า API keys ใน Hotelier Tools: ฟอร์ม Generate a new key พร้อมช่องชื่อและปุ่ม Generate key คีย์ที่ใช้งานอยู่หนึ่งตัว (MCP internal (chat) แบบปิดบัง) พร้อมปุ่ม Revoke และหมายเหตุ Good security practice","ใช้หนึ่งคีย์ต่อหนึ่งเครื่องมือ จะได้เพิกถอนเฉพาะคีย์ที่เลิกใช้ได้ง่าย","/images/blog/demo/en/api-keys.webp",[10,93,94],{},"คีย์มีสิทธิ์เท่ากับบัญชี Hotelier Tools ของคุณ และใช้ได้กับที่พักที่คุณสร้างคีย์ไว้เท่านั้น สร้างคีย์ได้สูงสุด 10 ตัว",[10,96,97,100,101,104],{},[52,98,99],{},"อย่าใส่คีย์ไว้ในไฟล์"," ให้เก็บไว้ในตัวแปรสภาพแวดล้อม (environment variable) ชื่อ ",[14,102,103],{},"HT_API_KEY"," แล้วอ้างถึงตัวแปรนี้ในไฟล์ตั้งค่า",[106,107,113],"pre",{"className":108,"code":109,"filename":110,"language":111,"meta":112,"style":112},"language-bash shiki shiki-themes github-light github-dark","echo 'export HT_API_KEY=\"htk_YOUR_API_KEY\"' >> ~/.zshrc   # หรือ ~/.bashrc\n","macOS / Linux","bash","",[14,114,115],{"__ignoreMap":112},[116,117,120,124,128,132,135],"span",{"class":118,"line":119},"line",1,[116,121,123],{"class":122},"sj4cs","echo",[116,125,127],{"class":126},"sZZnC"," 'export HT_API_KEY=\"htk_YOUR_API_KEY\"'",[116,129,131],{"class":130},"szBVR"," >>",[116,133,134],{"class":126}," ~/.zshrc",[116,136,138],{"class":137},"sJ8bj","   # หรือ ~/.bashrc\n",[106,140,145],{"className":141,"code":142,"filename":143,"language":144,"meta":112,"style":112},"language-powershell shiki shiki-themes github-light github-dark","setx HT_API_KEY \"htk_YOUR_API_KEY\"\n","Windows PowerShell","powershell",[14,146,147],{"__ignoreMap":112},[116,148,149,153],{"class":118,"line":119},[116,150,152],{"class":151},"sVt8B","setx HT_API_KEY ",[116,154,155],{"class":126},"\"htk_YOUR_API_KEY\"\n",[10,157,158],{},"เปิดเทอร์มินัลใหม่ (และรีสตาร์ตโปรแกรมแก้ไขโค้ด) เพื่อให้โปรแกรมรู้จักตัวแปรนี้",[25,160,162],{"id":161},"วิธีเพิ่ม-mcp-server-ใน-claude-code-cursor-vs-code-windsurf-และ-gemini-cli","วิธีเพิ่ม MCP server ใน Claude Code, Cursor, VS Code, Windsurf และ Gemini CLI",[10,164,165],{},"ทุกเครื่องมือเก็บข้อมูลสามอย่างเหมือนกัน (ที่อยู่ transport และคีย์) แต่รูปแบบไฟล์ต่างกันเล็กน้อย เลือกดูเครื่องมือที่คุณใช้",[167,168,170],"h3",{"id":169},"claude-code","Claude Code",[10,172,173,174,69],{},"Claude Code มีคำสั่งในตัวสำหรับเซิร์ฟเวอร์ระยะไกล (",[33,175,178],{"href":176,"rel":177},"https://code.claude.com/docs/en/mcp",[37],"เอกสารของ Anthropic",[106,180,183],{"className":108,"code":181,"filename":182,"language":111,"meta":112,"style":112},"claude mcp add --transport http hotelier-tools https://dashboard.hotelier.tools/api/mcp --header \"Authorization: Bearer htk_YOUR_API_KEY\"\n","Terminal",[14,184,185],{"__ignoreMap":112},[116,186,187,191,194,197,200,203,206,209,212],{"class":118,"line":119},[116,188,190],{"class":189},"sScJk","claude",[116,192,193],{"class":126}," mcp",[116,195,196],{"class":126}," add",[116,198,199],{"class":122}," --transport",[116,201,202],{"class":126}," http",[116,204,205],{"class":126}," hotelier-tools",[116,207,208],{"class":126}," https://dashboard.hotelier.tools/api/mcp",[116,210,211],{"class":122}," --header",[116,213,214],{"class":126}," \"Authorization: Bearer htk_YOUR_API_KEY\"\n",[10,216,217,218,220,221,224,225,228,229,232],{},"จากนั้นเปิด ",[14,219,190],{}," แล้วพิมพ์ ",[14,222,223],{},"/mcp"," ควรเห็น Hotelier Tools ขึ้นสถานะ ",[52,226,227],{},"connected"," ถ้าขึ้น ",[14,230,231],{},"failed"," พร้อม 401 แปลว่าคีย์ผิด",[234,235,236,254],"ul",{},[48,237,238,241,242,245,246,249,250,253],{},[52,239,240],{},"ขอบเขต (scope)"," โดยค่าเริ่มต้น เซิร์ฟเวอร์จะถูกบันทึกไว้ใช้เฉพาะโฟลเดอร์ปัจจุบัน เพิ่ม ",[14,243,244],{},"--scope user"," หลังชื่อเพื่อใช้ในทุกโปรเจกต์ หรือ ",[14,247,248],{},"--scope project"," เพื่อเขียนไฟล์ ",[14,251,252],{},".mcp.json"," ที่แชร์ร่วมกัน",[48,255,256,259,260,263,264,266],{},[52,257,258],{},"เข้าสู่ระบบแทนคีย์"," รันคำสั่งโดยไม่ใส่ ",[14,261,262],{},"--header"," แล้วใน Claude Code พิมพ์ ",[14,265,223],{}," และยืนยันตัวตนในเบราว์เซอร์ ถ้าคุณเชื่อมต่อ Hotelier Tools เป็น connector บน claude.ai ไว้แล้ว Claude Code จะดึงมาใช้ได้เมื่อเข้าสู่ระบบด้วยบัญชี Claude เดียวกัน",[10,268,269,270,272],{},"สำหรับโปรเจกต์ที่แชร์กับเพื่อนร่วมงานหรือเก็บใน Git ให้ใส่เซิร์ฟเวอร์ใน ",[14,271,252],{}," และให้แต่ละคนใส่คีย์ของตัวเอง",[106,274,278],{"className":275,"code":276,"filename":252,"language":277,"meta":112,"style":112},"language-json shiki shiki-themes github-light github-dark","{\n  \"mcpServers\": {\n    \"hotelier-tools\": {\n      \"type\": \"http\",\n      \"url\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${HT_API_KEY}\" }\n    }\n  }\n}\n","json",[14,279,280,285,294,302,317,330,350,356,362],{"__ignoreMap":112},[116,281,282],{"class":118,"line":119},[116,283,284],{"class":151},"{\n",[116,286,288,291],{"class":118,"line":287},2,[116,289,290],{"class":122},"  \"mcpServers\"",[116,292,293],{"class":151},": {\n",[116,295,297,300],{"class":118,"line":296},3,[116,298,299],{"class":122},"    \"hotelier-tools\"",[116,301,293],{"class":151},[116,303,305,308,311,314],{"class":118,"line":304},4,[116,306,307],{"class":122},"      \"type\"",[116,309,310],{"class":151},": ",[116,312,313],{"class":126},"\"http\"",[116,315,316],{"class":151},",\n",[116,318,320,323,325,328],{"class":118,"line":319},5,[116,321,322],{"class":122},"      \"url\"",[116,324,310],{"class":151},[116,326,327],{"class":126},"\"https://dashboard.hotelier.tools/api/mcp\"",[116,329,316],{"class":151},[116,331,333,336,339,342,344,347],{"class":118,"line":332},6,[116,334,335],{"class":122},"      \"headers\"",[116,337,338],{"class":151},": { ",[116,340,341],{"class":122},"\"Authorization\"",[116,343,310],{"class":151},[116,345,346],{"class":126},"\"Bearer ${HT_API_KEY}\"",[116,348,349],{"class":151}," }\n",[116,351,353],{"class":118,"line":352},7,[116,354,355],{"class":151},"    }\n",[116,357,359],{"class":118,"line":358},8,[116,360,361],{"class":151},"  }\n",[116,363,365],{"class":118,"line":364},9,[116,366,367],{"class":151},"}\n",[10,369,370,371,374,375,378,379,382],{},"ต้องมีบรรทัด ",[14,372,373],{},"\"type\": \"http\""," เพราะ Claude Code ถือว่ารายการที่มี ",[14,376,377],{},"url"," แต่ไม่มี ",[14,380,381],{},"type"," เป็นการตั้งค่าที่ผิด",[167,384,386],{"id":385},"cursor","Cursor",[10,388,389,390,393,394,397,398,69],{},"Cursor อ่าน ",[14,391,392],{},"~/.cursor/mcp.json"," สำหรับทุกโปรเจกต์ หรือ ",[14,395,396],{},".cursor/mcp.json"," ภายในหนึ่งโปรเจกต์ (",[33,399,402],{"href":400,"rel":401},"https://cursor.com/docs/context/mcp",[37],"เอกสาร Cursor",[106,404,406],{"className":275,"code":405,"filename":392,"language":277,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"hotelier-tools\": {\n      \"url\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${env:HT_API_KEY}\" }\n    }\n  }\n}\n",[14,407,408,412,418,424,434,449,453,457],{"__ignoreMap":112},[116,409,410],{"class":118,"line":119},[116,411,284],{"class":151},[116,413,414,416],{"class":118,"line":287},[116,415,290],{"class":122},[116,417,293],{"class":151},[116,419,420,422],{"class":118,"line":296},[116,421,299],{"class":122},[116,423,293],{"class":151},[116,425,426,428,430,432],{"class":118,"line":304},[116,427,322],{"class":122},[116,429,310],{"class":151},[116,431,327],{"class":126},[116,433,316],{"class":151},[116,435,436,438,440,442,444,447],{"class":118,"line":319},[116,437,335],{"class":122},[116,439,338],{"class":151},[116,441,341],{"class":122},[116,443,310],{"class":151},[116,445,446],{"class":126},"\"Bearer ${env:HT_API_KEY}\"",[116,448,349],{"class":151},[116,450,451],{"class":118,"line":332},[116,452,355],{"class":151},[116,454,455],{"class":118,"line":352},[116,456,361],{"class":151},[116,458,459],{"class":118,"line":358},[116,460,367],{"class":151},[10,462,463,464,467,468,471,472,475],{},"บันทึกไฟล์ แล้วตรวจว่าเปิดใช้งานเซิร์ฟเวอร์ในการตั้งค่า MCP ของ Cursor แล้ว (เวอร์ชันล่าสุดแสดงรายการเซิร์ฟเวอร์ใต้ ",[52,465,466],{},"Customize"," ในแถบด้านข้าง) จากนั้นถามในแชต ",[52,469,470],{},"Agent"," โดยค่าเริ่มต้น Cursor จะขออนุมัติก่อนรันเครื่องมือ ควรคงไว้แบบนั้นสำหรับเซิร์ฟเวอร์นี้ ถ้าไม่ใส่ ",[14,473,474],{},"headers"," Cursor จะเสนอให้เข้าสู่ระบบผ่านเบราว์เซอร์แทน",[167,477,479],{"id":478},"vs-code-กับ-github-copilot","VS Code กับ GitHub Copilot",[10,481,482,483,486,487,490,491,55,493,498,499,502],{},"VS Code ใช้ ",[14,484,485],{},".vscode/mcp.json"," โดยมี ",[14,488,489],{},"servers"," เป็นคีย์บนสุดและต้องมี ",[14,492,373],{},[33,494,497],{"href":495,"rel":496},"https://code.visualstudio.com/docs/agents/reference/mcp-configuration",[37],"เอกสาร VS Code",") ฟีเจอร์ ",[14,500,501],{},"inputs"," ของ VS Code จะถามคีย์ครั้งเดียวแล้วเก็บไว้ในพื้นที่จัดเก็บที่ปลอดภัยของ VS Code คีย์จึงไม่ปรากฏในไฟล์เลย",[106,504,506],{"className":275,"code":505,"filename":485,"language":277,"meta":112,"style":112},"{\n  \"inputs\": [\n    {\n      \"type\": \"promptString\",\n      \"id\": \"ht-api-key\",\n      \"description\": \"Hotelier Tools API key (htk_…)\",\n      \"password\": true\n    }\n  ],\n  \"servers\": {\n    \"hotelier-tools\": {\n      \"type\": \"http\",\n      \"url\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${input:ht-api-key}\" }\n    }\n  }\n}\n",[14,507,508,512,520,525,536,548,560,570,574,579,587,594,605,616,632,637,642],{"__ignoreMap":112},[116,509,510],{"class":118,"line":119},[116,511,284],{"class":151},[116,513,514,517],{"class":118,"line":287},[116,515,516],{"class":122},"  \"inputs\"",[116,518,519],{"class":151},": [\n",[116,521,522],{"class":118,"line":296},[116,523,524],{"class":151},"    {\n",[116,526,527,529,531,534],{"class":118,"line":304},[116,528,307],{"class":122},[116,530,310],{"class":151},[116,532,533],{"class":126},"\"promptString\"",[116,535,316],{"class":151},[116,537,538,541,543,546],{"class":118,"line":319},[116,539,540],{"class":122},"      \"id\"",[116,542,310],{"class":151},[116,544,545],{"class":126},"\"ht-api-key\"",[116,547,316],{"class":151},[116,549,550,553,555,558],{"class":118,"line":332},[116,551,552],{"class":122},"      \"description\"",[116,554,310],{"class":151},[116,556,557],{"class":126},"\"Hotelier Tools API key (htk_…)\"",[116,559,316],{"class":151},[116,561,562,565,567],{"class":118,"line":352},[116,563,564],{"class":122},"      \"password\"",[116,566,310],{"class":151},[116,568,569],{"class":122},"true\n",[116,571,572],{"class":118,"line":358},[116,573,355],{"class":151},[116,575,576],{"class":118,"line":364},[116,577,578],{"class":151},"  ],\n",[116,580,582,585],{"class":118,"line":581},10,[116,583,584],{"class":122},"  \"servers\"",[116,586,293],{"class":151},[116,588,590,592],{"class":118,"line":589},11,[116,591,299],{"class":122},[116,593,293],{"class":151},[116,595,597,599,601,603],{"class":118,"line":596},12,[116,598,307],{"class":122},[116,600,310],{"class":151},[116,602,313],{"class":126},[116,604,316],{"class":151},[116,606,608,610,612,614],{"class":118,"line":607},13,[116,609,322],{"class":122},[116,611,310],{"class":151},[116,613,327],{"class":126},[116,615,316],{"class":151},[116,617,619,621,623,625,627,630],{"class":118,"line":618},14,[116,620,335],{"class":122},[116,622,338],{"class":151},[116,624,341],{"class":122},[116,626,310],{"class":151},[116,628,629],{"class":126},"\"Bearer ${input:ht-api-key}\"",[116,631,349],{"class":151},[116,633,635],{"class":118,"line":634},15,[116,636,355],{"class":151},[116,638,640],{"class":118,"line":639},16,[116,641,361],{"class":151},[116,643,645],{"class":118,"line":644},17,[116,646,367],{"class":151},[10,648,649,650,652,653,656,657,660,661],{},"เปิด Copilot Chat สลับเป็นโหมด ",[52,651,470],{}," และใช้ ",[52,654,655],{},"Configure Tools"," เพื่อดูเครื่องมือของ Hotelier Tools VS Code อาจขอให้คุณยืนยันว่าเชื่อถือเซิร์ฟเวอร์นี้ตอนเริ่มทำงานครั้งแรก ถ้าต้องการใช้กับทุก workspace ให้รัน ",[52,658,659],{},"MCP: Open User Configuration"," แล้ววางบล็อกเดียวกันที่นั่น VS Code ยังรองรับการเข้าสู่ระบบผ่านเบราว์เซอร์ถ้าไม่ใส่ ",[14,662,474],{},[87,664],{"alt":665,"caption":666,"path":667,"src":668,"height":669,"width":670},"แท็บ VS Code / GitHub Copilot ของหน้าตั้งค่า MCP ของ Hotelier Tools: ตัวอย่าง .vscode/mcp.json ที่มี servers, hotelier-tools, type http, URL /api/mcp ของเดโม และ header Authorization พร้อมตัวแทนคีย์ htk_YOUR_API_KEY แล้วต่อด้วย Turn on Agent mode in Copilot Chat","หน้า MCP Setup มีตัวอย่างพร้อมใช้สำหรับแต่ละไคลเอนต์ เดโมจะแสดงที่อยู่ของเดโมเอง ส่วนของคุณคือ dashboard.hotelier.tools","/developer/mcp-setup","/images/blog/demo/en/mcp-config-vscode-copilot.webp",446,1036,[167,672,674],{"id":673},"windsurf-และ-gemini-cli","Windsurf และ Gemini CLI",[10,676,677,680,681,652,684,687,688,69],{},[52,678,679],{},"Windsurf"," (ปัจจุบันเอกสารย้ายไปอยู่กับ Devin) อ่าน ",[14,682,683],{},"~/.codeium/windsurf/mcp_config.json",[14,685,686],{},"serverUrl"," สำหรับเซิร์ฟเวอร์ระยะไกล (",[33,689,692],{"href":690,"rel":691},"https://docs.devin.ai/windsurf/plugins/cascade/mcp",[37],"เอกสาร",[106,694,696],{"className":275,"code":695,"filename":683,"language":277,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"hotelier-tools\": {\n      \"serverUrl\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer ${env:HT_API_KEY}\" }\n    }\n  }\n}\n",[14,697,698,702,708,714,725,739,743,747],{"__ignoreMap":112},[116,699,700],{"class":118,"line":119},[116,701,284],{"class":151},[116,703,704,706],{"class":118,"line":287},[116,705,290],{"class":122},[116,707,293],{"class":151},[116,709,710,712],{"class":118,"line":296},[116,711,299],{"class":122},[116,713,293],{"class":151},[116,715,716,719,721,723],{"class":118,"line":304},[116,717,718],{"class":122},"      \"serverUrl\"",[116,720,310],{"class":151},[116,722,327],{"class":126},[116,724,316],{"class":151},[116,726,727,729,731,733,735,737],{"class":118,"line":319},[116,728,335],{"class":122},[116,730,338],{"class":151},[116,732,341],{"class":122},[116,734,310],{"class":151},[116,736,446],{"class":126},[116,738,349],{"class":151},[116,740,741],{"class":118,"line":332},[116,742,355],{"class":151},[116,744,745],{"class":118,"line":352},[116,746,361],{"class":151},[116,748,749],{"class":118,"line":358},[116,750,367],{"class":151},[10,752,753],{},"Windsurf จำกัด Cascade ไว้ที่เครื่องมือรวม 100 รายการ และ Hotelier Tools มีเครื่องมือมากกว่า 100 รายการ คุณจึงอาจต้องปิดเครื่องมือที่ไม่ได้ใช้ในแผง MCP",[10,755,756,759,760,763,764,767,768,771,772,774,775,69],{},[52,757,758],{},"Gemini CLI"," อ่าน ",[14,761,762],{},"~/.gemini/settings.json"," (หรือ ",[14,765,766],{},".gemini/settings.json"," ในโปรเจกต์) และใช้ ",[14,769,770],{},"httpUrl"," สำหรับเซิร์ฟเวอร์ชนิดนี้ ส่วน ",[14,773,377],{}," จะหมายถึง transport SSE รุ่นเก่า ซึ่ง Hotelier Tools ไม่รองรับ (",[33,776,692],{"href":777,"rel":778},"https://geminicli.com/docs/tools/mcp-server/",[37],[106,780,782],{"className":275,"code":781,"filename":762,"language":277,"meta":112,"style":112},"{\n  \"mcpServers\": {\n    \"hotelier-tools\": {\n      \"httpUrl\": \"https://dashboard.hotelier.tools/api/mcp\",\n      \"headers\": { \"Authorization\": \"Bearer $HT_API_KEY\" }\n    }\n  }\n}\n",[14,783,784,788,794,800,811,826,830,834],{"__ignoreMap":112},[116,785,786],{"class":118,"line":119},[116,787,284],{"class":151},[116,789,790,792],{"class":118,"line":287},[116,791,290],{"class":122},[116,793,293],{"class":151},[116,795,796,798],{"class":118,"line":296},[116,797,299],{"class":122},[116,799,293],{"class":151},[116,801,802,805,807,809],{"class":118,"line":304},[116,803,804],{"class":122},"      \"httpUrl\"",[116,806,310],{"class":151},[116,808,327],{"class":126},[116,810,316],{"class":151},[116,812,813,815,817,819,821,824],{"class":118,"line":319},[116,814,335],{"class":122},[116,816,338],{"class":151},[116,818,341],{"class":122},[116,820,310],{"class":151},[116,822,823],{"class":126},"\"Bearer $HT_API_KEY\"",[116,825,349],{"class":151},[116,827,828],{"class":118,"line":332},[116,829,355],{"class":151},[116,831,832],{"class":118,"line":352},[116,833,361],{"class":151},[116,835,836],{"class":118,"line":358},[116,837,367],{"class":151},[10,839,840,841,844,845,847],{},"หรือจากเทอร์มินัล: ",[14,842,843],{},"gemini mcp add --transport http --header \"Authorization: Bearer htk_YOUR_API_KEY\" hotelier-tools https://dashboard.hotelier.tools/api/mcp"," พิมพ์ ",[14,846,223],{}," ภายใน Gemini CLI เพื่อตรวจสอบ",[10,849,850],{},"การตั้งค่าสองแบบนี้ทำตามเอกสารของแต่ละผู้ให้บริการ เรายังไม่ได้ทดสอบในทุกเวอร์ชัน",[852,853,854,873],"table",{},[855,856,857],"thead",{},[858,859,860,864,867,870],"tr",{},[861,862,863],"th",{},"เครื่องมือ",[861,865,866],{},"ไฟล์ตั้งค่า",[861,868,869],{},"คีย์บนสุด",[861,871,872],{},"คีย์ URL",[874,875,876,897,913,932,949],"tbody",{},[858,877,878,881,885,890],{},[879,880,170],"td",{},[879,882,883],{},[14,884,252],{},[879,886,887],{},[14,888,889],{},"mcpServers",[879,891,892,894,895],{},[14,893,377],{}," + ",[14,896,373],{},[858,898,899,901,905,909],{},[879,900,386],{},[879,902,903],{},[14,904,396],{},[879,906,907],{},[14,908,889],{},[879,910,911],{},[14,912,377],{},[858,914,915,918,922,926],{},[879,916,917],{},"VS Code",[879,919,920],{},[14,921,485],{},[879,923,924],{},[14,925,489],{},[879,927,928,894,930],{},[14,929,377],{},[14,931,373],{},[858,933,934,936,941,945],{},[879,935,679],{},[879,937,938],{},[14,939,940],{},"mcp_config.json",[879,942,943],{},[14,944,889],{},[879,946,947],{},[14,948,686],{},[858,950,951,953,958,962],{},[879,952,758],{},[879,954,955],{},[14,956,957],{},"settings.json",[879,959,960],{},[14,961,889],{},[879,963,964],{},[14,965,770],{},[25,967,968],{"id":968},"สามอย่างที่น่าลองสร้าง",[10,970,971,972,976,977,981],{},"เคล็ดลับคือให้เอเจนต์ใช้ MCP ",[973,974,975],"em",{},"ดู"," ข้อมูลจริงของคุณ แล้วเขียนโค้ดที่เรียก ",[33,978,980],{"href":979},"/tools/bot/api-mcp","REST API"," เพื่อให้รันได้เองทุกเดือนโดยไม่ต้องใช้ AI",[167,983,984],{"id":984},"รายงานอัตราการเข้าพักรายเดือน",[10,986,987],{},"ถาม Claude Code (หรือเอเจนต์ของ Cursor) ในโฟลเดอร์ว่าง",[989,990,991],"prompt",{"label":170},[10,992,993,994,998],{},"ใช้ MCP server hotelier-tools ดูประเภทห้องของฉันและรายการจองของเดือนที่แล้ว จากนั้นเขียนสคริปต์ Node.js ที่เรียก REST API ของ Hotelier Tools (spec: ",[33,995,996],{"href":996,"rel":997},"https://dashboard.hotelier.tools/api/v1/openapi.json",[37],") โดยใช้คีย์ใน HT_API_KEY และสำหรับเดือนที่ฉันระบุ ให้พิมพ์อัตราการเข้าพักและราคาห้องเฉลี่ยต่อวัน (ADR) แยกตามประเภทห้อง แล้วบันทึกเป็นไฟล์ CSV",[10,1000,1001],{},"สคริปต์ที่ดีจะเริ่มประมาณนี้ คือดึงประเภทห้องและทุกการจองที่คาบเกี่ยวกับเดือนนั้น แล้วบันทึกข้อมูลดิบไว้ เพื่อให้คุณตรวจฟิลด์ก่อนเริ่มคำนวณ",[106,1003,1008],{"className":1004,"code":1005,"filename":1006,"language":1007,"meta":112,"style":112},"language-js shiki shiki-themes github-light github-dark","// วิธีใช้: node fetch-month.mjs 2026-09   (ต้องตั้ง HT_API_KEY ไว้ในสภาพแวดล้อม)\nimport { writeFile } from \"node:fs/promises\";\n\nconst API = \"https://dashboard.hotelier.tools/api/v1\";\nconst headers = {\n  Authorization: `Bearer ${process.env.HT_API_KEY}`,\n  \"Content-Type\": \"application/json\",\n};\n\nasync function call(path, options = {}) {\n  const res = await fetch(`${API}${path}`, { ...options, headers });\n  if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);\n  return res.json();\n}\n\nconst month = process.argv[2];\nconst [year, mon] = month.split(\"-\").map(Number);\nconst startDate = `${month}-01`;\nconst endDate = new Date(Date.UTC(year, mon, 0)).toISOString().slice(0, 10);\n\nconst roomTypes = await call(\"/room-types\");\nconst reservations = await call(\"/methods/getReservationsByDateRange\", {\n  method: \"POST\",\n  body: JSON.stringify({ params: { startDate, endDate } }),\n});\n\nawait writeFile(\n  `raw-${month}.json`,\n  JSON.stringify({ roomTypes: roomTypes.data, reservations: reservations.result }, null, 2)\n);\nconsole.log(`Saved raw-${month}.json`);\n","fetch-month.mjs","js",[14,1009,1010,1015,1032,1038,1054,1066,1092,1104,1109,1113,1142,1182,1237,1250,1254,1258,1276,1317,1338,1388,1393,1414,1436,1447,1464,1470,1475,1486,1499,1522,1527],{"__ignoreMap":112},[116,1011,1012],{"class":118,"line":119},[116,1013,1014],{"class":137},"// วิธีใช้: node fetch-month.mjs 2026-09   (ต้องตั้ง HT_API_KEY ไว้ในสภาพแวดล้อม)\n",[116,1016,1017,1020,1023,1026,1029],{"class":118,"line":287},[116,1018,1019],{"class":130},"import",[116,1021,1022],{"class":151}," { writeFile } ",[116,1024,1025],{"class":130},"from",[116,1027,1028],{"class":126}," \"node:fs/promises\"",[116,1030,1031],{"class":151},";\n",[116,1033,1034],{"class":118,"line":296},[116,1035,1037],{"emptyLinePlaceholder":1036},true,"\n",[116,1039,1040,1043,1046,1049,1052],{"class":118,"line":304},[116,1041,1042],{"class":130},"const",[116,1044,1045],{"class":122}," API",[116,1047,1048],{"class":130}," =",[116,1050,1051],{"class":126}," \"https://dashboard.hotelier.tools/api/v1\"",[116,1053,1031],{"class":151},[116,1055,1056,1058,1061,1063],{"class":118,"line":319},[116,1057,1042],{"class":130},[116,1059,1060],{"class":122}," headers",[116,1062,1048],{"class":130},[116,1064,1065],{"class":151}," {\n",[116,1067,1068,1071,1074,1077,1080,1083,1085,1087,1090],{"class":118,"line":332},[116,1069,1070],{"class":151},"  Authorization: ",[116,1072,1073],{"class":126},"`Bearer ${",[116,1075,1076],{"class":151},"process",[116,1078,1079],{"class":126},".",[116,1081,1082],{"class":151},"env",[116,1084,1079],{"class":126},[116,1086,103],{"class":122},[116,1088,1089],{"class":126},"}`",[116,1091,316],{"class":151},[116,1093,1094,1097,1099,1102],{"class":118,"line":352},[116,1095,1096],{"class":126},"  \"Content-Type\"",[116,1098,310],{"class":151},[116,1100,1101],{"class":126},"\"application/json\"",[116,1103,316],{"class":151},[116,1105,1106],{"class":118,"line":358},[116,1107,1108],{"class":151},"};\n",[116,1110,1111],{"class":118,"line":364},[116,1112,1037],{"emptyLinePlaceholder":1036},[116,1114,1115,1118,1121,1124,1127,1131,1134,1137,1139],{"class":118,"line":581},[116,1116,1117],{"class":130},"async",[116,1119,1120],{"class":130}," function",[116,1122,1123],{"class":189}," call",[116,1125,1126],{"class":151},"(",[116,1128,1130],{"class":1129},"s4XuR","path",[116,1132,1133],{"class":151},", ",[116,1135,1136],{"class":1129},"options",[116,1138,1048],{"class":130},[116,1140,1141],{"class":151}," {}) {\n",[116,1143,1144,1147,1150,1152,1155,1158,1160,1163,1166,1169,1171,1173,1176,1179],{"class":118,"line":589},[116,1145,1146],{"class":130},"  const",[116,1148,1149],{"class":122}," res",[116,1151,1048],{"class":130},[116,1153,1154],{"class":130}," await",[116,1156,1157],{"class":189}," fetch",[116,1159,1126],{"class":151},[116,1161,1162],{"class":126},"`${",[116,1164,1165],{"class":122},"API",[116,1167,1168],{"class":126},"}${",[116,1170,1130],{"class":151},[116,1172,1089],{"class":126},[116,1174,1175],{"class":151},", { ",[116,1177,1178],{"class":130},"...",[116,1180,1181],{"class":151},"options, headers });\n",[116,1183,1184,1187,1189,1192,1195,1198,1201,1204,1206,1208,1211,1213,1216,1219,1222,1224,1226,1229,1232,1234],{"class":118,"line":596},[116,1185,1186],{"class":130},"  if",[116,1188,55],{"class":151},[116,1190,1191],{"class":130},"!",[116,1193,1194],{"class":151},"res.ok) ",[116,1196,1197],{"class":130},"throw",[116,1199,1200],{"class":130}," new",[116,1202,1203],{"class":189}," Error",[116,1205,1126],{"class":151},[116,1207,1162],{"class":126},[116,1209,1210],{"class":151},"res",[116,1212,1079],{"class":126},[116,1214,1215],{"class":151},"status",[116,1217,1218],{"class":126},"} ${",[116,1220,1221],{"class":130},"await",[116,1223,1149],{"class":151},[116,1225,1079],{"class":126},[116,1227,1228],{"class":189},"text",[116,1230,1231],{"class":126},"()",[116,1233,1089],{"class":126},[116,1235,1236],{"class":151},");\n",[116,1238,1239,1242,1245,1247],{"class":118,"line":607},[116,1240,1241],{"class":130},"  return",[116,1243,1244],{"class":151}," res.",[116,1246,277],{"class":189},[116,1248,1249],{"class":151},"();\n",[116,1251,1252],{"class":118,"line":618},[116,1253,367],{"class":151},[116,1255,1256],{"class":118,"line":634},[116,1257,1037],{"emptyLinePlaceholder":1036},[116,1259,1260,1262,1265,1267,1270,1273],{"class":118,"line":639},[116,1261,1042],{"class":130},[116,1263,1264],{"class":122}," month",[116,1266,1048],{"class":130},[116,1268,1269],{"class":151}," process.argv[",[116,1271,1272],{"class":122},"2",[116,1274,1275],{"class":151},"];\n",[116,1277,1278,1280,1283,1286,1288,1291,1294,1297,1300,1303,1305,1308,1311,1314],{"class":118,"line":644},[116,1279,1042],{"class":130},[116,1281,1282],{"class":151}," [",[116,1284,1285],{"class":122},"year",[116,1287,1133],{"class":151},[116,1289,1290],{"class":122},"mon",[116,1292,1293],{"class":151},"] ",[116,1295,1296],{"class":130},"=",[116,1298,1299],{"class":151}," month.",[116,1301,1302],{"class":189},"split",[116,1304,1126],{"class":151},[116,1306,1307],{"class":126},"\"-\"",[116,1309,1310],{"class":151},").",[116,1312,1313],{"class":189},"map",[116,1315,1316],{"class":151},"(Number);\n",[116,1318,1320,1322,1325,1327,1330,1333,1336],{"class":118,"line":1319},18,[116,1321,1042],{"class":130},[116,1323,1324],{"class":122}," startDate",[116,1326,1048],{"class":130},[116,1328,1329],{"class":126}," `${",[116,1331,1332],{"class":151},"month",[116,1334,1335],{"class":126},"}-01`",[116,1337,1031],{"class":151},[116,1339,1341,1343,1346,1348,1350,1353,1356,1359,1362,1365,1368,1371,1374,1377,1379,1381,1383,1386],{"class":118,"line":1340},19,[116,1342,1042],{"class":130},[116,1344,1345],{"class":122}," endDate",[116,1347,1048],{"class":130},[116,1349,1200],{"class":130},[116,1351,1352],{"class":189}," Date",[116,1354,1355],{"class":151},"(Date.",[116,1357,1358],{"class":189},"UTC",[116,1360,1361],{"class":151},"(year, mon, ",[116,1363,1364],{"class":122},"0",[116,1366,1367],{"class":151},")).",[116,1369,1370],{"class":189},"toISOString",[116,1372,1373],{"class":151},"().",[116,1375,1376],{"class":189},"slice",[116,1378,1126],{"class":151},[116,1380,1364],{"class":122},[116,1382,1133],{"class":151},[116,1384,1385],{"class":122},"10",[116,1387,1236],{"class":151},[116,1389,1391],{"class":118,"line":1390},20,[116,1392,1037],{"emptyLinePlaceholder":1036},[116,1394,1396,1398,1401,1403,1405,1407,1409,1412],{"class":118,"line":1395},21,[116,1397,1042],{"class":130},[116,1399,1400],{"class":122}," roomTypes",[116,1402,1048],{"class":130},[116,1404,1154],{"class":130},[116,1406,1123],{"class":189},[116,1408,1126],{"class":151},[116,1410,1411],{"class":126},"\"/room-types\"",[116,1413,1236],{"class":151},[116,1415,1417,1419,1422,1424,1426,1428,1430,1433],{"class":118,"line":1416},22,[116,1418,1042],{"class":130},[116,1420,1421],{"class":122}," reservations",[116,1423,1048],{"class":130},[116,1425,1154],{"class":130},[116,1427,1123],{"class":189},[116,1429,1126],{"class":151},[116,1431,1432],{"class":126},"\"/methods/getReservationsByDateRange\"",[116,1434,1435],{"class":151},", {\n",[116,1437,1439,1442,1445],{"class":118,"line":1438},23,[116,1440,1441],{"class":151},"  method: ",[116,1443,1444],{"class":126},"\"POST\"",[116,1446,316],{"class":151},[116,1448,1450,1453,1456,1458,1461],{"class":118,"line":1449},24,[116,1451,1452],{"class":151},"  body: ",[116,1454,1455],{"class":122},"JSON",[116,1457,1079],{"class":151},[116,1459,1460],{"class":189},"stringify",[116,1462,1463],{"class":151},"({ params: { startDate, endDate } }),\n",[116,1465,1467],{"class":118,"line":1466},25,[116,1468,1469],{"class":151},"});\n",[116,1471,1473],{"class":118,"line":1472},26,[116,1474,1037],{"emptyLinePlaceholder":1036},[116,1476,1478,1480,1483],{"class":118,"line":1477},27,[116,1479,1221],{"class":130},[116,1481,1482],{"class":189}," writeFile",[116,1484,1485],{"class":151},"(\n",[116,1487,1489,1492,1494,1497],{"class":118,"line":1488},28,[116,1490,1491],{"class":126},"  `raw-${",[116,1493,1332],{"class":151},[116,1495,1496],{"class":126},"}.json`",[116,1498,316],{"class":151},[116,1500,1502,1505,1507,1509,1512,1515,1517,1519],{"class":118,"line":1501},29,[116,1503,1504],{"class":122},"  JSON",[116,1506,1079],{"class":151},[116,1508,1460],{"class":189},[116,1510,1511],{"class":151},"({ roomTypes: roomTypes.data, reservations: reservations.result }, ",[116,1513,1514],{"class":122},"null",[116,1516,1133],{"class":151},[116,1518,1272],{"class":122},[116,1520,1521],{"class":151},")\n",[116,1523,1525],{"class":118,"line":1524},30,[116,1526,1236],{"class":151},[116,1528,1530,1533,1536,1538,1541,1543,1545],{"class":118,"line":1529},31,[116,1531,1532],{"class":151},"console.",[116,1534,1535],{"class":189},"log",[116,1537,1126],{"class":151},[116,1539,1540],{"class":126},"`Saved raw-${",[116,1542,1332],{"class":151},[116,1544,1496],{"class":126},[116,1546,1236],{"class":151},[10,1548,1549,1550,1553,1554,1557],{},"spec ของ API ระบุว่าออบเจ็กต์การจองมาจาก Little Hotelier และ \"shape may vary\" (โครงสร้างอาจต่างกัน) จึงควรให้เอเจนต์อ่านไฟล์ที่บันทึกไว้ก่อนคำนวณอะไรก็ตาม ส่วน ",[14,1551,1552],{},"/room-types"," ให้ค่า ",[14,1555,1556],{},"totalRooms"," ของแต่ละประเภทห้อง ซึ่งเป็นอีกครึ่งหนึ่งของสูตรคำนวณอัตราการเข้าพัก",[167,1559,1561],{"id":1560},"ซิงก์-google-sheets","ซิงก์ Google Sheets",[10,1563,1564,1565,1568],{},"ถ้าต้องการชีตที่แสดงแขกที่จะมาถึงใน 30 วันข้างหน้าและอัปเดตทุกเช้า ให้เปิดสเปรดชีตของคุณ ไปที่ ",[52,1566,1567],{},"Extensions → Apps Script"," แล้ววางโค้ดนี้",[106,1570,1573],{"className":1004,"code":1571,"filename":1572,"language":1007,"meta":112,"style":112},"function syncArrivals() {\n  const key = PropertiesService.getScriptProperties().getProperty('HT_API_KEY');\n  const fmt = d => Utilities.formatDate(d, Session.getScriptTimeZone(), 'yyyy-MM-dd');\n  const today = new Date();\n  const in30 = new Date(today.getTime() + 30 * 24 * 60 * 60 * 1000);\n  const url = 'https://dashboard.hotelier.tools/api/v1/reservations'\n    + '?startDate=' + fmt(today) + '&endDate=' + fmt(in30) + '&limit=100';\n\n  const res = UrlFetchApp.fetch(url, {\n    headers: { Authorization: 'Bearer ' + key },\n    muteHttpExceptions: true,\n  });\n  if (res.getResponseCode() !== 200) throw new Error(res.getContentText());\n\n  const rows = JSON.parse(res.getContentText()).data.map(r => [\n    r.id, r.guestName, r.status, r.checkIn, r.checkOut, r.roomType, r.totalAmount,\n  ]);\n  const book = SpreadsheetApp.getActive();\n  const sheet = book.getSheetByName('Arrivals') || book.insertSheet('Arrivals');\n  sheet.clearContents();\n  sheet.appendRow(['ID', 'Guest', 'Status', 'Check-in', 'Check-out', 'Room type', 'Total']);\n  if (rows.length) sheet.getRange(2, 1, rows.length, rows[0].length).setValues(rows);\n}\n","Code.gs",[14,1574,1575,1586,1613,1648,1663,1713,1725,1760,1764,1781,1794,1804,1809,1845,1849,1885,1890,1895,1912,1948,1958,2004,2052],{"__ignoreMap":112},[116,1576,1577,1580,1583],{"class":118,"line":119},[116,1578,1579],{"class":130},"function",[116,1581,1582],{"class":189}," syncArrivals",[116,1584,1585],{"class":151},"() {\n",[116,1587,1588,1590,1593,1595,1598,1601,1603,1606,1608,1611],{"class":118,"line":287},[116,1589,1146],{"class":130},[116,1591,1592],{"class":122}," key",[116,1594,1048],{"class":130},[116,1596,1597],{"class":151}," PropertiesService.",[116,1599,1600],{"class":189},"getScriptProperties",[116,1602,1373],{"class":151},[116,1604,1605],{"class":189},"getProperty",[116,1607,1126],{"class":151},[116,1609,1610],{"class":126},"'HT_API_KEY'",[116,1612,1236],{"class":151},[116,1614,1615,1617,1620,1622,1625,1628,1631,1634,1637,1640,1643,1646],{"class":118,"line":296},[116,1616,1146],{"class":130},[116,1618,1619],{"class":189}," fmt",[116,1621,1048],{"class":130},[116,1623,1624],{"class":1129}," d",[116,1626,1627],{"class":130}," =>",[116,1629,1630],{"class":151}," Utilities.",[116,1632,1633],{"class":189},"formatDate",[116,1635,1636],{"class":151},"(d, Session.",[116,1638,1639],{"class":189},"getScriptTimeZone",[116,1641,1642],{"class":151},"(), ",[116,1644,1645],{"class":126},"'yyyy-MM-dd'",[116,1647,1236],{"class":151},[116,1649,1650,1652,1655,1657,1659,1661],{"class":118,"line":304},[116,1651,1146],{"class":130},[116,1653,1654],{"class":122}," today",[116,1656,1048],{"class":130},[116,1658,1200],{"class":130},[116,1660,1352],{"class":189},[116,1662,1249],{"class":151},[116,1664,1665,1667,1670,1672,1674,1676,1679,1682,1685,1688,1691,1694,1697,1699,1702,1704,1706,1708,1711],{"class":118,"line":319},[116,1666,1146],{"class":130},[116,1668,1669],{"class":122}," in30",[116,1671,1048],{"class":130},[116,1673,1200],{"class":130},[116,1675,1352],{"class":189},[116,1677,1678],{"class":151},"(today.",[116,1680,1681],{"class":189},"getTime",[116,1683,1684],{"class":151},"() ",[116,1686,1687],{"class":130},"+",[116,1689,1690],{"class":122}," 30",[116,1692,1693],{"class":130}," *",[116,1695,1696],{"class":122}," 24",[116,1698,1693],{"class":130},[116,1700,1701],{"class":122}," 60",[116,1703,1693],{"class":130},[116,1705,1701],{"class":122},[116,1707,1693],{"class":130},[116,1709,1710],{"class":122}," 1000",[116,1712,1236],{"class":151},[116,1714,1715,1717,1720,1722],{"class":118,"line":332},[116,1716,1146],{"class":130},[116,1718,1719],{"class":122}," url",[116,1721,1048],{"class":130},[116,1723,1724],{"class":126}," 'https://dashboard.hotelier.tools/api/v1/reservations'\n",[116,1726,1727,1730,1733,1736,1738,1741,1743,1746,1748,1750,1753,1755,1758],{"class":118,"line":352},[116,1728,1729],{"class":130},"    +",[116,1731,1732],{"class":126}," '?startDate='",[116,1734,1735],{"class":130}," +",[116,1737,1619],{"class":189},[116,1739,1740],{"class":151},"(today) ",[116,1742,1687],{"class":130},[116,1744,1745],{"class":126}," '&endDate='",[116,1747,1735],{"class":130},[116,1749,1619],{"class":189},[116,1751,1752],{"class":151},"(in30) ",[116,1754,1687],{"class":130},[116,1756,1757],{"class":126}," '&limit=100'",[116,1759,1031],{"class":151},[116,1761,1762],{"class":118,"line":358},[116,1763,1037],{"emptyLinePlaceholder":1036},[116,1765,1766,1768,1770,1772,1775,1778],{"class":118,"line":364},[116,1767,1146],{"class":130},[116,1769,1149],{"class":122},[116,1771,1048],{"class":130},[116,1773,1774],{"class":151}," UrlFetchApp.",[116,1776,1777],{"class":189},"fetch",[116,1779,1780],{"class":151},"(url, {\n",[116,1782,1783,1786,1789,1791],{"class":118,"line":581},[116,1784,1785],{"class":151},"    headers: { Authorization: ",[116,1787,1788],{"class":126},"'Bearer '",[116,1790,1735],{"class":130},[116,1792,1793],{"class":151}," key },\n",[116,1795,1796,1799,1802],{"class":118,"line":589},[116,1797,1798],{"class":151},"    muteHttpExceptions: ",[116,1800,1801],{"class":122},"true",[116,1803,316],{"class":151},[116,1805,1806],{"class":118,"line":596},[116,1807,1808],{"class":151},"  });\n",[116,1810,1811,1813,1816,1819,1821,1824,1827,1830,1832,1834,1836,1839,1842],{"class":118,"line":607},[116,1812,1186],{"class":130},[116,1814,1815],{"class":151}," (res.",[116,1817,1818],{"class":189},"getResponseCode",[116,1820,1684],{"class":151},[116,1822,1823],{"class":130},"!==",[116,1825,1826],{"class":122}," 200",[116,1828,1829],{"class":151},") ",[116,1831,1197],{"class":130},[116,1833,1200],{"class":130},[116,1835,1203],{"class":189},[116,1837,1838],{"class":151},"(res.",[116,1840,1841],{"class":189},"getContentText",[116,1843,1844],{"class":151},"());\n",[116,1846,1847],{"class":118,"line":618},[116,1848,1037],{"emptyLinePlaceholder":1036},[116,1850,1851,1853,1856,1858,1861,1863,1866,1868,1870,1873,1875,1877,1880,1882],{"class":118,"line":634},[116,1852,1146],{"class":130},[116,1854,1855],{"class":122}," rows",[116,1857,1048],{"class":130},[116,1859,1860],{"class":122}," JSON",[116,1862,1079],{"class":151},[116,1864,1865],{"class":189},"parse",[116,1867,1838],{"class":151},[116,1869,1841],{"class":189},[116,1871,1872],{"class":151},"()).data.",[116,1874,1313],{"class":189},[116,1876,1126],{"class":151},[116,1878,1879],{"class":1129},"r",[116,1881,1627],{"class":130},[116,1883,1884],{"class":151}," [\n",[116,1886,1887],{"class":118,"line":639},[116,1888,1889],{"class":151},"    r.id, r.guestName, r.status, r.checkIn, r.checkOut, r.roomType, r.totalAmount,\n",[116,1891,1892],{"class":118,"line":644},[116,1893,1894],{"class":151},"  ]);\n",[116,1896,1897,1899,1902,1904,1907,1910],{"class":118,"line":1319},[116,1898,1146],{"class":130},[116,1900,1901],{"class":122}," book",[116,1903,1048],{"class":130},[116,1905,1906],{"class":151}," SpreadsheetApp.",[116,1908,1909],{"class":189},"getActive",[116,1911,1249],{"class":151},[116,1913,1914,1916,1919,1921,1924,1927,1929,1932,1934,1937,1939,1942,1944,1946],{"class":118,"line":1340},[116,1915,1146],{"class":130},[116,1917,1918],{"class":122}," sheet",[116,1920,1048],{"class":130},[116,1922,1923],{"class":151}," book.",[116,1925,1926],{"class":189},"getSheetByName",[116,1928,1126],{"class":151},[116,1930,1931],{"class":126},"'Arrivals'",[116,1933,1829],{"class":151},[116,1935,1936],{"class":130},"||",[116,1938,1923],{"class":151},[116,1940,1941],{"class":189},"insertSheet",[116,1943,1126],{"class":151},[116,1945,1931],{"class":126},[116,1947,1236],{"class":151},[116,1949,1950,1953,1956],{"class":118,"line":1390},[116,1951,1952],{"class":151},"  sheet.",[116,1954,1955],{"class":189},"clearContents",[116,1957,1249],{"class":151},[116,1959,1960,1962,1965,1968,1971,1973,1976,1978,1981,1983,1986,1988,1991,1993,1996,1998,2001],{"class":118,"line":1395},[116,1961,1952],{"class":151},[116,1963,1964],{"class":189},"appendRow",[116,1966,1967],{"class":151},"([",[116,1969,1970],{"class":126},"'ID'",[116,1972,1133],{"class":151},[116,1974,1975],{"class":126},"'Guest'",[116,1977,1133],{"class":151},[116,1979,1980],{"class":126},"'Status'",[116,1982,1133],{"class":151},[116,1984,1985],{"class":126},"'Check-in'",[116,1987,1133],{"class":151},[116,1989,1990],{"class":126},"'Check-out'",[116,1992,1133],{"class":151},[116,1994,1995],{"class":126},"'Room type'",[116,1997,1133],{"class":151},[116,1999,2000],{"class":126},"'Total'",[116,2002,2003],{"class":151},"]);\n",[116,2005,2006,2008,2011,2014,2017,2020,2022,2024,2026,2029,2032,2034,2037,2039,2042,2044,2046,2049],{"class":118,"line":1416},[116,2007,1186],{"class":130},[116,2009,2010],{"class":151}," (rows.",[116,2012,2013],{"class":122},"length",[116,2015,2016],{"class":151},") sheet.",[116,2018,2019],{"class":189},"getRange",[116,2021,1126],{"class":151},[116,2023,1272],{"class":122},[116,2025,1133],{"class":151},[116,2027,2028],{"class":122},"1",[116,2030,2031],{"class":151},", rows.",[116,2033,2013],{"class":122},[116,2035,2036],{"class":151},", rows[",[116,2038,1364],{"class":122},[116,2040,2041],{"class":151},"].",[116,2043,2013],{"class":122},[116,2045,1310],{"class":151},[116,2047,2048],{"class":189},"setValues",[116,2050,2051],{"class":151},"(rows);\n",[116,2053,2054],{"class":118,"line":1438},[116,2055,367],{"class":151},[10,2057,2058,2059,2062,2063,2065,2066,2069,2070,2073],{},"เก็บคีย์ไว้ที่ ",[52,2060,2061],{},"Project Settings → Script properties"," ในชื่อ ",[14,2064,103],{}," รันสคริปต์หนึ่งครั้งเพื่ออนุญาตการเข้าถึง แล้วเพิ่ม trigger แบบตั้งเวลารายวันที่ ",[52,2067,2068],{},"Triggers"," ทั้งนี้ ",[14,2071,2072],{},"/reservations"," ส่งข้อมูลได้สูงสุด 100 การเข้าพักต่อครั้ง โดยกรองตามวันเช็คอิน เดือนที่มีการจองเยอะจึงควรแบ่งดึงเป็นรายสัปดาห์ และอย่าลืมว่าตอนนี้ชีตมีชื่อแขกอยู่ ควรแชร์อย่างระมัดระวัง",[167,2075,2076],{"id":2076},"แดชบอร์ดขนาดเล็กที่สร้างเอง",[989,2078,2079],{"label":386},[10,2080,2081],{},"สร้างเว็บแอป Node.js ขนาดเล็กที่แสดงอัตราการเข้าพักของคืนนี้ แขกที่มาถึงและออกวันนี้ และการเข้าพักที่ยังมียอดค้างชำระ โดยใช้ REST API ของ Hotelier Tools เก็บ HT_API_KEY ไว้ฝั่งเซิร์ฟเวอร์เท่านั้น เบราว์เซอร์ต้องเรียกเซิร์ฟเวอร์ของฉัน ห้ามเรียก API โดยตรง และแคชคำตอบไว้ 5 นาที",[10,2083,2084],{},"กฎสองข้อที่ทำให้ปลอดภัย คือเก็บคีย์ไว้ที่เซิร์ฟเวอร์เท่านั้น (เพราะใครที่เปิดหน้าเว็บก็อ่านคีย์ในโค้ดฝั่งเบราว์เซอร์ได้) และต้องแคชไว้ เพราะ API รับได้ 100 คำขอต่อนาทีต่อหนึ่ง IP",[25,2086,2088],{"id":2087},"mcp-หรือ-rest-api-ควรใช้แบบไหน","MCP หรือ REST API: ควรใช้แบบไหน",[852,2090,2091,2102],{},[855,2092,2093],{},[858,2094,2095,2097,2100],{},[861,2096],{},[861,2098,2099],{},"MCP server",[861,2101,980],{},[874,2103,2104,2115,2129,2143],{},[858,2105,2106,2109,2112],{},[879,2107,2108],{},"เหมาะกับ",[879,2110,2111],{},"ถามคำถาม และให้เอเจนต์สำรวจข้อมูลระหว่างเขียนโค้ด",[879,2113,2114],{},"สคริปต์ Sheets และแดชบอร์ดที่รันตามกำหนดเวลา",[858,2116,2117,2120,2124],{},[879,2118,2119],{},"ที่อยู่",[879,2121,2122],{},[14,2123,16],{},[879,2125,2126],{},[14,2127,2128],{},"https://dashboard.hotelier.tools/api/v1",[858,2130,2131,2134,2137],{},[879,2132,2133],{},"การยืนยันตัวตน",[879,2135,2136],{},"API key หรือเข้าสู่ระบบผ่านเบราว์เซอร์",[879,2138,2139,2140,69],{},"API key (",[14,2141,2142],{},"Authorization: Bearer htk_…",[858,2144,2145,2147,2152],{},[879,2146,692],{},[879,2148,2149,2150,69],{},"หน้า MCP Setup (",[14,2151,667],{},[879,2153,2154,2155,69],{},"ตัวสำรวจ Swagger (",[14,2156,2157],{},"/developer/rest-api",[10,2159,2160,2161],{},"ทั้งสองแบบใช้คีย์และสิทธิ์ชุดเดียวกัน คู่มือ REST API อยู่ใน ",[33,2162,2163],{"href":42},"API ของ Little Hotelier",[25,2165,2167],{"id":2166},"เครื่องมืออ่านกับแก้ไขข้อมูล-คุมเอเจนต์ให้อยู่","เครื่องมืออ่านกับแก้ไขข้อมูล: คุมเอเจนต์ให้อยู่",[10,2169,2170],{},"เอเจนต์เขียนโค้ดรันเครื่องมือได้เร็วมาก และนั่นคือเหตุผลที่คุณควรให้มันช้าลงในจุดนี้",[234,2172,2173,2179,2185,2203],{},[48,2174,2175,2178],{},[52,2176,2177],{},"การแก้ไขข้อมูลเกิดขึ้นทันทีที่เอเจนต์เรียกเครื่องมือ"," นอกแดชบอร์ด Hotelier Tools ไม่มีการ์ดขออนุมัติ การแก้การจอง การบันทึกการชำระเงิน การปรับใช้ราคา หรือการตั้ง stop sell (ปิดการขาย) จะเกิดขึ้นทันทีที่เครื่องมือทำงาน ให้เปิดตัวเลือก \"ask before running tools\" (ถามก่อนรันเครื่องมือ) ในโปรแกรมแก้ไขโค้ดไว้ และอย่าใช้โหมดรันอัตโนมัติกับเซิร์ฟเวอร์นี้",[48,2180,2181,2184],{},[52,2182,2183],{},"การกระทำที่ย้อนกลับไม่ได้ถูกบล็อกอยู่แล้ว"," เครื่องมือ 8 รายการ (ส่งอีเมลใบแจ้งหนี้ให้แขก คืนเงิน ยื่นแบบสำรวจ INE เชิญสมาชิกทีม ส่งอีเมลลิงก์ให้แขก ตอบคำถามบน Booking.com และการตรวจรายชื่อรอห้องที่ส่งข้อความถึงแขก) ใช้ได้เฉพาะในแดชบอร์ด",[48,2186,2187,2190,2191,2194,2195,2198,2199,2202],{},[52,2188,2189],{},"การแก้การจองมีสองขั้น"," ",[14,2192,2193],{},"propose_reservation_changes"," แสดงค่าก่อน/หลัง ส่วน ",[14,2196,2197],{},"apply_reservation_changes"," ต้องมี ",[14,2200,2201],{},"confirmed: true"," อ่านข้อเสนอให้ดีก่อน",[48,2204,2205,2208,2209,2212,2213,2216,2217],{},[52,2206,2207],{},"ห้าม commit คีย์"," ใช้การอ้างอิงแบบ ",[14,2210,2211],{},"${HT_API_KEY}"," เพิ่มไฟล์ตั้งค่าในเครื่องลงใน ",[14,2214,2215],{},".gitignore"," และเพิกถอนคีย์ที่รั่วไหลที่ ",[14,2218,68],{},[25,2220,2222],{"id":2221},"แก้ปัญหา-ไม่เห็นเซิร์ฟเวอร์","แก้ปัญหา \"ไม่เห็นเซิร์ฟเวอร์\"",[234,2224,2225,2231,2239,2250,2256,2264,2280,2289],{},[48,2226,2227,2230],{},[52,2228,2229],{},"ไม่มีอะไรปรากฏหลังแก้ไฟล์ตั้งค่า:"," รีสตาร์ตโปรแกรมแก้ไขโค้ดหรือ CLI เครื่องมือส่วนใหญ่อ่านไฟล์ MCP ตอนเริ่มทำงาน",[48,2232,2233,2236,2237],{},[52,2234,2235],{},"Claude Code หรือ VS Code ไม่โหลดเซิร์ฟเวอร์:"," ตรวจว่ามี ",[14,2238,373],{},[48,2240,2241,2244,2245,2247,2248],{},[52,2242,2243],{},"Gemini CLI เชื่อมต่อได้แต่ล้มเหลว:"," ใช้ ",[14,2246,770],{}," ไม่ใช่ ",[14,2249,377],{},[48,2251,2252,2255],{},[52,2253,2254],{},"401:"," คีย์ผิดหรือถูกเพิกถอน หรือยังไม่ได้ตั้งตัวแปรสภาพแวดล้อมในเทอร์มินัลนั้น",[48,2257,2258,2261,2262],{},[52,2259,2260],{},"400 \"No Little Hotelier credentials configured\":"," เชื่อมต่อ Little Hotelier ที่ ",[14,2263,58],{},[48,2265,2266,2273,2274,2276,2277],{},[52,2267,2268,2269,2272],{},"423 ",[14,2270,2271],{},"lh_frozen",":"," การเข้าสู่ระบบ Little Hotelier ถูกหยุดชั่วคราวหลังล็อกอินล้มเหลว (มักเพราะรหัสผ่านหมดอายุ) บันทึกรหัสผ่านใหม่ที่ ",[52,2275,54],{}," หรือกด ",[52,2278,2279],{},"Check now & resume",[48,2281,2282,2285,2286],{},[52,2283,2284],{},"429:"," คำขอมากเกินไป ให้รอตามเวลาที่ระบุใน ",[14,2287,2288],{},"Retry-After",[48,2290,2291,2294,2295,2298],{},[52,2292,2293],{},"การขึ้นบรรทัดใหม่ด้วย backslash ใช้ไม่ได้บน Windows:"," PowerShell ไม่ใช้ ",[14,2296,2297],{},"\\"," ต่อบรรทัด ให้วางคำสั่งในบรรทัดเดียวตามที่แสดงด้านบน",[2300,2301],"demo-cta",{"path":667},[25,2303,2304],{"id":2304},"ขั้นตอนถัดไป",[234,2306,2307,2320,2327],{},[48,2308,2309,2310,2314,2315,2319],{},"ไม่ใช่นักพัฒนา? ",[33,2311,2313],{"href":2312},"/blog/connect-claude-to-little-hotelier","เชื่อมต่อ Claude"," หรือ ",[33,2316,2318],{"href":2317},"/blog/connect-chatgpt-to-little-hotelier","ChatGPT"," ในเบราว์เซอร์แทน",[48,2321,2322,2323],{},"เพิ่งรู้จักแนวคิดนี้? อ่าน ",[33,2324,2326],{"href":2325},"/blog/what-is-mcp-server-hotels","MCP server คืออะไร",[48,2328,2329,2330],{},"อยากได้สเปรดชีตโดยไม่ต้องเขียนโค้ด? ดู",[33,2331,2333],{"href":2332},"/blog/export-little-hotelier-reservations-excel","วิธีส่งออกการจองเป็น Excel",[2335,2336,2337],"style",{},"html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}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 .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .s4XuR, html code.shiki .s4XuR{--shiki-default:#E36209;--shiki-dark:#FFAB70}",{"title":112,"searchDepth":287,"depth":287,"links":2339},[2340,2341,2347,2352,2353,2354,2355],{"id":27,"depth":287,"text":28},{"id":161,"depth":287,"text":162,"children":2342},[2343,2344,2345,2346],{"id":169,"depth":296,"text":170},{"id":385,"depth":296,"text":386},{"id":478,"depth":296,"text":479},{"id":673,"depth":296,"text":674},{"id":968,"depth":287,"text":968,"children":2348},[2349,2350,2351],{"id":984,"depth":296,"text":984},{"id":1560,"depth":296,"text":1561},{"id":2076,"depth":296,"text":2076},{"id":2087,"depth":287,"text":2088},{"id":2166,"depth":287,"text":2167},{"id":2221,"depth":287,"text":2222},{"id":2304,"depth":287,"text":2304},"เพิ่ม MCP server ของ Hotelier Tools ใน Claude Code, Cursor, VS Code, Windsurf หรือ Gemini CLI แล้วสร้างรายงานอัตราการเข้าพัก ซิงก์ Sheets หรือแดชบอร์ด","md",{"seoTitle":2359,"date":2360,"category":2361,"tags":2362,"keywords":2367,"feature":2376,"demoPath":667,"cover":2377,"coverAlt":2378,"faq":2379},"Little Hotelier MCP ใน Claude Code, Cursor และ VS Code","2026-10-03","ai",[2363,2364,385,2365,2366],"mcp","claude code","vs code","api",[2368,2369,2370,2371,2372,2373,2374,2375],"claude code วิธีใช้","claude code คือ","claude code mcp setup","cursor mcp.json","vscode mcp.json","little hotelier mcp","gemini cli mcp","windsurf mcp config","api-mcp","/images/blog/demo/en/mcp-setup.webp","คู่มือตั้งค่า MCP ใน Hotelier Tools: คำอธิบาย What is MCP? และแท็บ Client configuration สำหรับ Claude Desktop, VS Code, Cursor และ Custom / SDK โดยเลือก Claude Desktop และแสดงโค้ด claude_desktop_config.json",[2380,2383,2386,2389,2392],{"q":2381,"a":2382},"คำสั่ง claude mcp add สำหรับ Little Hotelier คืออะไร?","รันคำสั่ง claude mcp add --transport http hotelier-tools https://dashboard.hotelier.tools/api/mcp --header \"Authorization: Bearer htk_YOUR_API_KEY\" โดยเปลี่ยนคีย์เป็นคีย์ที่สร้างจาก Developer > API Keys ใน Hotelier Tools แล้วตรวจสอบด้วย /mcp ใน Claude Code",{"q":2384,"a":2385},"ไฟล์ mcp.json อยู่ที่ไหนใน Cursor และ VS Code?","Cursor อ่าน ~/.cursor/mcp.json สำหรับทุกโปรเจกต์ และ .cursor/mcp.json ภายในโปรเจกต์ ส่วน VS Code อ่าน .vscode/mcp.json ใน workspace และไฟล์ระดับผู้ใช้ที่เปิดด้วยคำสั่ง MCP: Open User Configuration โดย VS Code ใช้คีย์ servers ไม่ใช่ mcpServers",{"q":2387,"a":2388},"ต้องเป็นนักพัฒนาถึงจะใช้ Claude Code กับข้อมูลโรงแรมได้หรือไม่?","ไม่จำเป็น แค่ติดตั้ง Claude Code วางคำสั่งหนึ่งบรรทัด แล้วถามเป็นภาษาพูดธรรมดา ถ้ารู้ว่าไฟล์ถูกบันทึกไว้ที่ไหนและรันสคริปต์อย่างไรจะช่วยได้มาก แต่ Claude Code ก็อธิบายแต่ละขั้นตอนให้ได้ระหว่างทำงาน",{"q":2390,"a":2391},"เข้าสู่ระบบแทนการใช้ API key ได้ไหม?","ได้ ถ้าไคลเอนต์รองรับ OAuth ให้เพิ่ม URL ของเซิร์ฟเวอร์โดยไม่ใส่ header แล้วเข้าสู่ระบบเมื่อไคลเอนต์ถาม เช่น ใน Claude Code ให้รัน /mcp แล้วเลือกยืนยันตัวตน การเข้าสู่ระบบมีอายุ 30 วัน ส่วนคีย์เหมาะกว่าสำหรับสคริปต์ที่รันเองโดยไม่มีคนเฝ้า",{"q":2393,"a":2394},"นี่เป็น API อย่างเป็นทางการของ Little Hotelier หรือ SiteMinder หรือไม่?","ไม่ใช่ Hotelier Tools เป็นเครื่องมืออิสระ ไม่ได้มีส่วนเกี่ยวข้องกับ SiteMinder หรือ Little Hotelier และไม่ได้รับการรับรองจากทั้งสองบริษัท โดยเชื่อมต่อผ่านบัญชี Little Hotelier ของที่พักคุณเอง และมี REST API กับ MCP server ของตัวเอง","/blog/th/little-hotelier-mcp-claude-code-cursor-vscode",{"title":5,"description":2356},"blog/th/little-hotelier-mcp-claude-code-cursor-vscode","a5UT5TosSOKxosHqcoBzYhlrJaZI6355Dme82qC3Wq0",[2400,2401,2402,2403,2404,2405,2406,2407,861],"de","en-gb","en","es","fr","id","it","pt",[2409,2431,2450,2469,2491,2514,2531,2551,2569,2589,2609,2627,2647,2666,2681,2702,2721,2740,2753,2757,2776,2791,2810],{"path":2410,"title":2411,"description":2412,"meta":2413},"/blog/th/little-hotelier-tips","20 เคล็ดลับ Little Hotelier และฟีเจอร์ลับที่หลายคนไม่รู้","20 เคล็ดลับ Little Hotelier: ปฏิทินที่เร็วขึ้น passkey ราคาต่ำสุด คืนว่างคั่นกลาง ลิงก์จอง audit log และสคริปต์ฟรีที่แสดงราคาในปฏิทิน",{"date":2360,"category":2414,"tags":2415,"keywords":2420,"feature":2428,"cover":2429,"coverAlt":2430},"tips",[2414,2416,2417,2418,2419],"how to","calendar","userscripts","little hotelier",[2421,2422,2423,2424,2425,2426,2427],"little hotelier คือ","little hotelier วิธีใช้","เคล็ดลับ little hotelier","little hotelier tips","little hotelier hidden features","little hotelier calendar","little hotelier tutorial","dashboard","/images/scripts/full-width-reservation-table/to.png","หน้า Reservations ของ Little Hotelier (หน้าจอภาษาสเปน) ที่ขยายเต็มความกว้างหน้าจอด้วยสคริปต์ Full Width Reservation Table: ตัวกรองการค้นหา ปุ่ม Buscar พบ 36 รายการจอง และลิงก์ Exportar",{"path":2432,"title":2433,"description":2434,"meta":2435},"/blog/th/ai-assistant-hotel-front-desk","AI สำหรับโรงแรม: ผู้ช่วยแผนกต้อนรับที่ปลอดภัย","ผู้ช่วย AI ค้นหาการจอง ร่างข้อความตอบแขก และเตรียมการแก้ไขให้โรงแรมขนาดเล็กได้ ดูว่าทำอะไรได้อย่างปลอดภัย และทำไมทุกการเปลี่ยนแปลงต้องให้คุณอนุมัติ",{"date":2360,"category":2361,"tags":2436,"keywords":2440,"feature":2447,"cover":2448,"coverAlt":2449},[2361,2437,2438,2439,2419],"ai assistant","front desk","approvals",[2441,2442,2443,2444,2445,2446],"ai สำหรับโรงแรม","ai กับ งาน โรงแรม","ai กับ ธุรกิจ โรงแรม","ผู้ช่วย ai โรงแรม","ai front desk hotel","ai receptionist hotel","ai-assistant","/images/blog/demo/en/ai-chat-start.webp","หน้าเริ่มต้นของผู้ช่วย AI ใน Hotelier Tools ที่แจ้งว่าทุกสิ่งที่เปลี่ยนข้อมูลจะขอการยืนยันก่อน พร้อมคำถามแนะนำ และประวัติแชตทางด้านซ้าย",{"path":2451,"title":2452,"description":2453,"meta":2454},"/blog/th/little-hotelier-api","API ของ Little Hotelier มีไหม? คำตอบปี 2026","Little Hotelier ไม่มี API key ให้ดึงข้อมูลการจองหรือแขก ดูว่า SiteMinder มีอะไรให้อย่างเป็นทางการ และวิธีอ่านข้อมูลผ่าน REST ได้ในไม่กี่นาที",{"date":2360,"category":2366,"tags":2455,"keywords":2459,"feature":2376,"cover":2467,"coverAlt":2468,"featured":1036},[2366,2456,2419,2457,2458],"rest","siteminder","developers",[2460,2461,2462,2463,2464,2465,2466],"little hotelier api","api ของ little hotelier","little hotelier api documentation","little hotelier api key","siteminder api","siteminder exchange api","little hotelier rest api","/images/blog/demo/en/rest-api-reference.webp","หน้าเอกสารอ้างอิง REST API ใน Hotelier Tools แสดง base URL ปุ่มดาวน์โหลด openapi.json กล่อง Quick authorize (ช่อง Bearer token, Authorize Swagger, Use my session) และตัวอย่างโค้ด cURL, JavaScript, Python และ PowerShell",{"path":2470,"title":2471,"description":2472,"meta":2473},"/blog/th/booking-com-invalid-card-no-show","Booking.com บัตรไม่ถูกต้อง หรือแขก no-show ทำอย่างไร","Booking.com บัตรแขกไม่ถูกต้อง: แจ้งในระบบ รอ 24 ชั่วโมง แล้วยกเลิกได้โดยไม่เสียค่าคอมมิชชั่น รวมถึงกำหนดเวลา no-show บัตรเสมือนถูกปฏิเสธ และวิธีรู้ตัวก่อน",{"date":2360,"category":2474,"tags":2475,"keywords":2480,"feature":2488,"cover":2489,"coverAlt":2490},"operations",[2476,2477,2478,2419,2479],"booking.com","no-show","payments","automated checks",[2481,2482,2483,2484,2485,2486,2487],"no show โรงแรม คือ","ค่า no show คือ","ลด no show คือ","booking.com บัตรเครดิตไม่ถูกต้อง","booking.com ค่า no show","booking.com virtual card ถูกปฏิเสธ","แจ้งบัตรเครดิตไม่ถูกต้อง booking.com","automated-checks","/images/blog/demo/en/automated-checks-issues.webp","หน้า Issues ใน Hotelier Tools แสดงปัญหาที่ยังเปิดอยู่ 20 รายการ แก้ไขแล้ว 5 รายการ รวม 25 รายการ พร้อมรายการจองที่มียอดค้างชำระตอนเช็คอินและปุ่ม Verify",{"path":2492,"title":2493,"description":2494,"meta":2495},"/blog/th/little-hotelier-cta-ctd-stop-sell","CTA, CTD, Min Stay, Stop Sell ของโรงแรมคืออะไร?","CTA ห้ามเช็คอิน CTD ห้ามเช็คเอาท์ min stay กำหนดจำนวนคืนขั้นต่ำ stop sell ปิดการขาย ดูความหมายของแต่ละคำและวิธีตั้งค่าใน Little Hotelier",{"date":2360,"category":2496,"tags":2497,"keywords":2502,"feature":2511,"cover":2512,"coverAlt":2513},"pricing",[2498,2499,2500,2501,2419],"restrictions","cta","ctd","stop sell",[2503,2504,2505,2506,2507,2508,2509,2510],"stop sales hotel คือ","stop sell คืออะไร","cta ctd โรงแรม คือ","closed to arrival คือ","min stay คืออะไร","minimum stay โรงแรม","little hotelier cta ctd","siteminder stop sell","dynamic-pricing","/images/blog/demo/en/price-recommendations.webp","หน้าราคาแนะนำใน Hotelier Tools สำหรับห้อง Doble Estándar วันที่ 3 ถึง 16 ตุลาคม 2026 แสดงราคาปัจจุบันและราคาแนะนำต่อคืน คอลัมน์ CTA / CTD ที่มีปุ่มสลับ A และ D จำนวนคืนขั้นต่ำ คอลัมน์ Channel และปุ่ม Apply to Little Hotelier",{"path":2515,"title":2516,"description":2517,"meta":2518},"/blog/th/dynamic-pricing-little-hotelier","Dynamic pricing โรงแรมเล็กบน Little Hotelier","Dynamic pricing บน Little Hotelier: ขั้นตอนรายสัปดาห์ง่ายๆ เครื่องมือในตัวของระบบ และราคาแนะนำพร้อมเหตุผลที่จะใช้จริงเมื่อคุณยืนยันเท่านั้น",{"date":2360,"category":2496,"tags":2519,"keywords":2523,"feature":2511,"cover":2512,"coverAlt":2530},[2520,2521,2522,2419,2496],"dynamic pricing","revenue management","competitor prices",[2524,2525,2526,2527,2528,2529],"dynamic pricing โรงแรม","ai dynamic pricing คือ","little hotelier dynamic pricing","โปรแกรมตั้งราคาห้องพัก","revenue management โรงแรมเล็ก","วิธีตั้งราคาห้องพัก booking com","หน้า Price recommendations ใน Hotelier Tools สำหรับ 14 คืน: ตารางห้อง Doble Estándar แสดงราคาปัจจุบัน ราคาแนะนำ ส่วนต่าง ค่ามัธยฐานของตลาด และราคาที่แขกจ่ายต่อคืน พร้อมแถบ Apply to Little Hotelier ที่ยังไม่ได้เลือกราคาใด",{"path":2532,"title":2533,"description":2534,"meta":2535},"/blog/th/little-hotelier-integrations","Little Hotelier เชื่อมต่อกับอะไรได้บ้าง ปี 2026","Little Hotelier เชื่อมต่ออะไรได้บ้างในปี 2026: ส่งออกไป Xero และ QuickBooks เช็คอินด้วย Chekin และ Duve เครื่องมือตั้งราคา ข้อความถึงแขก AI และสคริปต์ฟรี",{"date":2360,"category":2366,"tags":2536,"keywords":2541,"feature":2376,"cover":2549,"coverAlt":2550},[2537,2538,2539,2540,2419],"integrations","app store","xero","chekin",[2542,2543,2544,2545,2546,2547,2548],"little hotelier เชื่อมต่อ","little hotelier integrations","little hotelier xero integration","little hotelier app store","little hotelier booking widget","little hotelier chekin","little hotelier zapier","/images/blog/demo/en/developer-portal.webp","พอร์ทัลนักพัฒนาใน Hotelier Tools มีการ์ด REST API & Swagger, MCP setup, API keys และ LH methods พร้อมกล่อง Authentication ที่มีตัวอย่าง cURL โดยใช้ API key จำลอง",{"path":2552,"title":2553,"description":2554,"meta":2555},"/blog/th/what-is-mcp-server-hotels","MCP server คืออะไร? คู่มือสำหรับเจ้าของโรงแรม","MCP server คือตัวเชื่อมที่ให้ Claude หรือ ChatGPT อ่านและทำงานในซอฟต์แวร์โรงแรมของคุณ อธิบายแบบเข้าใจง่าย พร้อมข้อควรระวัง และ PMS ที่มีแล้ว ณ ตุลาคม 2026",{"date":2360,"category":2361,"tags":2556,"keywords":2559,"feature":2376,"cover":2377,"coverAlt":2568,"featured":1036},[2363,2361,190,2557,2558],"chatgpt","pms",[2560,2561,2562,2563,2564,2373,2565,2566,2567],"mcp server คือ","mcp คือ อะไร ai","mcp server สำหรับโรงแรม","ai สําหรับโรงแรม","mcp claude คือ","apaleo mcp server","mews mcp server","cloudbeds mcp server","คู่มือตั้งค่า MCP ใน Hotelier Tools พร้อมคำอธิบาย What is MCP? และแท็บ Client configuration สำหรับ Claude Desktop, VS Code, Cursor และ Custom / SDK โดยแสดงการตั้งค่า Claude Desktop พร้อมที่อยู่เซิร์ฟเวอร์",{"path":2570,"title":2571,"description":2572,"meta":2573},"/blog/th/hotel-waitlist-sold-out-dates","Waiting list โรงแรม: ทำอย่างไรเมื่อห้องเต็ม","เก็บรายชื่อแขกที่อยากได้วันที่ห้องเต็ม แล้วเสนอห้องที่ว่างจากการยกเลิกให้ก่อน ด้วยสเปรดชีต การเฝ้าดูห้องว่างอัตโนมัติ และฟอร์มให้แขกลงชื่อเอง",{"date":2360,"category":2574,"tags":2575,"keywords":2580,"feature":2576,"cover":2587,"coverAlt":2588},"guests",[2576,2577,2578,2419,2579],"waitlist","cancellations","direct booking","availability",[2581,2582,2583,2584,2585,2586],"waiting list โรงแรม","waitlisted hotel คือ","hotel waitlist","รายชื่อรอห้องพัก","ห้องเต็ม waiting list","ฟอร์ม waiting list โรงแรม","/images/blog/demo/en/availability-waiting-list.webp","หน้า Availability queue ใน Hotelier Tools พร้อม History และ Check the queue now การ์ด Checks on the queue ที่เสนอ Check every night at 01:00 และฟอร์ม Add a stay to watch ที่มีจำนวนคืน จำนวนห้อง ประเภทห้อง และรายละเอียดแขก",{"path":2590,"title":2591,"description":2592,"meta":2593},"/blog/th/booking-com-guest-messages","ข้อความ Booking.com: จัดการได้โดยไม่ต้องเฝ้า Extranet","จัดการข้อความ Booking.com ด้วย Pulse เทมเพลต ข้อความตั้งเวลา และตอบอัตโนมัติ วิธีจับข้อความปลอม และกล่องข้อความเดียวสำหรับ Booking.com, WhatsApp และอีเมล",{"date":2360,"category":2574,"tags":2594,"keywords":2598,"feature":2606,"cover":2607,"coverAlt":2608},[2476,2595,2596,2597,2419],"guest messages","inbox","templates",[2599,2600,2601,2602,2603,2604,2605],"ข้อความ booking.com","ข้อความ booking.com ไม่แสดง","ข้อความตั้งเวลา booking.com","เทมเพลตข้อความ booking.com","ตอบอัตโนมัติ booking.com","ข้อความปลอม booking.com","booking.com messages","guest-inbox","/images/blog/demo/en/guest-inbox-ai-draft-availability.webp","กล่องข้อความแขกของ Hotelier Tools พร้อมตัวกรอง WhatsApp, Email และ Booking.com อีเมลจากแขกที่ถามเรื่องห้องดับเบิลในเดือนกันยายน แผน AI ในสถานะร่างพร้อมคำตอบภาษาอังกฤษที่แก้ไขได้ และแผงผู้ช่วยส่วนตัว",{"path":2610,"title":2611,"description":2612,"meta":2613},"/blog/th/booking-com-commission","ค่าคอมมิชชั่น Booking.com กี่ %? ดูยอดสุทธิที่ได้จริง","ค่าคอมมิชชั่น Booking.com ไม่มีอัตราเดียว คุณจ่ายตาม % ในสัญญา บวกโปรแกรมและค่าธรรมเนียมชำระเงิน ดูว่าคิดจากยอดไหน VAT และยอดสุทธิจริงต่อการจอง",{"date":2360,"category":2414,"tags":2614,"keywords":2618,"cover":2625,"coverAlt":2626},[2476,2615,2419,2616,2617],"commission","userscript","vat",[2619,2620,2621,2622,2623,2624],"ค่าคอมมิชชั่น booking com","ค่าคอมมิชชั่น booking com กี่ %","ค่าคอมมิชชั่น booking com หัก ณ ที่จ่าย","booking com commission","booking.com genius commission","คำนวณค่าคอมมิชชั่น booking","/images/scripts/show-booking-commissions/to.png","สรุปการจองใน Little Hotelier (หน้าจอภาษาสเปน) ที่มีค่าคอมมิชชั่น Booking.com ค่าธรรมเนียมการชำระเงิน และยอดสุทธิโดยประมาณ เพิ่มเข้ามาด้วยสคริปต์ฟรี",{"path":2628,"title":2629,"description":2630,"meta":2631},"/blog/th/guest-registration-rules-by-country","แจ้งที่พักคนต่างด้าว ตม.30 และกฎลงทะเบียนแขก 8 ประเทศ","โรงแรมต้องลงทะเบียนแขกกลุ่มไหน ข้อมูลอะไร ส่งภายในเมื่อไรและที่ไหน: ไทย (ตม.30) สเปน อิตาลี โปรตุเกส เยอรมนี ฝรั่งเศส บราซิล อินโดนีเซีย พร้อมลิงก์ทางการ",{"date":2360,"category":2632,"tags":2633,"keywords":2636,"cover":2645,"coverAlt":2646},"compliance",[2634,2632,2405,2635,2419],"guest registration","police",[2637,2638,2639,2640,2641,2642,2643,2644],"แจ้งที่พักคนต่างด้าว ตม.30 ออนไลน์","tm30 แจ้งที่พัก","tm30 โรงแรม","tm30 คือ","ลงทะเบียนแขกโรงแรม","ทำไมโรงแรมสแกนพาสปอร์ต","alloggiati web","siba alojamento local","/images/blog/demo/en/automated-checks-moment-on-arrival.webp","การตรวจช่วง When they arrive ใน Hotelier Tools: เปิดการตรวจ ID / passport (police register), physical room assignment และ address and origin validation ไว้ พร้อมคำอธิบายว่าแต่ละการตรวจทำอะไรได้และไม่ได้",{"path":2648,"title":2649,"description":2650,"meta":2651},"/blog/th/hotel-front-desk-checklist-automation","เช็คลิสต์ front office โรงแรม: 8 ข้อก่อนแขกมาถึง","เช็คลิสต์ front office ประจำวันสำหรับ Little Hotelier: 8 ปัญหาการจองที่ควรตรวจให้เจอก่อนแขกมาถึง ดูได้ที่ไหน และตั้งให้ตรวจอัตโนมัติได้ 5 ข้อ",{"date":2360,"category":2474,"tags":2652,"keywords":2656,"feature":2488,"cover":2664,"coverAlt":2665},[2438,2653,2654,2655,2419],"checklist","check-in","automation",[2657,2658,2659,2660,2661,2662,2663],"เช็คลิสต์ front office โรงแรม","เช็คลิสต์แผนกต้อนรับโรงแรม","hotel front desk checklist","เช็คลิสต์เช็คอินโรงแรม","hotel check in checklist","little hotelier unallocated reservations","hotel automation software","/images/blog/demo/en/automated-checks-lifecycle.webp","หน้า Automated Checks ใน Hotelier Tools: การทำงานของการตรวจสอบสี่ขั้นตอน ข้อความ Nothing runs any check yet ที่แนะนำให้เริ่มจาก Before they arrive และ The journey of a reservation ที่แสดงห้าช่วงของการจอง",{"path":2667,"title":2668,"description":2669,"meta":2670},"/blog/th/connect-chatgpt-to-little-hotelier","เชื่อมต่อ ChatGPT กับ Little Hotelier + 18 prompt","เชื่อมต่อ ChatGPT กับ Little Hotelier ด้วย developer mode และแอป MCP ดูว่าแพ็กเกจของคุณทำอะไรได้ พร้อม 18 prompt เรื่องแขกเข้าพัก การชำระเงิน และราคา",{"date":2360,"category":2361,"tags":2671,"keywords":2673,"feature":2376,"cover":2679,"coverAlt":2680},[2557,2363,2361,2672,2419],"prompts",[2674,2675,2676,2677,2441,2678,2561],"เชื่อมต่อ chatgpt กับ little hotelier","chatgpt mcp connector","chatgpt connectors mcp","chatgpt prompts สำหรับโรงแรม","chatgpt developer mode mcp","/images/blog/demo/en/mcp-oauth-consent.webp","หน้า Authorize MCP access ของ Hotelier Tools ที่ผู้ช่วย AI เปิดขึ้นตอนเชื่อมต่อ มีข้อความแจ้งโทเค็นอายุ 30 วัน และปุ่ม Deny กับ Allow access",{"path":2682,"title":2683,"description":2684,"meta":2685},"/blog/th/download-all-little-hotelier-invoices","ดาวน์โหลดใบแจ้งหนี้ Little Hotelier ทั้งหมดในครั้งเดียว","Little Hotelier รวมใบแจ้งหนี้ที่มีอยู่แล้วเป็นไฟล์ ZIP ได้ ดูวิธีทำ วิธีสร้างใบที่ยังขาด และส่ง ZIP กับ CSV ให้นักบัญชีทุกไตรมาส",{"date":2360,"category":2686,"tags":2687,"keywords":2692,"feature":2686,"cover":2700,"coverAlt":2701,"featured":1036},"invoicing",[2688,2689,2419,2690,2691],"invoices","accounting","quarterly tax","zip",[2693,2694,2695,2696,2697,2698,2699],"ดาวน์โหลดใบแจ้งหนี้ little hotelier","little hotelier invoice","little hotelier invoice report","ส่งออกใบแจ้งหนี้ little hotelier","ใบกำกับภาษี โรงแรม","ใบเสร็จ โรงแรม folio","little hotelier xero","/images/blog/demo/en/invoices-by-quarter.webp","หน้า Invoices ใน Hotelier Tools แสดงใบแจ้งหนี้ทั้งหมด 66 ใบ ไตรมาส Q4 และ Q3 2026 แต่ละไตรมาสมีปุ่ม Preview CSV และ ZIP และเปิดตารางของเดือนกันยายน 2026 ที่มีเลขที่ใบแจ้งหนี้ ชื่อแขก เลขประจำตัวผู้เสียภาษี วันเช็คเอาท์ และยอดรวม",{"path":2703,"title":2704,"description":2705,"meta":2706},"/blog/th/little-hotelier-alternatives","ทางเลือกแทน Little Hotelier ปี 2026: เทียบกันตรงๆ","Cloudbeds, Mews, Beds24, Lodgify, Smoobu หรือ Hostaway? เหมาะกับใคร คิดราคาอย่างไร มี API ไหม และเมื่อไรที่ใช้ Little Hotelier ต่อจะคุ้มกว่า",{"date":2360,"category":2414,"tags":2707,"keywords":2711,"cover":2719,"coverAlt":2720},[2558,2708,2709,2419,2710],"comparison","alternatives","cloudbeds",[2712,2713,2714,2715,2716,2717,2718],"little hotelier รีวิว","little hotelier ราคา","little hotelier vs siteminder","little hotelier vs cloudbeds","ทางเลือกแทน little hotelier","โปรแกรมโรงแรมขนาดเล็ก","ระบบ pms โรงแรม","/images/blog/demo/en/dashboard-overview.webp","หน้าแดชบอร์ดหลักของ Hotelier Tools สำหรับโรงแรมตัวอย่าง Hotel Demo Sol มีการ์ดแชต Open AI ข้อความแจ้งว่าช่องทางข้อความถึงแขก 2 ช่องทางต้องตรวจสอบ และการ์ดสถานะของ Little Hotelier, Booking.com, ความรู้ของ AI และเมืองที่ใช้ตั้งราคา",{"path":2722,"title":2723,"description":2724,"meta":2725},"/blog/th/hotel-do-not-rent-list","แบล็คลิสต์แขกโรงแรม ทำอย่างไรให้ถูกกฎหมาย","โรงแรมทำแบล็คลิสต์แขกได้ตาม GDPR หากบันทึกแต่ข้อเท็จจริง ควรบันทึกอะไร ห้ามเขียนอะไร และตั้งแจ้งเตือนใน Little Hotelier อย่างไร",{"date":2360,"category":2474,"tags":2726,"keywords":2730,"feature":2488,"cover":2738,"coverAlt":2739},[2727,2728,2574,2729,2419],"do not rent list","gdpr","watchlist",[2731,2732,2733,2734,2735,2736,2737],"แบล็คลิสต์ แขก โรงแรม","รายชื่อแขกที่ไม่รับอีก","do not rent list โรงแรม","hotel guest blacklist","do not rent list gdpr","บล็อกแขก booking.com","little hotelier guest notes","/images/blog/demo/en/automated-checks-do-not-rebook-list.webp","รายชื่อ Do-not-rebook ใน Hotelier Tools: การ์ดตรวจสอบรายคืน ผลตรวจการจองที่ตรงกันอย่างชัดเจนพร้อมเหตุผลที่เป็นข้อเท็จจริง และรายการหนึ่งที่มีปุ่ม Edit, Deactivate และ Delete",{"path":2741,"title":2742,"description":2743,"meta":2744},"/blog/th/connect-claude-to-little-hotelier","วิธีเชื่อมต่อ Claude กับ Little Hotelier ผ่าน MCP","เชื่อมต่อ Claude กับ Little Hotelier ด้วย custom connector วาง URL เดียว เข้าสู่ระบบ แล้วกดอนุญาต พร้อม prompt แรก วิธีคุมการแก้ไขข้อมูล และการแก้ปัญหา",{"date":2360,"category":2361,"tags":2745,"keywords":2747,"feature":2376,"cover":2377,"coverAlt":2752,"featured":1036},[190,2363,2361,2746,2419],"connectors",[2748,2373,2564,2749,2750,2751,2441],"เชื่อมต่อ claude กับ little hotelier","claude mcp connectors","claude desktop mcp setup","claude custom connector","คู่มือตั้งค่า MCP ของ Hotelier Tools พร้อมคำอธิบาย What is MCP? และแท็บ Claude Desktop ที่เลือกอยู่ แสดงขั้นตอนและโค้ดตั้งค่าที่มี URL ของ MCP server",{"path":2395,"title":5,"description":2356,"meta":2754},{"date":2360,"category":2361,"tags":2755,"keywords":2756,"feature":2376,"cover":2377,"coverAlt":2378},[2363,2364,385,2365,2366],[2368,2369,2370,2371,2372,2373,2374,2375],{"path":2758,"title":2759,"description":2760,"meta":2761},"/blog/th/whatsapp-little-hotelier","วิธีใช้ WhatsApp กับ Little Hotelier (ปี 2026)","Messaging hub ของ Little Hotelier ใช้ WhatsApp Business API อย่างเป็นทางการ เทียบกับแอป WhatsApp Business ฟรีและกล่องข้อความรวม พร้อมตัวอย่างเทมเพลต",{"date":2360,"category":2574,"tags":2762,"keywords":2766,"feature":2606,"cover":2774,"coverAlt":2775},[2763,2764,2419,2765,2596],"whatsapp","messaging","guest engagement",[2767,2768,2769,2770,2771,2772,2773],"whatsapp โรงแรม","line oa โรงแรม","little hotelier whatsapp","whatsapp business api สำหรับโรงแรม","whatsapp business app hotel","whatsapp templates hotel check-in","little hotelier messaging hub","/images/blog/demo/en/guest-inbox-ai-plan-late-arrival.webp","กล่องข้อความแขกของ Hotelier Tools ที่มีบทสนทนา WhatsApp จาก Ingrid Kowalski เรื่องการมาถึงช้า (ยืนยันตัวตนแล้ว เชื่อมกับการจองแล้ว) แผนของ AI ในสถานะฉบับร่างพร้อมคำตอบที่แก้ไขได้ และแผง Assistant ส่วนตัว",{"path":2777,"title":2778,"description":2779,"meta":2780},"/blog/th/send-invoice-to-guest-at-checkout","ส่งใบแจ้งหนี้/ใบเสร็จให้แขกอัตโนมัติตอนเช็คเอาท์","Booking.com ไม่ออกใบแจ้งหนี้ให้แขก ที่พักต้องออกเอง ส่งเองจาก Little Hotelier หรือให้ระบบส่งอีเมลให้อัตโนมัติเมื่อแขกเช็คเอาท์",{"date":2360,"category":2686,"tags":2781,"keywords":2783,"feature":2686,"cover":2789,"coverAlt":2790},[2688,2782,2476,2419,2655],"checkout",[2784,2785,2698,2697,2786,2787,2788],"ส่งใบแจ้งหนี้ให้แขก","ใบเสร็จ โรงแรม","ส่งใบกำกับภาษีให้ลูกค้า","ใบแจ้งหนี้ booking com","send invoice to guest little hotelier","/images/blog/demo/en/invoice-at-checkout.webp","หน้า Invoice on leave ใน Hotelier Tools: งาน Automatic invoicing at check-out ที่รันทุกวันเวลา 12:00 ช่วงวันที่พร้อม Search reservations และตารางการจองที่มีปุ่ม Auto-invoice ของแต่ละการเข้าพัก",{"path":2792,"title":2793,"description":2794,"meta":2795},"/blog/th/export-little-hotelier-reservations-excel","ส่งออกข้อมูลการจอง Little Hotelier เป็น Excel","Little Hotelier ปิดบังข้อมูลแขก 180 วันหลังเช็คเอาท์ ส่งออกการจองและรายชื่อแขกเป็น Excel หรือ Google Sheets ไว้ตั้งแต่ตอนนี้ ทำเองหรือตั้งให้อัตโนมัติก็ได้",{"date":2360,"category":2366,"tags":2796,"keywords":2801,"feature":2376,"cover":2549,"coverAlt":2809},[2797,2798,2799,2800,2419],"export","excel","google sheets","reports",[2802,2803,2804,2805,2806,2807,2808],"ส่งออกข้อมูลการจอง little hotelier เป็น excel","โปรแกรม โรงแรม excel ฟรี","little hotelier reports","little hotelier csv","รายชื่อแขกโรงแรม excel","little hotelier export excel","ข้อมูลแขกถูกปิดบัง little hotelier","พอร์ทัลนักพัฒนาของ Hotelier Tools มีการ์ด REST API และ Swagger, MCP setup, API keys และ LH methods เหนือตัวอย่างการยืนยันตัวตนด้วย API key",{"path":2811,"title":2812,"description":2813,"meta":2814},"/blog/th/little-hotelier-chrome-extensions","ส่วนขยาย Chrome ฟรีที่ทำให้ Little Hotelier เร็วขึ้น","สคริปต์ฟรีสำหรับ Little Hotelier: ราคาในปฏิทิน ตารางกว้างขึ้น ประเมินค่าคอมมิชชั่น Booking.com และพิมพ์ใบแจ้งหนี้คลิกเดียว พร้อมวิธีติดตั้งอย่างปลอดภัย",{"date":2360,"category":2414,"tags":2815,"keywords":2819,"cover":2826,"coverAlt":2827},[2816,2817,2418,2419,2818],"chrome extension","tampermonkey","productivity",[2820,2821,2822,2823,2824,2825],"ส่วนขยาย chrome little hotelier","little hotelier chrome extension","tampermonkey scripts","userscript chrome","little hotelier calendar prices","little hotelier booking.com commission","/images/scripts/prices-display/to.png","ปฏิทินของ Little Hotelier (หน้าจอภาษาสเปน) ที่แสดงราคาต่อคืนใต้ประเภทห้องทุกแถว ซึ่งเพิ่มเข้ามาโดยสคริปต์ Prices Display",1791141241490]