[{"data":1,"prerenderedAt":2481},["ShallowReactive",2],{"blogs-2026-02-08-glm-4-7":3,"next-blog-2026-02-08-glm-4-7":97,"prev-blog-2026-02-08-glm-4-7":97,"recommended-blog-2026-02-08-glm-4-7":106,"related-blog-2026-02-08-glm-4-7":107},{"id":4,"title":5,"body":6,"date":91,"description":92,"draft":93,"extension":94,"meta":95,"navigation":96,"next":97,"ogTitle":98,"path":99,"pin":93,"prev":97,"recommends":97,"seo":100,"sitemap":101,"stem":102,"tags":103,"__hash__":105},"content/blogs/2026-02-08-glm-4-7.md","GLM-4.7 มาแล้ว! โมเดลใหม่จาก Zhipu AI ที่เคลมว่าแรงแซง SOTA ทุกค่าย",{"type":7,"value":8,"toc":84},"minimark",[9,22,29,34,62,65,68],[10,11,12,13,17,18,21],"p",{},"ช่วงนี้วงการ LLM แข่งกันดุเดือดมาก ล่าสุดทาง ",[14,15,16],"strong",{},"Zhipu AI"," ก็ไม่ยอมน้อยหน้า ปล่อยตัว ",[14,19,20],{},"GLM-4.7"," ออกมาท้าชนรุ่นพี่ในตลาดแบบไม่เกรงใจใคร",[10,23,24,25,28],{},"เท่าที่ลองส่องดูใน Blog และ Benchmark ที่เขาปล่อยมา รอบนี้เขาเน้นเรื่อง ",[14,26,27],{},"\"Super-high Intelligence\""," หรือความฉลาดในการแก้ปัญหาซับซ้อน (Complex Reasoning) แบบก้าวกระโดดครับ",[30,31,33],"h3",{"id":32},"มีอะไรน่าสนใจบ้าง","มีอะไรน่าสนใจบ้าง?",[35,36,37,44,50,56],"ul",{},[38,39,40,43],"li",{},[14,41,42],{},"Reasoning เทพขึ้น:"," ตัวนี้ถูกเทรนมาให้จัดการกับ Logic ยากๆ ได้ดีขึ้นมาก ฟีลคล้ายๆ กับพวกโมเดลตระกูล o1/Reasoning ของฝั่งตะวันตก",[38,45,46,49],{},[14,47,48],{},"Coding เก่งขึ้น:"," สำหรับชาว Dev อย่างเรา นี่คือ Key Feature เลย GLM-4.7 เข้าใจ Context ของ Codebase และช่วย Debug หรือ Refactor ได้แม่นยำกว่ารุ่น 4.0 เดิมเยอะ",[38,51,52,55],{},[14,53,54],{},"Universal Capability:"," ทำได้รอบด้านทั้ง Text, Code, Vision และ Function Calling ที่เสถียรขึ้นมาก เหมาะเอาไปต่อกับ Agent สุดๆ",[38,57,58,61],{},[14,59,60],{},"Cost-effective:"," จุดขายของค่ายนี้คือความคุ้มค่า ประสิทธิภาพระดับ SOTA (State-of-the-Art) แต่ราคา API มักจะเป็นมิตรกว่าค่ายใหญ่ๆ ฝั่ง US",[30,63,64],{"id":64},"ความรู้สึกส่วนตัว",[10,66,67],{},"ส่วนตัวผมเชียร์ค่าย GLM มาสักพักเพราะชอบความ \"Open\" และความเร็วในการตอบสนอง รอบนี้ถือว่าอัปเกรดมาน่ากลัวมาก ใครที่ทำพวก AI Agent หรือกำลังหา Model ทางเลือกที่ฉลาดแต่ประหยัด Token แนะนำให้ลองไปต่อ API เล่นดูครับ",[69,70,71],"blockquote",{},[10,72,73,76,77],{},[14,74,75],{},"อ่านรายละเอียดเต็มๆ:"," ",[78,79,83],"a",{"href":80,"rel":81},"https://z.ai/blog/glm-4.7",[82],"nofollow","Zhipu AI Blog - GLM-4.7",{"title":85,"searchDepth":86,"depth":86,"links":87},"",2,[88,90],{"id":32,"depth":89,"text":33},3,{"id":64,"depth":89,"text":64},"2026-02-08T00:00:00.000Z","สรุปจุดเด่น GLM-4.7 โมเดลล่าสุดจาก Zhipu AI ที่ยกระดับ Reasoning และ Coding ไปอีกขั้นในราคาที่จับต้องได้",false,"md",{},true,null,"GLM-4.7 Review","/blogs/2026-02-08-glm-4-7",{"title":5,"description":92},{"loc":99},"blogs/2026-02-08-glm-4-7",[104],"AI","AC_8BP-8hQk1KsEOi69ltCdyDb6tVVUEaAS1afAqrpQ",[],[108,954,1733,1822,2048,2147,2275,2394],{"id":109,"title":110,"body":111,"date":941,"description":942,"draft":93,"extension":94,"meta":943,"navigation":96,"next":944,"ogTitle":945,"path":946,"pin":93,"prev":97,"recommends":947,"seo":949,"sitemap":950,"stem":951,"tags":952,"__hash__":953},"content/blogs/2025-04-24-n8n-part-1.md","N8N วิธีการ Setup | Part 1",{"type":7,"value":112,"toc":930},[113,118,121,124,128,147,150,154,188,192,205,514,525,546,549,581,598,602,609,614,783,786,851,854,861,867,870,875,878,882,888,891,896,907,912,919,926],[114,115,117],"h2",{"id":116},"n8n-คืออะไร","N8N คืออะไร",[10,119,120],{},"คือ Platform สำหรับทำ workflow automation หรือพูดให้เข้าใจง่าย ๆ ก็คือพวกระบบอัตโนมัติต่าง ๆ นั้นแหละครับ ซึ่งจุดเด่นของเครื่องมือตัวนี้คือเป็น Open Source มีทั้ง version cloud และ self-hosted ให้ใช้งานสำหรับคนที่เป็นห่วงเรื่องความปลอดภัยของข้อมูลครับ อีกทั้งยังเป็น platform ที่อยู่ในรูปแบบของ Low Code หรือ No Code เลยก็ได้ (ในบาง workflows)",[10,122,123],{},"ซึ่งผมเองในฐานะของคนที่ชอบเขียนโปรแกรมอยู่แล้ว ต้องบอกเลยว่า \"ของดีย์\" ครับ ทำให้หลาย ๆ ไอเดียสามารถทำออกมาได้เลย ลดเวลาในการพัฒนาลงได้เยอะครับ ผมเองมองว่าการมีสกิล workflows ติดตัวไว้ถือเป็นข้อได้เปรียบนึงเลยครับ โดยซีรีย์นี้ตั้งใจว่าจะทำออกมาแบ่งเป็น EP ย่อย ๆ ครับแชร์ทริคต่าง ๆ ที่ได้ศึกษามา ยังไงก็ฝากติดตตามด้วยนะครับ เย่ ~",[114,125,127],{"id":126},"requirements","Requirements",[35,129,130,137,144],{},[38,131,132,133],{},"Docker version 25.x.x ขึ้นไป ",[134,135,136],"code",{},"docker --version",[38,138,139,140,143],{},"Docker Compose version 2.24.x ขึ้นไป (",[134,141,142],{},"docker compose version",")",[38,145,146],{},"ความรู้พื้นฐาน (มาก ๆ) ของ docker cli",[114,148,149],{"id":149},"วิธีการติดตั้ง",[30,151,153],{"id":152},"_1-สร้าง-directory-และ-docker-compose-file-สำหรับทดสอบ","1. สร้าง Directory และ docker compose file สำหรับทดสอบ",[155,156,160],"pre",{"className":157,"code":158,"language":159,"meta":85,"style":85},"language-sh shiki shiki-themes material-theme-lighter one-dark-pro github-dark","mkdir n8n-labs\n\ncd n8n-labs\n","sh",[134,161,162,175,180],{"__ignoreMap":85},[163,164,167,171],"span",{"class":165,"line":166},"line",1,[163,168,170],{"class":169},"sosa_","mkdir",[163,172,174],{"class":173},"sAlJX"," n8n-labs\n",[163,176,177],{"class":165,"line":86},[163,178,179],{"emptyLinePlaceholder":96},"\n",[163,181,182,186],{"class":165,"line":89},[163,183,185],{"class":184},"sJZfL","cd",[163,187,174],{"class":173},[30,189,191],{"id":190},"_2-สร้าง-docker-compose-file","2. สร้าง docker compose file",[155,193,195],{"className":157,"code":194,"language":159,"meta":85,"style":85},"nano docker-compose.yml\n",[134,196,197],{"__ignoreMap":85},[163,198,199,202],{"class":165,"line":166},[163,200,201],{"class":169},"nano",[163,203,204],{"class":173}," docker-compose.yml\n",[155,206,210],{"className":207,"code":208,"language":209,"meta":85,"style":85},"language-yml shiki shiki-themes material-theme-lighter one-dark-pro github-dark","services:\n  n8n:\n    image: docker.n8n.io/n8nio/n8n\n    restart: unless-stopped\n    ports:\n      - '127.0.0.1:5678:5678'\n    volumes:\n      - n8n_data:/home/node/.n8n\n      - n8n_local_files:/files\n    environment:\n      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}\n      - N8N_PORT=5678\n      - N8N_PROTOCOL=https\n      - NODE_ENV=production\n      - WEBHOOK_URL=https://${WEBHOOK_SUBDOMAIN}.${DOMAIN_NAME}/\n      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}\n      - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true\n\n  pg-vector:\n    image: pgvector/pgvector:pg17\n    restart: unless-stopped\n    environment:\n      POSTGRES_USER: \u003Cusername>\n      POSTGRES_PASSWORD: \u003Cpassword>\n      POSTGRES_DB: n8n-pgvector\n    ports:\n      - '127.0.0.1:5432:5432'\n    volumes:\n      - db-pgvector-data:/var/lib/postgresql/data\n\nvolumes:\n  n8n_data:\n  n8n_local_files:\n  db-data:\n  db-pgvector-data:\n","yml",[134,211,212,222,229,240,251,259,275,283,291,299,307,315,323,331,339,347,355,363,368,376,386,395,402,413,424,435,442,454,461,469,474,482,490,498,506],{"__ignoreMap":85},[163,213,214,218],{"class":165,"line":166},[163,215,217],{"class":216},"s0Prt","services",[163,219,221],{"class":220},"stlKB",":\n",[163,223,224,227],{"class":165,"line":86},[163,225,226],{"class":216},"  n8n",[163,228,221],{"class":220},[163,230,231,234,237],{"class":165,"line":89},[163,232,233],{"class":216},"    image",[163,235,236],{"class":220},":",[163,238,239],{"class":173}," docker.n8n.io/n8nio/n8n\n",[163,241,243,246,248],{"class":165,"line":242},4,[163,244,245],{"class":216},"    restart",[163,247,236],{"class":220},[163,249,250],{"class":173}," unless-stopped\n",[163,252,254,257],{"class":165,"line":253},5,[163,255,256],{"class":216},"    ports",[163,258,221],{"class":220},[163,260,262,265,269,272],{"class":165,"line":261},6,[163,263,264],{"class":220},"      -",[163,266,268],{"class":267},"snfNA"," '",[163,270,271],{"class":173},"127.0.0.1:5678:5678",[163,273,274],{"class":267},"'\n",[163,276,278,281],{"class":165,"line":277},7,[163,279,280],{"class":216},"    volumes",[163,282,221],{"class":220},[163,284,286,288],{"class":165,"line":285},8,[163,287,264],{"class":220},[163,289,290],{"class":173}," n8n_data:/home/node/.n8n\n",[163,292,294,296],{"class":165,"line":293},9,[163,295,264],{"class":220},[163,297,298],{"class":173}," n8n_local_files:/files\n",[163,300,302,305],{"class":165,"line":301},10,[163,303,304],{"class":216},"    environment",[163,306,221],{"class":220},[163,308,310,312],{"class":165,"line":309},11,[163,311,264],{"class":220},[163,313,314],{"class":173}," N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}\n",[163,316,318,320],{"class":165,"line":317},12,[163,319,264],{"class":220},[163,321,322],{"class":173}," N8N_PORT=5678\n",[163,324,326,328],{"class":165,"line":325},13,[163,327,264],{"class":220},[163,329,330],{"class":173}," N8N_PROTOCOL=https\n",[163,332,334,336],{"class":165,"line":333},14,[163,335,264],{"class":220},[163,337,338],{"class":173}," NODE_ENV=production\n",[163,340,342,344],{"class":165,"line":341},15,[163,343,264],{"class":220},[163,345,346],{"class":173}," WEBHOOK_URL=https://${WEBHOOK_SUBDOMAIN}.${DOMAIN_NAME}/\n",[163,348,350,352],{"class":165,"line":349},16,[163,351,264],{"class":220},[163,353,354],{"class":173}," GENERIC_TIMEZONE=${GENERIC_TIMEZONE}\n",[163,356,358,360],{"class":165,"line":357},17,[163,359,264],{"class":220},[163,361,362],{"class":173}," N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true\n",[163,364,366],{"class":165,"line":365},18,[163,367,179],{"emptyLinePlaceholder":96},[163,369,371,374],{"class":165,"line":370},19,[163,372,373],{"class":216},"  pg-vector",[163,375,221],{"class":220},[163,377,379,381,383],{"class":165,"line":378},20,[163,380,233],{"class":216},[163,382,236],{"class":220},[163,384,385],{"class":173}," pgvector/pgvector:pg17\n",[163,387,389,391,393],{"class":165,"line":388},21,[163,390,245],{"class":216},[163,392,236],{"class":220},[163,394,250],{"class":173},[163,396,398,400],{"class":165,"line":397},22,[163,399,304],{"class":216},[163,401,221],{"class":220},[163,403,405,408,410],{"class":165,"line":404},23,[163,406,407],{"class":216},"      POSTGRES_USER",[163,409,236],{"class":220},[163,411,412],{"class":173}," \u003Cusername>\n",[163,414,416,419,421],{"class":165,"line":415},24,[163,417,418],{"class":216},"      POSTGRES_PASSWORD",[163,420,236],{"class":220},[163,422,423],{"class":173}," \u003Cpassword>\n",[163,425,427,430,432],{"class":165,"line":426},25,[163,428,429],{"class":216},"      POSTGRES_DB",[163,431,236],{"class":220},[163,433,434],{"class":173}," n8n-pgvector\n",[163,436,438,440],{"class":165,"line":437},26,[163,439,256],{"class":216},[163,441,221],{"class":220},[163,443,445,447,449,452],{"class":165,"line":444},27,[163,446,264],{"class":220},[163,448,268],{"class":267},[163,450,451],{"class":173},"127.0.0.1:5432:5432",[163,453,274],{"class":267},[163,455,457,459],{"class":165,"line":456},28,[163,458,280],{"class":216},[163,460,221],{"class":220},[163,462,464,466],{"class":165,"line":463},29,[163,465,264],{"class":220},[163,467,468],{"class":173}," db-pgvector-data:/var/lib/postgresql/data\n",[163,470,472],{"class":165,"line":471},30,[163,473,179],{"emptyLinePlaceholder":96},[163,475,477,480],{"class":165,"line":476},31,[163,478,479],{"class":216},"volumes",[163,481,221],{"class":220},[163,483,485,488],{"class":165,"line":484},32,[163,486,487],{"class":216},"  n8n_data",[163,489,221],{"class":220},[163,491,493,496],{"class":165,"line":492},33,[163,494,495],{"class":216},"  n8n_local_files",[163,497,221],{"class":220},[163,499,501,504],{"class":165,"line":500},34,[163,502,503],{"class":216},"  db-data",[163,505,221],{"class":220},[163,507,509,512],{"class":165,"line":508},35,[163,510,511],{"class":216},"  db-pgvector-data",[163,513,221],{"class":220},[10,515,516,517,520,521,524],{},"โดยในส่วนของ ",[134,518,519],{},"POSTGRES_USER"," และ ",[134,522,523],{},"POSTGRES_PASSWORD"," ให้แก้ไขเป็นค่าที่ปลอดภัยได้เลย หรือจะ generate ด้วย openssl ก็ได้เช่นกันครับ",[155,526,528],{"className":157,"code":527,"language":159,"meta":85,"style":85},"openssl rand -base64 32\n",[134,529,530],{"__ignoreMap":85},[163,531,532,535,538,542],{"class":165,"line":166},[163,533,534],{"class":169},"openssl",[163,536,537],{"class":173}," rand",[163,539,541],{"class":540},"sEoV_"," -base64",[163,543,545],{"class":544},"snOyU"," 32\n",[10,547,548],{},"หน้าตาหลังจากแก้ไขจะเป็นประมาณนี้",[155,550,552],{"className":207,"code":551,"language":209,"meta":85,"style":85},"environment:\n  POSTGRES_USER: username\n  POSTGRES_PASSWORD: VygpX7KBx2LsLTLoIk84YPV+gBsVZzgfMqVm+Kv0ltM=\n",[134,553,554,561,571],{"__ignoreMap":85},[163,555,556,559],{"class":165,"line":166},[163,557,558],{"class":216},"environment",[163,560,221],{"class":220},[163,562,563,566,568],{"class":165,"line":86},[163,564,565],{"class":216},"  POSTGRES_USER",[163,567,236],{"class":220},[163,569,570],{"class":173}," username\n",[163,572,573,576,578],{"class":165,"line":89},[163,574,575],{"class":216},"  POSTGRES_PASSWORD",[163,577,236],{"class":220},[163,579,580],{"class":173}," VygpX7KBx2LsLTLoIk84YPV+gBsVZzgfMqVm+Kv0ltM=\n",[10,582,583,584,586,587,590,591,590,594,597],{},"จากนั้น (หากใช้ ",[134,585,201],{},") แก้ไขไฟล์ให้กด ",[134,588,589],{},"CTRL + X"," -> ",[134,592,593],{},"Y",[134,595,596],{},"Enter"," จะเป็นการบันทึกและออกจากไฟล์",[30,599,601],{"id":600},"_3-กำหนดค่าให้-env","3. กำหนดค่าให้ .env",[10,603,604,605,608],{},"สร้างไฟล์ ",[134,606,607],{},".env"," และทำการแก้ไขค่าต่าง ๆ",[69,610,611],{},[10,612,613],{},"DOMAIN_NAME, SUBDOMAIN, WEBHOOK_SUBDOMAIN ในส่วนนี้อาจจะปล่อยเป็นค่า default แบบนี้ไปก่อนครับ",[155,615,617],{"className":157,"code":616,"language":159,"meta":85,"style":85},"NODE_ENV=\"production\"\nN8N_PROTOCOL=\"http\" # or https\nN8N_DIAGNOSTICS_ENABLED=false\nGENERIC_TIMEZONE=\"Asia/Bangkok\"\nDOMAIN_NAME=localhost\nSUBDOMAIN=\nWEBHOOK_SUBDOMAIN=\nN8N_RUNNERS_ENABLED=true\n\nEXECUTIONS_DATA_PRUNE=true\nEXECUTIONS_DATA_MAX_AGE=168\nEXECUTIONS_DATA_PRUNE_MAX_COUNT=50000\n\nPG_USER=\u003Cusername>\nPG_PASSWORD=\u003Cpassword>\n",[134,618,619,638,656,666,680,690,698,705,715,719,728,738,748,752,769],{"__ignoreMap":85},[163,620,621,625,629,632,635],{"class":165,"line":166},[163,622,624],{"class":623},"sLHrO","NODE_ENV",[163,626,628],{"class":627},"sMTEB","=",[163,630,631],{"class":267},"\"",[163,633,634],{"class":173},"production",[163,636,637],{"class":267},"\"\n",[163,639,640,643,645,647,650,652],{"class":165,"line":86},[163,641,642],{"class":623},"N8N_PROTOCOL",[163,644,628],{"class":627},[163,646,631],{"class":267},[163,648,649],{"class":173},"http",[163,651,631],{"class":267},[163,653,655],{"class":654},"sDKbk"," # or https\n",[163,657,658,661,663],{"class":165,"line":89},[163,659,660],{"class":623},"N8N_DIAGNOSTICS_ENABLED",[163,662,628],{"class":627},[163,664,665],{"class":173},"false\n",[163,667,668,671,673,675,678],{"class":165,"line":242},[163,669,670],{"class":623},"GENERIC_TIMEZONE",[163,672,628],{"class":627},[163,674,631],{"class":267},[163,676,677],{"class":173},"Asia/Bangkok",[163,679,637],{"class":267},[163,681,682,685,687],{"class":165,"line":253},[163,683,684],{"class":623},"DOMAIN_NAME",[163,686,628],{"class":627},[163,688,689],{"class":173},"localhost\n",[163,691,692,695],{"class":165,"line":261},[163,693,694],{"class":623},"SUBDOMAIN",[163,696,697],{"class":627},"=\n",[163,699,700,703],{"class":165,"line":277},[163,701,702],{"class":623},"WEBHOOK_SUBDOMAIN",[163,704,697],{"class":627},[163,706,707,710,712],{"class":165,"line":285},[163,708,709],{"class":623},"N8N_RUNNERS_ENABLED",[163,711,628],{"class":627},[163,713,714],{"class":173},"true\n",[163,716,717],{"class":165,"line":293},[163,718,179],{"emptyLinePlaceholder":96},[163,720,721,724,726],{"class":165,"line":301},[163,722,723],{"class":623},"EXECUTIONS_DATA_PRUNE",[163,725,628],{"class":627},[163,727,714],{"class":173},[163,729,730,733,735],{"class":165,"line":309},[163,731,732],{"class":623},"EXECUTIONS_DATA_MAX_AGE",[163,734,628],{"class":627},[163,736,737],{"class":173},"168\n",[163,739,740,743,745],{"class":165,"line":317},[163,741,742],{"class":623},"EXECUTIONS_DATA_PRUNE_MAX_COUNT",[163,744,628],{"class":627},[163,746,747],{"class":173},"50000\n",[163,749,750],{"class":165,"line":325},[163,751,179],{"emptyLinePlaceholder":96},[163,753,754,757,759,763,766],{"class":165,"line":333},[163,755,756],{"class":623},"PG_USER",[163,758,628],{"class":627},[163,760,762],{"class":761},"sbGrh","\u003C",[163,764,765],{"class":173},"username",[163,767,768],{"class":761},">\n",[163,770,771,774,776,778,781],{"class":165,"line":341},[163,772,773],{"class":623},"PG_PASSWORD",[163,775,628],{"class":627},[163,777,762],{"class":761},[163,779,780],{"class":173},"password",[163,782,768],{"class":761},[10,784,785],{},"จากนั้นสามารถ start docker compose ได้เลยด้วยคำสั่ง",[155,787,789],{"className":157,"code":788,"language":159,"meta":85,"style":85},"docker compose pull\n\n# [+] Pulling 15/29\n# ⠧ pg-vector [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀] Pulling                              13.8s\n# ⠧ n8n [⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀] Pulling                                         13.8s\n\ndocker compose --env-file .env up --build -d\n# อย่าลืม --env-file flag นะครับ\n",[134,790,791,802,806,811,816,821,825,846],{"__ignoreMap":85},[163,792,793,796,799],{"class":165,"line":166},[163,794,795],{"class":169},"docker",[163,797,798],{"class":173}," compose",[163,800,801],{"class":173}," pull\n",[163,803,804],{"class":165,"line":86},[163,805,179],{"emptyLinePlaceholder":96},[163,807,808],{"class":165,"line":89},[163,809,810],{"class":654},"# [+] Pulling 15/29\n",[163,812,813],{"class":165,"line":242},[163,814,815],{"class":654},"# ⠧ pg-vector [⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⣿⠀] Pulling                              13.8s\n",[163,817,818],{"class":165,"line":253},[163,819,820],{"class":654},"# ⠧ n8n [⣿⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀] Pulling                                         13.8s\n",[163,822,823],{"class":165,"line":261},[163,824,179],{"emptyLinePlaceholder":96},[163,826,827,829,831,834,837,840,843],{"class":165,"line":277},[163,828,795],{"class":169},[163,830,798],{"class":173},[163,832,833],{"class":540}," --env-file",[163,835,836],{"class":173}," .env",[163,838,839],{"class":173}," up",[163,841,842],{"class":540}," --build",[163,844,845],{"class":540}," -d\n",[163,847,848],{"class":165,"line":285},[163,849,850],{"class":654},"# อย่าลืม --env-file flag นะครับ\n",[30,852,853],{"id":853},"ทดสอบเปิดเข้าใช้งาน",[10,855,856,857,860],{},"จากนั้นเปิด browser แล้วไปที่ ",[134,858,859],{},"http://localhost:5678/setup"," ได้เลยครับ",[10,862,863],{},[864,865],"img",{"alt":85,"src":866},"/images/2025-04-24-n8n-part-1/n8n-setup.png",[10,868,869],{},"โดยในขั้นตอนนี้เป็น optional ครับ แต่แนะนำให้เอากดรับมาครับ",[10,871,872],{},[864,873],{"alt":85,"src":874},"/images/2025-04-24-n8n-part-1/paid-features-for-free.png",[10,876,877],{},"เรียบร้อยครับ เพียงแค่นี้เราก็จะได้ N8N version self-hosted มาใช้งานแล้วครับ",[30,879,881],{"id":880},"_4-ทดสอบเพิ่ม-pgvector-เข้าไปยัง-n8n","4. ทดสอบเพิ่ม PGVector เข้าไปยัง N8N",[10,883,884,885],{},"ไปที่เมนู Credential\n",[864,886],{"alt":85,"src":887},"/images/2025-04-24-n8n-part-1/n8n-credential-1.png",[10,889,890],{},"เลือกเป็น Postgres",[10,892,893],{},[864,894],{"alt":85,"src":895},"/images/2025-04-24-n8n-part-1/n8n-credential-2.png",[10,897,898,899,902,903,906],{},"กรอกข้อมูล โดยผมจะทำการแก้ชื่อด้านซ้ายบนให้เป็น ",[134,900,901],{},"PG-Vector"," นะครับ ในช่องของ database ถ้า setup ตามที่ผมแนะนำไว้ก็สามารถใส่เป็น",[134,904,905],{},"pg-vector"," (service name ใน docker-compose) และใส่ username, password จากไฟล์ .env และ Database เอามาจากไฟล์ docker-compose ได้เลยครับ",[10,908,909],{},[864,910],{"alt":85,"src":911},"/images/2025-04-24-n8n-part-1/n8n-credential-3.png",[10,913,914,915,918],{},"ถ้ากด Save แล้วขึ้น ",[134,916,917],{},"Connection Tested Successfully"," แสดงว่าใช้งานได้แล้วครับ โดยตัว PG Vector อันนี้จะเป็นตัว Postgres ที่มีการเปิดใช้งาน extension vector ซึ่งเดี๋ยวเราจะเอามาใช้ในการเล่นเกี่ยว LLM ต่อไปนะครับ",[10,920,921,922],{},"สามารถอ่าน Part 2 ต่อได้เลย\n",[78,923,925],{"href":924},"/blogs/n8n-part-2","N8N Part 2",[927,928,929],"style",{},"html pre.shiki code .sosa_, html code.shiki .sosa_{--shiki-light:#E2931D;--shiki-default:#61AFEF;--shiki-dark:#B392F0}html pre.shiki code .sAlJX, html code.shiki .sAlJX{--shiki-light:#91B859;--shiki-default:#98C379;--shiki-dark:#9ECBFF}html pre.shiki code .sJZfL, html code.shiki .sJZfL{--shiki-light:#6182B8;--shiki-default:#56B6C2;--shiki-dark:#79B8FF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sEoV_, html code.shiki .sEoV_{--shiki-light:#91B859;--shiki-default:#D19A66;--shiki-dark:#79B8FF}html pre.shiki code .snOyU, html code.shiki .snOyU{--shiki-light:#F76D47;--shiki-default:#D19A66;--shiki-dark:#79B8FF}html pre.shiki code .sLHrO, html code.shiki .sLHrO{--shiki-light:#90A4AE;--shiki-default:#E06C75;--shiki-dark:#E1E4E8}html pre.shiki code .sMTEB, html code.shiki .sMTEB{--shiki-light:#39ADB5;--shiki-default:#56B6C2;--shiki-dark:#F97583}html pre.shiki code .snfNA, html code.shiki .snfNA{--shiki-light:#39ADB5;--shiki-default:#98C379;--shiki-dark:#9ECBFF}html pre.shiki code .sDKbk, html code.shiki .sDKbk{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#7F848E;--shiki-default-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sbGrh, html code.shiki .sbGrh{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#F97583}html pre.shiki code .s0Prt, html code.shiki .s0Prt{--shiki-light:#E53935;--shiki-default:#E06C75;--shiki-dark:#85E89D}html pre.shiki code .stlKB, html code.shiki .stlKB{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#E1E4E8}",{"title":85,"searchDepth":86,"depth":86,"links":931},[932,933,934],{"id":116,"depth":86,"text":117},{"id":126,"depth":86,"text":127},{"id":149,"depth":86,"text":149,"children":935},[936,937,938,939,940],{"id":152,"depth":89,"text":153},{"id":190,"depth":89,"text":191},{"id":600,"depth":89,"text":601},{"id":853,"depth":89,"text":853},{"id":880,"depth":89,"text":881},"2025-04-24T00:00:00.000Z","วิธีการ Self-hosted N8N ด้วย docker อย่างง่าย",{},"n8n-part-2","Awesome N8N","/blogs/2025-04-24-n8n-part-1",[948],"n8n-with-telegram-notify",{"title":110,"description":942},{"loc":946},"blogs/2025-04-24-n8n-part-1",[104],"uHK9G_HejrNQRXrEpuR0_UaXMpKPTLEP2XjoWzHpuo8",{"id":955,"title":956,"body":957,"date":1722,"description":1723,"draft":93,"extension":94,"meta":1724,"navigation":96,"next":97,"ogTitle":945,"path":1725,"pin":93,"prev":1726,"recommends":1727,"seo":1728,"sitemap":1729,"stem":1730,"tags":1731,"__hash__":1732},"content/blogs/2025-04-28-n8n-part-2.md","N8N วิธีการการใช้งานเบื้องต้น | Part 2",{"type":7,"value":958,"toc":1716},[959,966,969,979,983,987,992,995,1000,1003,1007,1010,1021,1026,1029,1032,1037,1040,1045,1048,1053,1056,1077,1082,1089,1094,1097,1102,1105,1110,1113,1183,1186,1238,1241,1247,1332,1335,1340,1343,1653,1656,1661,1664,1670,1677,1682,1685,1690,1696,1702,1705,1710,1713],[10,960,961,962],{},"สำหรับใครที่ยังไม่ได้อ่าน Part 1 นะครับ สามารถไปอ่านได้ที่ ",[78,963,965],{"href":964},"/blogs/n8n-part-1","N8N Part 1",[10,967,968],{},"โดยวันนี้ผมจะพามาลองเล่น workflow ในแบบ basic ๆ กันก่อนนะครับ เผื่อให้สามารถเข้าใจการทำงานในเบื้องต้นได้",[10,970,971,972,975,976],{},"โดยโจทย์ในครั้งนี้คือ ",[14,973,974],{},"\"ค้นหา URLs ต่าง ๆ ของ domain ที่ต้องการโดยใช้ Wayback machine\""," ถ้านึกภาพไม่ออกคือการทำแบบนี้แหละครับ แต่เราจะทำให้มันเป็น workflow เพื่อนำไปต่อยอดในอนาคตนะครับ\n",[864,977],{"alt":85,"src":978},"/images/2025-04-28-n8n-part-2/image-4.png",[114,980,982],{"id":981},"เริ่มต้นการสร้าง-workflows","เริ่มต้นการสร้าง workflows",[30,984,986],{"id":985},"ทำการสร้าง-workflow-ใหม่โดยการกดที่ปุ่มขวาบน-create-workflow-ได้เลยครับ","ทำการสร้าง workflow ใหม่โดยการกดที่ปุ่มขวาบน (\"Create Workflow\") ได้เลยครับ",[10,988,989],{},[864,990],{"alt":85,"src":991},"/images/2025-04-28-n8n-part-2/image.png",[10,993,994],{},"จากนั้นจะพบกับ UI หน้าตาโล่ง ๆ แบบนี้",[10,996,997],{},[864,998],{"alt":85,"src":999},"/images/2025-04-28-n8n-part-2/image-1.png",[10,1001,1002],{},"โดยเมื่อกดปุ่ม \"+\" กลางจอหรือมุมขวาบนแล้วจะพบกับ Trigger Node ครับ (ภายใน N8N เราจะเรียกเครื่องมือแต่ละตัวว่า Node นะครับ)",[30,1004,1006],{"id":1005},"อธิบายคร่าว-ๆ-ของ-trigger-node-ประมาณนี้ครับ","อธิบายคร่าว ๆ ของ Trigger Node ประมาณนี้ครับ",[10,1008,1009],{},"Trigger Node คือจุดเริ่มต้นของ workflow ซึ่งสามารถทำได้หลายวิธีด้วยกันขึ้นอยู่กับจุดประสงค์ของ workflow นั้น ๆ ครับ เช่นหากเป็นประเภท Scheduler จะใช้ประเภท \"On a scheduler\" หากเป็นประเภท Webhook ที่รอรับสัญญาณจากแหล่งอื่นจะใช้เป็น \"On webhook call\" ครับ ยังมีอีกหลาย ๆ ตัวที่น่าสนใจเช่น",[35,1011,1012,1015,1018],{},[38,1013,1014],{},"On chat message: Node นี้จะเป็นการสร้างหน้า chat ui ขึ้นมาให้ครับ เหมาะสำหรับการนำมาใช้งานกับ AI Agent นั้นเอง",[38,1016,1017],{},"On app event: Node นี้จะเป็นการรับ trigger จาก application อื่น ๆ ที่นำมาเชื่อมต่อครับ เช่น notion, telegram, airtable ซึ่งจำเป็นต้องเชื่อมต่อกันให้เรียบร้อยก่อนใช้งาน",[38,1019,1020],{},"Trigger manual: Node นี้เป็นการสร้างปุ่มขึ้นมาให้กดครับ เหมาะสำหรับการใช้งานที่จำเป็นต้องกรอกข้อมูลก่อน หรือ ไม่ได้อยากทำให้มี external trigger มาครับ",[10,1022,1023],{},[864,1024],{"alt":85,"src":1025},"/images/2025-04-28-n8n-part-2/image-2.png",[10,1027,1028],{},"ซึ่งอันนี้เป็นแค่เพียงเบื้องต้นนะครับ จริง ๆ แล้ว N8N ยังสามารถทำอะไรได้มากกว่านั้นอีก (มากกกก) ไปกันต่อเลยครับ",[10,1030,1031],{},"โดยผมจะเริ่มจาก Trigger เบื้องต้นอย่าง \"Trigger manually\" ละกันครับ สามารถกดเลือกได้เลยครับ เมื่อเลือกแล้วจะมี Node โผล่มากลางจอแบบนี้ครับ",[10,1033,1034],{},[864,1035],{"alt":85,"src":1036},"/images/2025-04-28-n8n-part-2/image-3.png",[10,1038,1039],{},"จากนั้นให้กดปุ่ม \"+\" ที่อยู่ขวามือของ Node เพื่อเพิ่มการทำงานขั้นต่อไปครับ เมื่อกดแล้วจะเพิ่มกับเครื่องมือต่าง ๆ ที่สามารถนำมาใช้ต่อได้นะครับ \"ซึ่งมีเยอะมากกกก\"",[10,1041,1042],{},[864,1043],{"alt":85,"src":1044},"/images/2025-04-28-n8n-part-2/image-5.png",[10,1046,1047],{},"โดยให้เราเลือกเป็น \"HTTP Request\" ครับ",[10,1049,1050],{},[864,1051],{"alt":85,"src":1052},"/images/2025-04-28-n8n-part-2/image-7.png",[10,1054,1055],{},"จากนั้นจะพบกับหน้าต่างที่โผล่ขึ้นมาซึ่งจะแบ่งเป็น 3 ส่วนหลัก ๆ คือ",[1057,1058,1059,1065,1071],"ol",{},[38,1060,1061,1064],{},[163,1062,1063],{},"ซ้าย"," Input: เป็นส่วนที่ไว้ใช้แสดงผลข้อมูลที่มาจาก workflows การหน้าครับ",[38,1066,1067,1070],{},[163,1068,1069],{},"กลาง"," Settings: เป็นการตั้งค่าของ Node นั้น ๆ ซึ่งจะขึ้นอยู่กับว่าเป็น Node อะไร ในกรณีจะมี \"Method\", \"URL\", \"Authentication\" และอื่น ๆ ตามด้านล่างเลยครับ ซึ่งก็คือรูปแบบการ Call HTTP request ปกติเลย",[38,1072,1073,1076],{},[163,1074,1075],{},"ขวา"," Output: เป็นส่วนที่ไว้ใช้แสดงผลข้อมูลที่ได้จาก Node นี้ครับ",[10,1078,1079],{},[864,1080],{"alt":85,"src":1081},"/images/2025-04-28-n8n-part-2/image-6.png",[10,1083,1084,1085,1088],{},"กลับมาที่ Wayback machine สักแป้บนึงครับ ให้เราค้นหา request ที่จะนำมาใช้งาน ซึ่งในกรณีนี้จะเป็น ",[134,1086,1087],{},"https://web.archive.org/web/timemap/json"," ครับ",[10,1090,1091],{},[864,1092],{"alt":85,"src":1093},"/images/2025-04-28-n8n-part-2/image-9.png",[10,1095,1096],{},"กรอกข้อมูลต่าง ๆ ได้เลย โดยที่ส่วนของ URL แนะนำให้ใช้แค่ URL นะครับ แล้วแบ่งเอา Parameter ลงมาใส่ข้างล่างแทน แบบในรูปเลยครับ (แนะนำว่าให้ปรับ Limit เป็นค่าน้อย ๆ จากเดิน 10000 อาจจะลดลงเหลือ 30 ก็ได้ครับ) เสร็จแล้วกดปุ่ม Test Step ได้เลย ถ้าถูกต้องด้านขวามือจะมีข้อมูลขึ้นมาแบบนี้ครับ",[10,1098,1099],{},[864,1100],{"alt":85,"src":1101},"/images/2025-04-28-n8n-part-2/image-10.png",[10,1103,1104],{},"โดยที่ Output จะดูข้อมูลได้ 3 รูปแบบได้แก่ Table, JSON, Schema ซึ่งการทำงานจริง ๆ ของ N8N จะทำงานภายใต้ Object Array ครับ",[10,1106,1107],{},[864,1108],{"alt":85,"src":1109},"/images/2025-04-28-n8n-part-2/image-11.png",[10,1111,1112],{},"อันนี้ถ้าดูดี ๆ มันจะเป็นการ return มาแบบแปลก ๆ นะครับ ปกติแล้วมันควรจะ return มาเป็น json ในรูปแบบ",[155,1114,1118],{"className":1115,"code":1116,"language":1117,"meta":85,"style":85},"language-json shiki shiki-themes material-theme-lighter one-dark-pro github-dark","[{\n\"original\": \"http://example.com:80/\",\n\"mimetype\": \"text/html\",\n\"...\"\n}]\n","json",[134,1119,1120,1125,1149,1169,1178],{"__ignoreMap":85},[163,1121,1122],{"class":165,"line":166},[163,1123,1124],{"class":220},"[{\n",[163,1126,1127,1130,1134,1136,1138,1141,1144,1146],{"class":165,"line":86},[163,1128,631],{"class":1129},"sObbn",[163,1131,1133],{"class":1132},"sVeMc","original",[163,1135,631],{"class":1129},[163,1137,236],{"class":220},[163,1139,1140],{"class":267}," \"",[163,1142,1143],{"class":173},"http://example.com:80/",[163,1145,631],{"class":267},[163,1147,1148],{"class":220},",\n",[163,1150,1151,1153,1156,1158,1160,1162,1165,1167],{"class":165,"line":89},[163,1152,631],{"class":1129},[163,1154,1155],{"class":1132},"mimetype",[163,1157,631],{"class":1129},[163,1159,236],{"class":220},[163,1161,1140],{"class":267},[163,1163,1164],{"class":173},"text/html",[163,1166,631],{"class":267},[163,1168,1148],{"class":220},[163,1170,1171,1173,1176],{"class":165,"line":242},[163,1172,631],{"class":1129},[163,1174,1175],{"class":1132},"...",[163,1177,637],{"class":1129},[163,1179,1180],{"class":165,"line":253},[163,1181,1182],{"class":220},"}]\n",[10,1184,1185],{},"แต่กรณีนี้ return มาเป็น",[155,1187,1189],{"className":1115,"code":1188,"language":1117,"meta":85,"style":85},"[[\"original\", \"mimetype\", \"...\"], [\"value\"...]]\n",[134,1190,1191],{"__ignoreMap":85},[163,1192,1193,1196,1198,1200,1202,1205,1207,1209,1211,1213,1215,1217,1219,1222,1225,1227,1230,1232,1235],{"class":165,"line":166},[163,1194,1195],{"class":220},"[[",[163,1197,631],{"class":267},[163,1199,1133],{"class":173},[163,1201,631],{"class":267},[163,1203,1204],{"class":220},",",[163,1206,1140],{"class":267},[163,1208,1155],{"class":173},[163,1210,631],{"class":267},[163,1212,1204],{"class":220},[163,1214,1140],{"class":267},[163,1216,1175],{"class":173},[163,1218,631],{"class":267},[163,1220,1221],{"class":220},"],",[163,1223,1224],{"class":220}," [",[163,1226,631],{"class":267},[163,1228,1229],{"class":173},"value",[163,1231,631],{"class":267},[163,1233,1175],{"class":1234},"sg798",[163,1236,1237],{"class":220},"]]\n",[10,1239,1240],{},"ซึ่งมันเอาไปใช้ต่อม่ายได้ครับ '-' ดังนั้นให้กด \"+\" ด้านขวาแล้วเลือก Node \"Code\" เข้ามาช่วยได้เลยครับ",[10,1242,1243,1244],{},"ให้ลองเอา Code นี้ไปใส่\n",[864,1245],{"alt":85,"src":1246},"/images/2025-04-28-n8n-part-2/image-12.png",[155,1248,1252],{"className":1249,"code":1250,"language":1251,"meta":85,"style":85},"language-js shiki shiki-themes material-theme-lighter one-dark-pro github-dark","for (const item of $input.all()) {\n  console.log(item)\n}\nreturn $input.all()\n","js",[134,1253,1254,1293,1313,1318],{"__ignoreMap":85},[163,1255,1256,1260,1264,1268,1272,1276,1280,1283,1287,1290],{"class":165,"line":166},[163,1257,1259],{"class":1258},"s36IK","for",[163,1261,1263],{"class":1262},"sZDfs"," (",[163,1265,1267],{"class":1266},"sOHk9","const",[163,1269,1271],{"class":1270},"sUzmo"," item",[163,1273,1275],{"class":1274},"s_AEr"," of",[163,1277,1279],{"class":1278},"sU9mH"," $input",[163,1281,1282],{"class":220},".",[163,1284,1286],{"class":1285},"suMxZ","all",[163,1288,1289],{"class":1262},"()) ",[163,1291,1292],{"class":220},"{\n",[163,1294,1295,1298,1300,1303,1307,1310],{"class":165,"line":86},[163,1296,1297],{"class":1278},"  console",[163,1299,1282],{"class":220},[163,1301,1302],{"class":1285},"log",[163,1304,1306],{"class":1305},"sbHgf","(",[163,1308,1309],{"class":623},"item",[163,1311,1312],{"class":1305},")\n",[163,1314,1315],{"class":165,"line":89},[163,1316,1317],{"class":220},"}\n",[163,1319,1320,1323,1325,1327,1329],{"class":165,"line":242},[163,1321,1322],{"class":1258},"return",[163,1324,1279],{"class":1278},[163,1326,1282],{"class":220},[163,1328,1286],{"class":1285},[163,1330,1331],{"class":1262},"()\n",[10,1333,1334],{},"ก่อนกดปุ่มให้กด F12 เพื่อเปิด browser console เพื่อดูผลของ console.log ครับ",[10,1336,1337],{},[864,1338],{"alt":85,"src":1339},"/images/2025-04-28-n8n-part-2/image-13.png",[10,1341,1342],{},"โดยอันนี้แหละที่เราจะเอามาใช้ต่อได้ เอา Code อันนี้ไปใส่",[155,1344,1346],{"className":1249,"code":1345,"language":1251,"meta":85,"style":85},"// Retrieve all data from the input\nconst inputItems = $input.all()\n\n// Extract the headers from the first item\nconst headers = inputItems[0].json || []\n\n// Initialize an array to store the new items\nconst newItems = []\n\n// Iterate over each old item, starting from the second item since the first is the headers\nfor (let i = 1; i \u003C inputItems.length; i++) {\n  const item = inputItems[i].json || []\n  const obj = {} // Use a plain JavaScript object\n\n  // Map each value to its corresponding header\n  for (let j = 0; j \u003C headers.length; j++) {\n    obj[headers[j]] = item[j]\n  }\n\n  // Add the new object to the newItems array\n  newItems.push(obj)\n}\n\n// Return the JSON array of objects\nreturn newItems\n",[134,1347,1348,1353,1371,1375,1380,1410,1414,1419,1430,1434,1439,1484,1510,1525,1529,1534,1573,1602,1607,1611,1616,1633,1637,1641,1646],{"__ignoreMap":85},[163,1349,1350],{"class":165,"line":166},[163,1351,1352],{"class":654},"// Retrieve all data from the input\n",[163,1354,1355,1357,1360,1363,1365,1367,1369],{"class":165,"line":86},[163,1356,1267],{"class":1266},[163,1358,1359],{"class":1270}," inputItems",[163,1361,1362],{"class":627}," =",[163,1364,1279],{"class":1278},[163,1366,1282],{"class":220},[163,1368,1286],{"class":1285},[163,1370,1331],{"class":1262},[163,1372,1373],{"class":165,"line":89},[163,1374,179],{"emptyLinePlaceholder":96},[163,1376,1377],{"class":165,"line":242},[163,1378,1379],{"class":654},"// Extract the headers from the first item\n",[163,1381,1382,1384,1387,1389,1391,1394,1397,1400,1402,1404,1407],{"class":165,"line":253},[163,1383,1267],{"class":1266},[163,1385,1386],{"class":1270}," headers",[163,1388,1362],{"class":627},[163,1390,1359],{"class":623},[163,1392,1393],{"class":1262},"[",[163,1395,1396],{"class":544},"0",[163,1398,1399],{"class":1262},"]",[163,1401,1282],{"class":220},[163,1403,1117],{"class":623},[163,1405,1406],{"class":627}," ||",[163,1408,1409],{"class":1262}," []\n",[163,1411,1412],{"class":165,"line":261},[163,1413,179],{"emptyLinePlaceholder":96},[163,1415,1416],{"class":165,"line":277},[163,1417,1418],{"class":654},"// Initialize an array to store the new items\n",[163,1420,1421,1423,1426,1428],{"class":165,"line":285},[163,1422,1267],{"class":1266},[163,1424,1425],{"class":1270}," newItems",[163,1427,1362],{"class":627},[163,1429,1409],{"class":1262},[163,1431,1432],{"class":165,"line":293},[163,1433,179],{"emptyLinePlaceholder":96},[163,1435,1436],{"class":165,"line":301},[163,1437,1438],{"class":654},"// Iterate over each old item, starting from the second item since the first is the headers\n",[163,1440,1441,1443,1445,1448,1451,1453,1456,1459,1461,1464,1466,1468,1472,1474,1476,1479,1482],{"class":165,"line":309},[163,1442,1259],{"class":1258},[163,1444,1263],{"class":1262},[163,1446,1447],{"class":1266},"let",[163,1449,1450],{"class":623}," i",[163,1452,1362],{"class":627},[163,1454,1455],{"class":544}," 1",[163,1457,1458],{"class":220},";",[163,1460,1450],{"class":623},[163,1462,1463],{"class":627}," \u003C",[163,1465,1359],{"class":1278},[163,1467,1282],{"class":220},[163,1469,1471],{"class":1470},"sVJsf","length",[163,1473,1458],{"class":220},[163,1475,1450],{"class":623},[163,1477,1478],{"class":627},"++",[163,1480,1481],{"class":1262},") ",[163,1483,1292],{"class":220},[163,1485,1486,1489,1491,1493,1495,1497,1500,1502,1504,1506,1508],{"class":165,"line":317},[163,1487,1488],{"class":1266},"  const",[163,1490,1271],{"class":1270},[163,1492,1362],{"class":627},[163,1494,1359],{"class":623},[163,1496,1393],{"class":1305},[163,1498,1499],{"class":623},"i",[163,1501,1399],{"class":1305},[163,1503,1282],{"class":220},[163,1505,1117],{"class":623},[163,1507,1406],{"class":627},[163,1509,1409],{"class":1305},[163,1511,1512,1514,1517,1519,1522],{"class":165,"line":325},[163,1513,1488],{"class":1266},[163,1515,1516],{"class":1270}," obj",[163,1518,1362],{"class":627},[163,1520,1521],{"class":220}," {}",[163,1523,1524],{"class":654}," // Use a plain JavaScript object\n",[163,1526,1527],{"class":165,"line":333},[163,1528,179],{"emptyLinePlaceholder":96},[163,1530,1531],{"class":165,"line":341},[163,1532,1533],{"class":654},"  // Map each value to its corresponding header\n",[163,1535,1536,1539,1541,1543,1546,1548,1551,1553,1555,1557,1559,1561,1563,1565,1567,1569,1571],{"class":165,"line":349},[163,1537,1538],{"class":1258},"  for",[163,1540,1263],{"class":1305},[163,1542,1447],{"class":1266},[163,1544,1545],{"class":623}," j",[163,1547,1362],{"class":627},[163,1549,1550],{"class":544}," 0",[163,1552,1458],{"class":220},[163,1554,1545],{"class":623},[163,1556,1463],{"class":627},[163,1558,1386],{"class":1278},[163,1560,1282],{"class":220},[163,1562,1471],{"class":1470},[163,1564,1458],{"class":220},[163,1566,1545],{"class":623},[163,1568,1478],{"class":627},[163,1570,1481],{"class":1305},[163,1572,1292],{"class":220},[163,1574,1575,1578,1580,1583,1585,1588,1591,1593,1595,1597,1599],{"class":165,"line":357},[163,1576,1577],{"class":623},"    obj",[163,1579,1393],{"class":1305},[163,1581,1582],{"class":623},"headers",[163,1584,1393],{"class":1305},[163,1586,1587],{"class":623},"j",[163,1589,1590],{"class":1305},"]] ",[163,1592,628],{"class":627},[163,1594,1271],{"class":623},[163,1596,1393],{"class":1305},[163,1598,1587],{"class":623},[163,1600,1601],{"class":1305},"]\n",[163,1603,1604],{"class":165,"line":365},[163,1605,1606],{"class":220},"  }\n",[163,1608,1609],{"class":165,"line":370},[163,1610,179],{"emptyLinePlaceholder":96},[163,1612,1613],{"class":165,"line":378},[163,1614,1615],{"class":654},"  // Add the new object to the newItems array\n",[163,1617,1618,1621,1623,1626,1628,1631],{"class":165,"line":388},[163,1619,1620],{"class":1278},"  newItems",[163,1622,1282],{"class":220},[163,1624,1625],{"class":1285},"push",[163,1627,1306],{"class":1305},[163,1629,1630],{"class":623},"obj",[163,1632,1312],{"class":1305},[163,1634,1635],{"class":165,"line":397},[163,1636,1317],{"class":220},[163,1638,1639],{"class":165,"line":404},[163,1640,179],{"emptyLinePlaceholder":96},[163,1642,1643],{"class":165,"line":415},[163,1644,1645],{"class":654},"// Return the JSON array of objects\n",[163,1647,1648,1650],{"class":165,"line":426},[163,1649,1322],{"class":1258},[163,1651,1652],{"class":623}," newItems\n",[10,1654,1655],{},"ใน code จะมี warning ของ interface อยู่นะครับ แต่มองข้ามไปได้ กดรันได้เลยฮะ ถ้าถูกต้องตรงฝั่งขวามือเราจะได้ Output หน้าตาเป็นแบบนี้ครับ ถือว่าถูกต้องและใช้งานต่อได้",[10,1657,1658],{},[864,1659],{"alt":85,"src":1660},"/images/2025-04-28-n8n-part-2/image-14.png",[10,1662,1663],{},"ซึ่งต่อไปก็ขึ้นอยู่กับเราว่าจะเอาข้อมูลจาก workflow นี้ไปทำอะไรต่อ เช่นนำไปเก็บใน Database, นำไปใช้วิเคราะห์ต่อ, นำไป filter ข้อมูลที่สนใจอันนี้ขึ้นอยู่กับจุดประสงค์แล้วครับ",[10,1665,1666,1667],{},"บนเส้นเมื่อรันแล้วจะเจอกับเลขอยู่นะครับ ซึ่งหมายถึงจำนวนข้อมูลปกติแล้ว N8N จะทำการ Loop ในข้อมูลแต่ละชุดให้เลยครับ จากด้านซ้ายมีข้อมูล 31 Object (รวม header) เอามาแปลงเป็นข้อมูลด้านขวาซึ่งจะเหลือ 30 Object ครับ\n",[864,1668],{"alt":85,"src":1669},"/images/2025-04-28-n8n-part-2/image-15.png",[10,1671,1672,1673,1676],{},"ต่อไปผมจะลองใช้งาน Filter ดูนะครับ โดยที่จะ filter ",[134,1674,1675],{},"mimetype: text/html"," ออกมาอย่างเดียว เลือกเป็น Data transformation และ Filter",[10,1678,1679],{},[864,1680],{"alt":85,"src":1681},"/images/2025-04-28-n8n-part-2/image-16.png",[10,1683,1684],{},"เลือกเป็น Schema แล้วดูตรง Node ที่ชื่อว่า \"Code\" ซึ่งเป็น Node ก่อนหน้า ในที่นี้เราสามารถ drag & drop ข้อมูลที่เราต้องการได้เลยครับ ให้เลือก \"mimetype\" ลากมาวางตรง \"value1\"",[10,1686,1687],{},[864,1688],{"alt":85,"src":1689},"/images/2025-04-28-n8n-part-2/image-17.png",[10,1691,1692,1693],{},"ส่วน OP: เลือกเป็น \"is equal to\" และ value ใส่เป็น \"text/html\" แบบในรูปครับ\n",[864,1694],{"alt":85,"src":1695},"/images/2025-04-28-n8n-part-2/image-18.png",[10,1697,1698,1699],{},"เมื่อกด \"Test Step\" จะพบว่าข้อมูลจะถูกแยกเป็น 2 ส่วนคือ\"Kept\" (เก็บไว้) และ \"Discarded\" (เอาทิ้ง) ซึ่งจะเป็นตามเงื่อนไขที่เราตั้งไว้ครับ\n",[864,1700],{"alt":85,"src":1701},"/images/2025-04-28-n8n-part-2/image-19.png",[10,1703,1704],{},"ปลายเส้นก็จะเหลือข้อมูล 1 item ตามที่เรา filter ไว้เลยครับ เย่",[10,1706,1707],{},[864,1708],{"alt":85,"src":1709},"/images/2025-04-28-n8n-part-2/image-20.png",[10,1711,1712],{},"การใช้งาน N8N ก็จะมีประมาณนี้ครับ ไม่ยากไม่ง่ายจนเกินไปเนอะ ไว้มาต่อกัน EP 3 นะครับ",[927,1714,1715],{},"html pre.shiki code .stlKB, html code.shiki .stlKB{--shiki-light:#39ADB5;--shiki-default:#ABB2BF;--shiki-dark:#E1E4E8}html pre.shiki code .sObbn, html code.shiki .sObbn{--shiki-light:#39ADB5;--shiki-default:#E06C75;--shiki-dark:#79B8FF}html pre.shiki code .sVeMc, html code.shiki .sVeMc{--shiki-light:#9C3EDA;--shiki-default:#E06C75;--shiki-dark:#79B8FF}html pre.shiki code .snfNA, html code.shiki .snfNA{--shiki-light:#39ADB5;--shiki-default:#98C379;--shiki-dark:#9ECBFF}html pre.shiki code .sAlJX, html code.shiki .sAlJX{--shiki-light:#91B859;--shiki-default:#98C379;--shiki-dark:#9ECBFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}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 .sg798, html code.shiki .sg798{--shiki-light:#90A4AE;--shiki-light-font-style:inherit;--shiki-default:#FFFFFF;--shiki-default-font-style:inherit;--shiki-dark:#FDAEB7;--shiki-dark-font-style:italic}html pre.shiki code .s36IK, html code.shiki .s36IK{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#C678DD;--shiki-default-font-style:inherit;--shiki-dark:#F97583;--shiki-dark-font-style:inherit}html pre.shiki code .sZDfs, html code.shiki .sZDfs{--shiki-light:#90A4AE;--shiki-default:#ABB2BF;--shiki-dark:#E1E4E8}html pre.shiki code .sOHk9, html code.shiki .sOHk9{--shiki-light:#9C3EDA;--shiki-default:#C678DD;--shiki-dark:#F97583}html pre.shiki code .sUzmo, html code.shiki .sUzmo{--shiki-light:#90A4AE;--shiki-default:#E5C07B;--shiki-dark:#79B8FF}html pre.shiki code .s_AEr, html code.shiki .s_AEr{--shiki-light:#39ADB5;--shiki-default:#C678DD;--shiki-dark:#F97583}html pre.shiki code .sU9mH, html code.shiki .sU9mH{--shiki-light:#90A4AE;--shiki-default:#E5C07B;--shiki-dark:#E1E4E8}html pre.shiki code .suMxZ, html code.shiki .suMxZ{--shiki-light:#6182B8;--shiki-default:#61AFEF;--shiki-dark:#B392F0}html pre.shiki code .sbHgf, html code.shiki .sbHgf{--shiki-light:#E53935;--shiki-default:#ABB2BF;--shiki-dark:#E1E4E8}html pre.shiki code .sLHrO, html code.shiki .sLHrO{--shiki-light:#90A4AE;--shiki-default:#E06C75;--shiki-dark:#E1E4E8}html pre.shiki code .sDKbk, html code.shiki .sDKbk{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#7F848E;--shiki-default-font-style:italic;--shiki-dark:#6A737D;--shiki-dark-font-style:inherit}html pre.shiki code .sMTEB, html code.shiki .sMTEB{--shiki-light:#39ADB5;--shiki-default:#56B6C2;--shiki-dark:#F97583}html pre.shiki code .snOyU, html code.shiki .snOyU{--shiki-light:#F76D47;--shiki-default:#D19A66;--shiki-dark:#79B8FF}html pre.shiki code .sVJsf, html code.shiki .sVJsf{--shiki-light:#90A4AE;--shiki-default:#E06C75;--shiki-dark:#79B8FF}",{"title":85,"searchDepth":86,"depth":86,"links":1717},[1718],{"id":981,"depth":86,"text":982,"children":1719},[1720,1721],{"id":985,"depth":89,"text":986},{"id":1005,"depth":89,"text":1006},"2025-04-28T00:00:00.000Z","มาต่อกันที่วิธีการใช้งาน N8N ในเบื้องต้นกันครับ",{},"/blogs/2025-04-28-n8n-part-2","n8n-part-1",[948],{"title":956,"description":1723},{"loc":1725},"blogs/2025-04-28-n8n-part-2",[104],"QfxWqB6jTdhSNiqZiwhYt7E82aaZAo6zbFKgOnnSINo",{"id":1734,"title":1735,"body":1736,"date":1812,"description":1813,"draft":93,"extension":94,"meta":1814,"navigation":96,"next":97,"ogTitle":1815,"path":1816,"pin":93,"prev":97,"recommends":97,"seo":1817,"sitemap":1818,"stem":1819,"tags":1820,"__hash__":1821},"content/blogs/2025-08-18-ollama-desktop-ui.md","Ollama มี UI ให้ใช้แล้ว",{"type":7,"value":1737,"toc":1810},[1738,1743,1746,1753,1763,1768,1780,1788,1794,1800,1803],[10,1739,1740],{},[864,1741],{"alt":85,"src":1742},"/images/2025-08-18-ollama-desktop-ui/images-3de58dcb-c7b8-4c8e-8fb6-fd713de8d854.jpg",[10,1744,1745],{},"วันนี้ผมเพิ่งมาสังเกตว่า Ollama มี Desktop Application ให้ใช้งานแล้ว (ผมติดตั้ง version 0.11.4 บน macos) โดยหน้าตาของ UI จะมีความ minimal เหมือนกับ LLM Chat ทั่ว ๆ ไปเลยครับ",[10,1747,1748,1749],{},"โดย Ollama คือเครื่องมือสำหรับใช้ในการ run llm ในรูปแบบ local (ใช้ hardware ของผู้ใช้งานโดยตรง) มีหลาย model ให้ใช้งาน เช่น Deepseek, gemma, Llama หรือ model อื่น ๆ สามารถดูได้ที่ ",[78,1750,1751],{"href":1751,"rel":1752},"https://ollama.com/search",[82],[10,1754,1755,1756,1759,1760],{},"โดยข้อดีที่ผมชอบเลยก็คือ ก่อนหน้านี้ตอนที่ต้องการทดสอบ model บางตัว ก็จำเป็นต้องใช้งานผ่าน cli โดยที่รัน ",[134,1757,1758],{},"ollama run gemma3:270m"," แต่ตอนนี้สะดวกขึ้นมาก เพียงแค่ ",[134,1761,1762],{},"ollama pull gemma3:270m",[10,1764,1765],{},[864,1766],{"alt":85,"src":1767},"/images/2025-08-18-ollama-desktop-ui/images-1350f112-92ce-4af4-b0d7-8731d4364dea.jpg",[10,1769,1770,1771,1774,1775,1779],{},"จากนั้นก็จะสามารถเลือก model ผ่าน ollama UI และใช้งานได้เลย ทำให้การทดสอบทำได้ง่ายขึ้น\n",[864,1772],{"alt":85,"src":1773},"/images/2025-08-18-ollama-desktop-ui/images-d010a3a3-8228-4438-8686-a8c7fb7330c3.jpg","\nผมเลยไปตามอ่านดู release ก็ไปเจอกับ ",[78,1776,1777],{"href":1777,"rel":1778},"https://ollama.com/blog/new-app",[82]," โดยสรุป features ไว้คร่าว ๆ ตามนี้",[35,1781,1782,1785],{},[38,1783,1784],{},"Chat with file: ส่งไฟล์เพื่อไปถาม chat เช่นส่ง PDF ให้สรุป",[38,1786,1787],{},"กำหนด context length ได้",[10,1789,1790,1793],{},[864,1791],{"alt":85,"src":1792},"/images/2025-08-18-ollama-desktop-ui/images-8f00489f-216e-414d-b4e6-49bf74ade823.jpg","\nส่วนอื่น ๆ ก็เป็น chat UI ทั่ว ๆ ไปเลยนะครับ (อนาคตน่าจะมีอะไรให้ลองเล่นมากกว่านี้)",[10,1795,1796,1797],{},"อีกอย่างคือเห็นว่ามี Turbo (Beta) เข้ามาแล้วด้วย โดยมีราคาอยู่ที่ 20$ ต่อเดือน (ข้อมูลวันที่ 18/8/68) โดย Turbo คือการที่จากเดิม ollama จะเป็นการใช้งาน self-hardware หรือเครื่องของผู้ใช้งานเป็นคนทำงานใช่มั้ยครับ แต่ Turbo คือการที่จะไปใช้ Server ของทาง Ollama เพื่อทำงานใน model ที่มีขนาดใหญ่ขึ้นนั้นเอง\n",[864,1798],{"alt":85,"src":1799},"/images/2025-08-18-ollama-desktop-ui/images-74485b02-c1a5-4067-aab2-467400bff2aa.jpg",[10,1801,1802],{},"ต้องคอยติดตามต่อไปว่าจะมีอะไรที่น่าสนใจหรือมีอะไรอัพเดทต่ออีกบ้างครับ ~",[10,1804,1805,1806],{},"ที่มา: ",[78,1807,1808],{"href":1808,"rel":1809},"https://ollama.com",[82],{"title":85,"searchDepth":86,"depth":86,"links":1811},[],"2025-08-18T00:00:00.000Z","ตอนนี้ Ollama มี Chat UI ให้สามารถใช้งานได้แล้ว",{},"Ollama New Desktop Application","/blogs/2025-08-18-ollama-desktop-ui",{"title":1735,"description":1813},{"loc":1816},"blogs/2025-08-18-ollama-desktop-ui",[104],"5EVdae6hl-dY_RTIXfZk7xFuTVbWsv6EXdUciPBLN4M",{"id":1823,"title":1824,"body":1825,"date":2037,"description":2038,"draft":93,"extension":94,"meta":2039,"navigation":96,"next":944,"ogTitle":2040,"path":2041,"pin":93,"prev":1726,"recommends":2042,"seo":2043,"sitemap":2044,"stem":2045,"tags":2046,"__hash__":2047},"content/blogs/2025-10-03-typhoon-ai-n8n.md","วิธีการนำ Typhoon AI มาใช้งานใน N8N",{"type":7,"value":1826,"toc":2032},[1827,1831,1834,1837,1841,1915,1919,1922,1936,1941,1946,1951,1956,1961,1966,1971,1976,1984,1989,1994,1999,2004,2010,2013,2019,2024,2027],[114,1828,1830],{"id":1829},"typhoon-ai-คืออะไร","Typhoon AI คืออะไร",[10,1832,1833],{},"Typhoon AI มีการพัฒนาในส่วนของ API ในรูปแบบของ Openai compatible api ซึ่งเป็นมาตรฐานของการพัฒนา API ของ AI ในปัจจุบันอยู่แล้วครับ นั่นหมายความว่าถ้าเดิม ๆ ใช้ของ OpenAI ได้ ก็จะสามารถเปลี่ยนมาใช้ของตัวอื่นได้ด้วยเช่นเดียวกัน โดยทำแค่เพียงเปลี่ยน URL ที่ใช้ในการเชื่อมต่อ",[10,1835,1836],{},"ด้วยความที่ model นี้สามารถนำมาใช้ได้ฟรีก็แนะนำว่าไม่ควรนำมาใช้ในเชิงพาณิชย์ นะครับ",[114,1838,1840],{"id":1839},"ข้อจำกัดในปัจจุบัน-update-311068","ข้อจำกัดในปัจจุบัน (update 31/10/68)",[1842,1843,1844,1871],"table",{},[1845,1846,1847],"thead",{},[1848,1849,1850,1856,1861,1866],"tr",{},[1851,1852,1853],"th",{},[14,1854,1855],{},"Model",[1851,1857,1858],{},[14,1859,1860],{},"Context Window",[1851,1862,1863],{},[14,1864,1865],{},"Requests per Second",[1851,1867,1868],{},[14,1869,1870],{},"Requests per Minute",[1872,1873,1874,1889,1901],"tbody",{},[1848,1875,1876,1880,1883,1886],{},[1877,1878,1879],"td",{},"typhoon-v2.5-30b-a3b-instruct",[1877,1881,1882],{},"128K tokens",[1877,1884,1885],{},"5",[1877,1887,1888],{},"200",[1848,1890,1891,1894,1897,1899],{},[1877,1892,1893],{},"typhoon-v2.1-12b-instruct",[1877,1895,1896],{},"56K tokens",[1877,1898,1885],{},[1877,1900,1888],{},[1848,1902,1903,1906,1909,1912],{},[1877,1904,1905],{},"typhoon-ocr",[1877,1907,1908],{},"-",[1877,1910,1911],{},"2",[1877,1913,1914],{},"20",[114,1916,1918],{"id":1917},"วิธีการนำมาใช้งานใน-n8n","วิธีการนำมาใช้งานใน N8N",[10,1920,1921],{},"มาเริ่มกันเลยฮะ",[1057,1923,1924],{},[38,1925,1926,1927,1931,1932],{},"สมัคร User ที่ ",[78,1928,1929],{"href":1929,"rel":1930},"https://playground.opentyphoon.ai/",[82]," เพื่อขอใช้ API Key (ตรงนี้ Free นะ) โดยจะมี Rate limit และเงื่อนไขการใช้งานเพิ่มเติมแนะนำให้อ่านต่อที่ ",[78,1933,1934],{"href":1934,"rel":1935},"https://docs.opentyphoon.ai/en/rate-limits/",[82],[10,1937,1938],{},[864,1939],{"alt":85,"src":1940},"/images/2025-10-03-typhoon-ai-n8n/typhoon-1.png",[1057,1942,1943],{"start":86},[38,1944,1945],{},"จากนั้นสามารถ Copy API Key ไว้ได้เลยฮะ ตามรูปนี้เลย",[10,1947,1948],{},[864,1949],{"alt":85,"src":1950},"/images/2025-10-03-typhoon-ai-n8n/typhoon-2.png",[1057,1952,1953],{"start":89},[38,1954,1955],{},"กลับมาที่ N8N ของเราแล้วกด \"Create Credential\"",[10,1957,1958],{},[864,1959],{"alt":85,"src":1960},"/images/2025-10-03-typhoon-ai-n8n/typhoon-3.png",[1057,1962,1963],{"start":242},[38,1964,1965],{},"โดยเลือกเป็น \"OpenAi\" ได้เลยครับ",[10,1967,1968],{},[864,1969],{"alt":85,"src":1970},"/images/2025-10-03-typhoon-ai-n8n/typhoon-4.png",[1057,1972,1973],{"start":253},[38,1974,1975],{},"นำ API Key ที่ Copy ไว้มาใส่ และแก้ตรง Base URL ให้เป็น",[155,1977,1982],{"className":1978,"code":1980,"language":1981},[1979],"language-text","https://api.opentyphoon.ai/v1\n","text",[134,1983,1980],{"__ignoreMap":85},[10,1985,1986],{},[864,1987],{"alt":85,"src":1988},"/images/2025-10-03-typhoon-ai-n8n/typhoon-6.png",[1057,1990,1991],{"start":261},[38,1992,1993],{},"จากนั้นเวลาจะใช้งานก็สามารถเลือกเป็น \"OpenAI Chat Model\" ได้เลย",[10,1995,1996],{},[864,1997],{"alt":85,"src":1998},"/images/2025-10-03-typhoon-ai-n8n/typhoon-5.png",[1057,2000,2001],{"start":277},[38,2002,2003],{},"ตรง \"Credential to connect with\" ให้เลือกเป็น typhoon ที่เราสร้างในขั้นตอนที่ 5 และเลือก Model โดยใช้ \"By ID\" และกรอกเป็น",[155,2005,2008],{"className":2006,"code":2007,"language":1981},[1979],"typhoon-v2.1-12b-instruct\n",[134,2009,2007],{"__ignoreMap":85},[10,2011,2012],{},"หรือ",[155,2014,2017],{"className":2015,"code":2016,"language":1981},[1979],"typhoon-v2.5-30b-a3b-instruct\n",[134,2018,2016],{"__ignoreMap":85},[10,2020,2021],{},[864,2022],{"alt":85,"src":2023},"/images/2025-10-03-typhoon-ai-n8n/typhoon-7.png",[10,2025,2026],{},"เรียบร้อยย เพียงแค่นี้เราก็จะสามารถใช้งาน typhoon AI ด้วย N8N ได้แล้วคับ Enjoy ฮะะ",[10,2028,2029],{},[864,2030],{"alt":85,"src":2031},"/images/2025-10-03-typhoon-ai-n8n/typhoon-8.png",{"title":85,"searchDepth":86,"depth":86,"links":2033},[2034,2035,2036],{"id":1829,"depth":86,"text":1830},{"id":1839,"depth":86,"text":1840},{"id":1917,"depth":86,"text":1918},"2025-10-03T00:00:00.000Z","วันนี้จะมาแนะนำวิธีการนำ Typhoon AI ซึ่งเป็น AI ของคนไทย มาใช้งานใน N8N",{},"Typhoon AI With N8N","/blogs/2025-10-03-typhoon-ai-n8n",[948],{"title":1824,"description":2038},{"loc":2041},"blogs/2025-10-03-typhoon-ai-n8n",[104],"Omc7-mXv-9vBYpXEqfE3aCWowXf2jL5taB14ExDvnDc",{"id":2049,"title":2050,"body":2051,"date":91,"description":2138,"draft":93,"extension":94,"meta":2139,"navigation":96,"next":97,"ogTitle":2140,"path":2141,"pin":93,"prev":97,"recommends":97,"seo":2142,"sitemap":2143,"stem":2144,"tags":2145,"__hash__":2146},"content/blogs/2026-02-08-kimi-k2-5.md","Kimi k2.5 เปิดตัวแล้ว! โมเดลใหม่สาย Long Context ที่ฉลาดและเร็วกว่าเดิม",{"type":7,"value":2052,"toc":2134},[2053,2063,2066,2070,2096,2100,2119,2122],[10,2054,2055,2056,2059,2060,1088],{},"สาย AI จีนน่าจะคุ้นเคยกับ ",[14,2057,2058],{},"Kimi (Moonshot AI)"," กันดีในฐานะเจ้าพ่อ Long Context Window ที่ยัดไฟล์ PDF เป็นร้อยหน้าให้มันอ่านได้สบายๆ ล่าสุดเขาปล่อยของใหม่ออกมาเป็น ",[14,2061,2062],{},"Kimi k2.5",[10,2064,2065],{},"หลังจากลองไปอ่าน Blog และเล่นดูคร่าวๆ บอกเลยว่ารอบนี้ไม่ใช่แค่ Minor change แต่เป็นการจูนเครื่องให้ \"คิด\" ซับซ้อนได้ดีขึ้นแบบเห็นผล",[30,2067,2069],{"id":2068},"มีอะไรใหม่ใน-k25","มีอะไรใหม่ใน k2.5?",[35,2071,2072,2078,2084,2090],{},[38,2073,2074,2077],{},[14,2075,2076],{},"Enhanced Reasoning:"," การแก้โจทย์ Logic หรือ Math ที่ต้องคิดหลาย Step ทำได้เนียนตาขึ้นมาก ไม่ค่อยหลุดมั่วเหมือนรุ่นก่อน",[38,2079,2080,2083],{},[14,2081,2082],{},"Super Long Context (Updated):"," จุดขายเดิมคือ Context ยาว แต่รอบนี้ k2.5 จัดการ Information Retrieval ใน Context ยาวๆ ได้แม่นยำขึ้น (อาการ \"ลืม\" กลางทางน้อยลง)",[38,2085,2086,2089],{},[14,2087,2088],{},"Coding Performance:"," ลองให้เขียน Script Python ง่ายๆ หรือแก้บั๊ก Code ที่ซับซ้อน ถือว่าทำได้ดีขึ้นจนน่าตกใจ เอามาเป็น Pair Programmer ได้เลย",[38,2091,2092,2095],{},[14,2093,2094],{},"Speed & Efficiency:"," รู้สึกว่า Response Time ไวขึ้น ประมวลผลลื่นขึ้น",[30,2097,2099],{"id":2098},"เหมาะกับใคร","เหมาะกับใคร?",[35,2101,2102,2109,2112],{},[38,2103,2104,2105,2108],{},"คนที่ชอบโยน ",[14,2106,2107],{},"Document/Paper/Report"," ยาวๆ ให้ AI ช่วยสรุปหรือวิเคราะห์",[38,2110,2111],{},"Dev ที่อยากหา Model ทางเลือกนอกจาก GPT-4 หรือ Claude มาช่วยเขียน Code",[38,2113,2114,2115,2118],{},"สาย ",[14,2116,2117],{},"Data Analysis"," ที่ต้อง Process ข้อมูลดิบจำนวนมาก",[10,2120,2121],{},"ใครที่ใช้ Kimi เป็นตัวหลักในการอ่าน Doc อยู่แล้ว แนะนำให้สลับมาลอง k2.5 ดูครับ ชีวิตดีขึ้นเยอะ!",[69,2123,2124],{},[10,2125,2126,76,2129],{},[14,2127,2128],{},"อ่านเพิ่มเติม:",[78,2130,2133],{"href":2131,"rel":2132},"https://www.kimi.com/blog/kimi-k2-5.html",[82],"Kimi Blog - Kimi k2.5",{"title":85,"searchDepth":86,"depth":86,"links":2135},[2136,2137],{"id":2068,"depth":89,"text":2069},{"id":2098,"depth":89,"text":2099},"สรุปความโหดของ Kimi k2.5 โมเดลล่าสุดจาก Moonshot AI ที่อัปเกรดเรื่อง Reasoning และการจัดการ Context ยาวๆ ให้เสถียรขึ้น",{},"Kimi k2.5 Review","/blogs/2026-02-08-kimi-k2-5",{"title":2050,"description":2138},{"loc":2141},"blogs/2026-02-08-kimi-k2-5",[104],"mwVXzkJCEOBoxxqeCon5rhGQmhwl8RXHcd071Y6izKA",{"id":2148,"title":2149,"body":2150,"date":91,"description":2267,"draft":93,"extension":94,"meta":2268,"navigation":96,"next":97,"ogTitle":2167,"path":2269,"pin":93,"prev":97,"recommends":97,"seo":2270,"sitemap":2271,"stem":2272,"tags":2273,"__hash__":2274},"content/blogs/2026-02-08-n8n-skills.md","เปลี่ยน Claude ให้เป็นเทพ n8n ด้วย n8n-skills",{"type":7,"value":2151,"toc":2262},[2152,2162,2169,2173,2210,2212,2233,2236,2247,2250],[10,2153,2154,2155,2158,2159,2161],{},"ปกติเวลาให้ AI ช่วยเขียน Script หรือออกแบบ Workflow ใน n8n ปัญหาที่เจอบ่อยคือ AI มักจะมั่ว Syntax (เช่นการใช้ ",[134,2156,2157],{},"{{$json}}"," หรือ ",[134,2160,1322],{}," แบบผิดๆ) หรือไม่รู้จัก Node ใหม่ๆ ทำให้เราต้องมานั่งแก้เองจนเหนื่อย",[10,2163,2164,2165,2168],{},"วันนี้ไปเจอของดีมาครับ ",[14,2166,2167],{},"n8n-skills"," จากคุณ czlonkowski เป็นโปรเจกต์ที่รวบรวม \"Skills\" หรือชุดความรู้เฉพาะทางของ n8n เอาไว้ให้เรา Feed เข้าไปใน Claude (ผ่าน Claude Code หรือ MCP Server) เพื่อให้มันกลายเป็นผู้เชี่ยวชาญ n8n แบบทันที",[30,2170,2172],{"id":2171},"features-หลักๆ-ที่น่าสนใจ","Features หลักๆ ที่น่าสนใจ",[35,2174,2175,2192,2198,2204],{},[38,2176,2177,2180,2181,2184,2185,2184,2188,2191],{},[14,2178,2179],{},"Expression Syntax Expert:"," สอนให้ AI เข้าใจโครงสร้างตัวแปรของ n8n จริงๆ (เช่น ",[134,2182,2183],{},"$node",", ",[134,2186,2187],{},"$env",[134,2189,2190],{},"$json.body",") ไม่เขียนมั่ว",[38,2193,2194,2197],{},[14,2195,2196],{},"Workflow Patterns:"," รวม Pattern ยอดฮิตกว่า 5 แบบ (Webhook, API Integration, Database Sync ฯลฯ) ให้ AI ดึงไปใช้ได้เลย",[38,2199,2200,2203],{},[14,2201,2202],{},"Validation:"," ช่วยตรวจสอบ Error และแนะนำวิธีแก้ปัญหาที่ตรงจุด ไม่ใช่แนะนำแบบกว้างๆ",[38,2205,2206,2209],{},[14,2207,2208],{},"Node Configuration:"," AI จะเข้าใจ Property ของ Node กว่า 500+ ตัว รู้ว่าช่องไหนต้องกรอกอะไร",[30,2211,2099],{"id":2098},[35,2213,2214,2220,2230],{},[38,2215,2114,2216,2219],{},[14,2217,2218],{},"Self-hosting"," ที่รัน n8n เอง แล้วอยากมี AI Assistant เก่งๆ มาช่วย Config",[38,2221,2222,2223,2158,2226,2229],{},"คนที่ใช้ ",[14,2224,2225],{},"Claude Code",[14,2227,2228],{},"Claude Desktop"," คู่กับ MCP (Model Context Protocol)",[38,2231,2232],{},"Dev ที่ขี้เกียจจำ Syntax ยิบย่อยของ n8n",[30,2234,2235],{"id":2235},"วิธีใช้คร่าวๆ",[10,2237,2238,2239,2242,2243,2246],{},"ถ้าใช้ Claude Code ก็แค่รันคำสั่งเพื่อ Install Plugin หรือถ้าใช้ผ่านหน้าเว็บ Claude.ai ก็สามารถ Download ไฟล์ ",[134,2240,2241],{},".md"," ในโฟลเดอร์ ",[134,2244,2245],{},"docs/skills"," ไปโยนให้มันอ่านเป็น Context ได้เลยครับ",[10,2248,2249],{},"ใครที่ใช้ n8n เป็น Core หลักในการทำ Automation อยู่แล้ว แนะนำให้ลองเอาไปเล่นดูครับ ช่วยลดเวลา Debug ไปได้เยอะมาก",[69,2251,2252],{},[10,2253,2254,76,2257],{},[14,2255,2256],{},"GitHub:",[78,2258,2261],{"href":2259,"rel":2260},"https://github.com/czlonkowski/n8n-skills",[82],"czlonkowski/n8n-skills",{"title":85,"searchDepth":86,"depth":86,"links":2263},[2264,2265,2266],{"id":2171,"depth":89,"text":2172},{"id":2098,"depth":89,"text":2099},{"id":2235,"depth":89,"text":2235},"ชุดคำสั่ง (Skills) สำหรับ Claude Code/MCP ที่จะช่วยให้ AI เข้าใจและเขียน n8n Workflow ได้แม่นยำขึ้นแบบก้าวกระโดด",{},"/blogs/2026-02-08-n8n-skills",{"title":2149,"description":2267},{"loc":2269},"blogs/2026-02-08-n8n-skills",[104],"NBX2c7UNr0Mfa0MT9JrwqLh1Y1E6lFnUosQkG2HIHM8",{"id":2276,"title":2277,"body":2278,"date":91,"description":2385,"draft":93,"extension":94,"meta":2386,"navigation":96,"next":97,"ogTitle":2387,"path":2388,"pin":93,"prev":97,"recommends":97,"seo":2389,"sitemap":2390,"stem":2391,"tags":2392,"__hash__":2393},"content/blogs/2026-02-08-nanobot-ai-agent.md","ลองเล่น Nanobot - AI Agent ไซส์มินิ (Python 4,000 บรรทัด)",{"type":7,"value":2279,"toc":2380},[2280,2290,2294,2300,2328,2332,2342,2345,2365,2368,2371],[10,2281,2282,2283,1088],{},"ช่วงนี้กระแส AI Agent มาแรงมาก แต่หลายตัวมักจะมาพร้อมกับ Framework ที่ใหญ่เทอะทะ หรือ Setup ยุ่งยากจนท้อไปก่อน วันนี้เลยอยากมาป้ายยาโปรเจกต์หนึ่งที่ไปเจอมา ชื่อว่า ",[14,2284,2285],{},[78,2286,2289],{"href":2287,"rel":2288},"https://github.com/HKUDS/nanobot",[82],"HKUDS/nanobot",[30,2291,2293],{"id":2292},"ทำไมถึงน่าสนใจ","ทำไมถึงน่าสนใจ?",[10,2295,2296,2297,1088],{},"จุดขายหลักของเจ้า Nanobot คือความ ",[14,2298,2299],{},"\"Ultra-lightweight\"",[35,2301,2302,2312,2322],{},[38,2303,2304,2307,2308,2311],{},[14,2305,2306],{},"Codebase เล็กมาก:"," Core logic ทั้งหมดเขียนด้วย Python แค่ประมาณ ",[14,2309,2310],{},"4,000 บรรทัด"," เท่านั้น (เคลมว่าเล็กกว่าคู่แข่ง 99%) ซึ่งเหมาะมากสำหรับคนที่อยากแกะโค้ดมาศึกษา หรือเอาไปโมต่อเอง",[38,2313,2314,2317,2318,2321],{},[14,2315,2316],{},"Local First:"," สาย Self-host หรือคนใช้ Mac M1/M2 น่าจะชอบ เพราะมันรองรับ ",[14,2319,2320],{},"Ollama"," ในตัว ไม่ต้องต่อ API นอกเสมอไป รัน Model ในเครื่องได้เลยฟรีๆ",[38,2323,2324,2327],{},[14,2325,2326],{},"Extensible:"," โครงสร้างมันออกแบบมาให้เราเขียน Skill เพิ่มง่ายมาก อยากให้มันทำอะไรเฉพาะทางก็แค่เขียน Python Function แปะเข้าไป",[30,2329,2331],{"id":2330},"ลองเล่นแล้วเป็นไง","ลองเล่นแล้วเป็นไง?",[10,2333,2334,2335,2158,2338,2341],{},"ความรู้สึกแรกคือ \"คลีน\" ครับ ติดตั้งผ่าน ",[134,2336,2337],{},"pip",[134,2339,2340],{},"uv"," แป๊บเดียวเสร็จ สั่งงานผ่าน CLI ได้เลย หรือจะเชื่อมกับ Chat App อย่าง Telegram/Discord ก็ได้",[10,2343,2344],{},"Use case ที่น่าเอาไปทำต่อ:",[1057,2346,2347,2353,2359],{},[38,2348,2349,2352],{},[14,2350,2351],{},"Personal Assistant:"," ให้ช่วยสรุปข่าว หรือแจ้งเตือนสิ่งที่ต้องทำ",[38,2354,2355,2358],{},[14,2356,2357],{},"Coding Buddy:"," ให้ช่วยเจน Code เล็กๆ น้อยๆ หรือ Refactor code",[38,2360,2361,2364],{},[14,2362,2363],{},"Monitor Task:"," สั่งให้เฝ้ากราฟหุ้น/Crypto แล้วแจ้งเตือนเมื่อถึงราคาที่ตั้งไว้",[30,2366,2367],{"id":2367},"สรุป",[10,2369,2370],{},"ใครกำลังมองหา AI Agent Framework ที่ \"เบา\" และ \"คุมได้ 100%\" แนะนำให้ลอง clone มาเล่นดูครับ ถือว่าเป็นจุดเริ่มต้นที่ดีสำหรับคนที่อยากเข้าใจการทำงานของ Agentic Workflow แบบไม่ต้องปวดหัวกับ Library ที่ซับซ้อนเกินไป",[10,2372,2373,2374,76,2377],{},"👉 ",[14,2375,2376],{},"Repo:",[78,2378,2287],{"href":2287,"rel":2379},[82],{"title":85,"searchDepth":86,"depth":86,"links":2381},[2382,2383,2384],{"id":2292,"depth":89,"text":2293},{"id":2330,"depth":89,"text":2331},{"id":2367,"depth":89,"text":2367},"รีวิว Nanobot AI Agent ที่เคลมว่าเล็กพริกขี้หนู เขียนด้วย Python เพียวๆ ปรับแต่งง่าย",{},"Review HKUDS Nanobot","/blogs/2026-02-08-nanobot-ai-agent",{"title":2277,"description":2385},{"loc":2388},"blogs/2026-02-08-nanobot-ai-agent",[104],"V4i2BnAj07h2kp2WU0DdB9ZzlYWsTOMEOaou0uss3As",{"id":2395,"title":2396,"body":2397,"date":2471,"description":2472,"draft":93,"extension":94,"meta":2473,"navigation":96,"next":97,"ogTitle":2474,"path":2475,"pin":93,"prev":97,"recommends":97,"seo":2476,"sitemap":2477,"stem":2478,"tags":2479,"__hash__":2480},"content/blogs/2026-02-12-glm-5.md","GLM-5 เปิดตัวแล้ว! การก้าวกระโดดครั้งใหญ่สู่ Omni-Model เต็มรูปแบบ 🚀",{"type":7,"value":2398,"toc":2467},[2399,2409,2416,2420,2446,2449,2452,2455],[10,2400,2401,2402,2404,2405,2408],{},"หลังจากที่เพิ่งตื่นเต้นกับ GLM-4.7 ไปหมาดๆ ทาง ",[14,2403,16],{}," ก็ไม่ปล่อยให้รอนาน ปล่อยของใหญ่อย่าง ",[14,2406,2407],{},"GLM-5"," ออกมาตบตลาด AI อีกรอบแล้วครับ!",[10,2410,2411,2412,2415],{},"รอบนี้ไม่ใช่แค่เก่งขึ้น แต่เป็นการยกเครื่องสถาปัตยกรรมใหม่ให้เป็น ",[14,2413,2414],{},"Native Omni-Model"," เต็มตัว คือรับ Input/Output ได้ทั้ง Text, Audio และ Video แบบ Seamless ไม่ต้องผ่านตัวแปลงหลายทอด ทำให้ Response Time ไวขึ้นแบบเห็นได้ชัด",[30,2417,2419],{"id":2418},"ไฮไลท์ของ-glm-5","ไฮไลท์ของ GLM-5",[35,2421,2422,2428,2434,2440],{},[38,2423,2424,2427],{},[14,2425,2426],{},"Unified Modality:"," คุยด้วยเสียง หรือโยนวิดีโอให้วิเคราะห์ได้แบบ Real-time ความหน่วงต่ำมาก (Low Latency) เหมาะเอาไปทำ Voice Agent สุดๆ",[38,2429,2430,2433],{},[14,2431,2432],{},"Deep Reasoning:"," ความสามารถในการแก้โจทย์ Logic ซับซ้อนและการวางแผน (Planning) สำหรับ Agent Workflow ดีขึ้นกว่ารุ่น 4 เยอะมาก",[38,2435,2436,2439],{},[14,2437,2438],{},"Coding & Tool Use:"," เขียน Code ได้แม่นยำขึ้น เข้าใจ Context ของ Project ใหญ่ๆ ได้ดี และเรียกใช้ External Tools (Function Calling) ได้เนียนกริบ",[38,2441,2442,2445],{},[14,2443,2444],{},"Long Context:"," รองรับ Context Window มหาศาล เอา Book ทั้งเล่มหรือ Codebase ทั้งก้อนโยนเข้าไปได้สบาย",[30,2447,2448],{"id":2448},"ความเห็นส่วนตัว",[10,2450,2451],{},"สำหรับ Dev สายสร้าง Agent หรือคนที่ทำระบบ Automation ผ่าน API ตัว GLM-5 ถือว่าเป็นตัวเลือกที่น่ากลัวมาก (ในทางที่ดี) เพราะทั้งฉลาดและราคา (Pricing) น่าจะยังคงความคุ้มค่าสไตล์ Zhipu ไว้",[10,2453,2454],{},"ใครที่รัน Project ด้วย GLM-4 อยู่ แนะนำให้เตรียมวางแผน Migration มาลองตัวนี้เลยครับ น่าจะช่วยลด Error Rate ใน Production ได้เยอะ",[69,2456,2457],{},[10,2458,2459,76,2462],{},[14,2460,2461],{},"รายละเอียดเพิ่มเติม:",[78,2463,2466],{"href":2464,"rel":2465},"https://z.ai/blog/glm-5",[82],"Zhipu AI Blog - GLM-5",{"title":85,"searchDepth":86,"depth":86,"links":2468},[2469,2470],{"id":2418,"depth":89,"text":2419},{"id":2448,"depth":89,"text":2448},"2026-02-12T00:00:00.000Z","สรุปฟีเจอร์เด็ดของ GLM-5 โมเดลเรือธงรุ่นล่าสุดจาก Zhipu AI ที่เก่งรอบด้านทั้งภาพ เสียง และการเขียนโค้ด",{},"GLM-5 Review","/blogs/2026-02-12-glm-5",{"title":2396,"description":2472},{"loc":2475},"blogs/2026-02-12-glm-5",[104],"6KA0eRJl40dqBCCvhPm87IAwxOEryI9_nMye5JfEScE",1774866660812]