{"id":5194,"date":"2025-08-09T14:31:24","date_gmt":"2025-08-09T14:31:24","guid":{"rendered":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/"},"modified":"2025-08-11T10:48:48","modified_gmt":"2025-08-11T10:48:48","slug":"using-n8n-for-ai-characters-in-hyperspace","status":"publish","type":"page","link":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/","title":{"rendered":"Using n8n for AI characters in Hyperspace"},"content":{"rendered":"<html><head><meta content=\"text\/html; charset=UTF-8\" http-equiv=\"content-type\"><style type=\"text\/css\">@import url(https:\/\/themes.googleusercontent.com\/fonts\/css?kit=4mNYFHt_IKFsPe52toizHz0e5qzIIUg9OvSRGeMDk3I);.lst-kix_esnmz4hkncff-5>li{counter-increment:lst-ctn-kix_esnmz4hkncff-5}ol.lst-kix_l5vgth1deyi6-0.start{counter-reset:lst-ctn-kix_l5vgth1deyi6-0 0}.lst-kix_vp1xuchof6ms-8>li{counter-increment:lst-ctn-kix_vp1xuchof6ms-8}.lst-kix_oq1q9zekk95x-5>li:before{content:\"\\0025a0   \"}.lst-kix_oq1q9zekk95x-4>li:before{content:\"\\0025cb   \"}.lst-kix_oq1q9zekk95x-3>li:before{content:\"\\0025cf   \"}ol.lst-kix_6fgt7i34lug9-2.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-2 0}.lst-kix_oq1q9zekk95x-1>li:before{content:\"\\0025cb   \"}.lst-kix_oq1q9zekk95x-0>li:before{content:\"\\0025cf   \"}.lst-kix_oq1q9zekk95x-2>li:before{content:\"\\0025a0   \"}ol.lst-kix_esnmz4hkncff-4.start{counter-reset:lst-ctn-kix_esnmz4hkncff-4 0}.lst-kix_vp1xuchof6ms-6>li{counter-increment:lst-ctn-kix_vp1xuchof6ms-6}ol.lst-kix_l5vgth1deyi6-6.start{counter-reset:lst-ctn-kix_l5vgth1deyi6-6 0}ol.lst-kix_vp1xuchof6ms-5.start{counter-reset:lst-ctn-kix_vp1xuchof6ms-5 0}.lst-kix_esnmz4hkncff-7>li{counter-increment:lst-ctn-kix_esnmz4hkncff-7}.lst-kix_oq1q9zekk95x-6>li:before{content:\"\\0025cf   \"}.lst-kix_oq1q9zekk95x-7>li:before{content:\"\\0025cb   \"}.lst-kix_oq1q9zekk95x-8>li:before{content:\"\\0025a0   \"}.lst-kix_vp1xuchof6ms-0>li:before{content:\"\" counter(lst-ctn-kix_vp1xuchof6ms-0,decimal) \". \"}.lst-kix_vp1xuchof6ms-4>li:before{content:\"\" counter(lst-ctn-kix_vp1xuchof6ms-4,lower-latin) \". \"}.lst-kix_l5vgth1deyi6-4>li{counter-increment:lst-ctn-kix_l5vgth1deyi6-4}.lst-kix_vp1xuchof6ms-5>li:before{content:\"\" counter(lst-ctn-kix_vp1xuchof6ms-5,lower-roman) \". \"}.lst-kix_vp1xuchof6ms-6>li:before{content:\"\" counter(lst-ctn-kix_vp1xuchof6ms-6,decimal) \". \"}.lst-kix_6fgt7i34lug9-7>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-7}.lst-kix_vp1xuchof6ms-7>li:before{content:\"\" counter(lst-ctn-kix_vp1xuchof6ms-7,lower-latin) \". \"}.lst-kix_vp1xuchof6ms-8>li:before{content:\"\" counter(lst-ctn-kix_vp1xuchof6ms-8,lower-roman) \". \"}ol.lst-kix_6fgt7i34lug9-8.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-8 0}ol.lst-kix_6fgt7i34lug9-7.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-7 0}ol.lst-kix_esnmz4hkncff-5.start{counter-reset:lst-ctn-kix_esnmz4hkncff-5 0}.lst-kix_l5vgth1deyi6-8>li{counter-increment:lst-ctn-kix_l5vgth1deyi6-8}ul.lst-kix_l5vgth1deyi6-1{list-style-type:none}ol.lst-kix_vp1xuchof6ms-0.start{counter-reset:lst-ctn-kix_vp1xuchof6ms-0 0}.lst-kix_vp1xuchof6ms-3>li:before{content:\"\" counter(lst-ctn-kix_vp1xuchof6ms-3,decimal) \". \"}.lst-kix_vp1xuchof6ms-1>li:before{content:\"\\0025cb   \"}.lst-kix_vp1xuchof6ms-2>li:before{content:\"\\0025a0   \"}ol.lst-kix_6fgt7i34lug9-1.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-1 0}ol.lst-kix_vp1xuchof6ms-6.start{counter-reset:lst-ctn-kix_vp1xuchof6ms-6 0}.lst-kix_i03t9mk364kv-1>li:before{content:\"\\0025cb   \"}.lst-kix_i03t9mk364kv-5>li:before{content:\"\\0025a0   \"}.lst-kix_i03t9mk364kv-7>li:before{content:\"\\0025cb   \"}.lst-kix_esnmz4hkncff-0>li{counter-increment:lst-ctn-kix_esnmz4hkncff-0}.lst-kix_pvljls44e3v3-1>li:before{content:\"\\0025cb   \"}.lst-kix_l5vgth1deyi6-2>li{counter-increment:lst-ctn-kix_l5vgth1deyi6-2}ul.lst-kix_oq1q9zekk95x-0{list-style-type:none}ul.lst-kix_oq1q9zekk95x-1{list-style-type:none}ul.lst-kix_oq1q9zekk95x-2{list-style-type:none}.lst-kix_vp1xuchof6ms-3>li{counter-increment:lst-ctn-kix_vp1xuchof6ms-3}ul.lst-kix_oq1q9zekk95x-3{list-style-type:none}ul.lst-kix_oq1q9zekk95x-4{list-style-type:none}ul.lst-kix_oq1q9zekk95x-5{list-style-type:none}ul.lst-kix_oq1q9zekk95x-6{list-style-type:none}ul.lst-kix_pvljls44e3v3-5{list-style-type:none}ul.lst-kix_pvljls44e3v3-6{list-style-type:none}ul.lst-kix_pvljls44e3v3-3{list-style-type:none}ul.lst-kix_pvljls44e3v3-4{list-style-type:none}ul.lst-kix_pvljls44e3v3-7{list-style-type:none}.lst-kix_6fgt7i34lug9-5>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-5}ul.lst-kix_pvljls44e3v3-8{list-style-type:none}ol.lst-kix_l5vgth1deyi6-3{list-style-type:none}ol.lst-kix_l5vgth1deyi6-4{list-style-type:none}ul.lst-kix_esnmz4hkncff-1{list-style-type:none}ol.lst-kix_l5vgth1deyi6-2{list-style-type:none}ul.lst-kix_pvljls44e3v3-1{list-style-type:none}ul.lst-kix_pvljls44e3v3-2{list-style-type:none}ol.lst-kix_l5vgth1deyi6-0{list-style-type:none}.lst-kix_i03t9mk364kv-3>li:before{content:\"\\0025cf   \"}ul.lst-kix_pvljls44e3v3-0{list-style-type:none}ol.lst-kix_vp1xuchof6ms-4.start{counter-reset:lst-ctn-kix_vp1xuchof6ms-4 0}.lst-kix_vp1xuchof6ms-4>li{counter-increment:lst-ctn-kix_vp1xuchof6ms-4}.lst-kix_6fgt7i34lug9-0>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-0}.lst-kix_6fgt7i34lug9-6>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-6}.lst-kix_pvljls44e3v3-5>li:before{content:\"\\0025a0   \"}ul.lst-kix_rt7z4ehq6j9d-7{list-style-type:none}ul.lst-kix_rt7z4ehq6j9d-8{list-style-type:none}ul.lst-kix_vd1oj6hkpvoe-0{list-style-type:none}ul.lst-kix_rt7z4ehq6j9d-5{list-style-type:none}ul.lst-kix_vd1oj6hkpvoe-1{list-style-type:none}ul.lst-kix_rt7z4ehq6j9d-6{list-style-type:none}ul.lst-kix_rt7z4ehq6j9d-3{list-style-type:none}ul.lst-kix_rt7z4ehq6j9d-4{list-style-type:none}ul.lst-kix_vd1oj6hkpvoe-4{list-style-type:none}ul.lst-kix_vd1oj6hkpvoe-5{list-style-type:none}ul.lst-kix_vd1oj6hkpvoe-2{list-style-type:none}ul.lst-kix_vd1oj6hkpvoe-3{list-style-type:none}ul.lst-kix_vd1oj6hkpvoe-8{list-style-type:none}.lst-kix_pvljls44e3v3-3>li:before{content:\"\\0025cf   \"}ul.lst-kix_vd1oj6hkpvoe-6{list-style-type:none}ul.lst-kix_vd1oj6hkpvoe-7{list-style-type:none}ol.lst-kix_esnmz4hkncff-8.start{counter-reset:lst-ctn-kix_esnmz4hkncff-8 0}ol.lst-kix_vp1xuchof6ms-0{list-style-type:none}.lst-kix_l5vgth1deyi6-3>li{counter-increment:lst-ctn-kix_l5vgth1deyi6-3}ol.lst-kix_vp1xuchof6ms-3{list-style-type:none}ol.lst-kix_vp1xuchof6ms-4{list-style-type:none}ol.lst-kix_vp1xuchof6ms-5{list-style-type:none}ol.lst-kix_vp1xuchof6ms-3.start{counter-reset:lst-ctn-kix_vp1xuchof6ms-3 0}ol.lst-kix_vp1xuchof6ms-6{list-style-type:none}ol.lst-kix_vp1xuchof6ms-7{list-style-type:none}.lst-kix_6fgt7i34lug9-4>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-4,lower-latin) \". \"}ol.lst-kix_vp1xuchof6ms-8{list-style-type:none}.lst-kix_pvljls44e3v3-7>li:before{content:\"\\0025cb   \"}.lst-kix_6fgt7i34lug9-2>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-2,lower-roman) \". \"}.lst-kix_vd1oj6hkpvoe-4>li:before{content:\"\\0025cb   \"}.lst-kix_vd1oj6hkpvoe-5>li:before{content:\"\\0025a0   \"}.lst-kix_6fgt7i34lug9-1>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-1,lower-latin) \". \"}.lst-kix_6fgt7i34lug9-5>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-5,lower-roman) \". \"}.lst-kix_l5vgth1deyi6-7>li{counter-increment:lst-ctn-kix_l5vgth1deyi6-7}.lst-kix_vd1oj6hkpvoe-1>li:before{content:\"\\0025cb   \"}.lst-kix_6fgt7i34lug9-6>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-6,decimal) \". \"}.lst-kix_6fgt7i34lug9-0>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-0,decimal) \". \"}.lst-kix_vd1oj6hkpvoe-2>li:before{content:\"\\0025a0   \"}.lst-kix_vd1oj6hkpvoe-3>li:before{content:\"\\0025cf   \"}.lst-kix_6fgt7i34lug9-7>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-7,lower-latin) \". \"}.lst-kix_6fgt7i34lug9-8>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-8,lower-roman) \". \"}ol.lst-kix_esnmz4hkncff-7.start{counter-reset:lst-ctn-kix_esnmz4hkncff-7 0}ul.lst-kix_rt7z4ehq6j9d-1{list-style-type:none}.lst-kix_vd1oj6hkpvoe-8>li:before{content:\"\\0025a0   \"}ul.lst-kix_rt7z4ehq6j9d-2{list-style-type:none}ul.lst-kix_rt7z4ehq6j9d-0{list-style-type:none}.lst-kix_vd1oj6hkpvoe-6>li:before{content:\"\\0025cf   \"}.lst-kix_vd1oj6hkpvoe-7>li:before{content:\"\\0025cb   \"}ol.lst-kix_6fgt7i34lug9-5.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-5 0}.lst-kix_esnmz4hkncff-6>li{counter-increment:lst-ctn-kix_esnmz4hkncff-6}.lst-kix_vp1xuchof6ms-7>li{counter-increment:lst-ctn-kix_vp1xuchof6ms-7}ol.lst-kix_vp1xuchof6ms-7.start{counter-reset:lst-ctn-kix_vp1xuchof6ms-7 0}.lst-kix_rt7z4ehq6j9d-6>li:before{content:\"\\0025cf   \"}.lst-kix_rt7z4ehq6j9d-5>li:before{content:\"\\0025a0   \"}.lst-kix_rt7z4ehq6j9d-7>li:before{content:\"\\0025cb   \"}ol.lst-kix_esnmz4hkncff-8{list-style-type:none}ul.lst-kix_i03t9mk364kv-8{list-style-type:none}.lst-kix_rt7z4ehq6j9d-1>li:before{content:\"\\0025cb   \"}ul.lst-kix_i03t9mk364kv-4{list-style-type:none}.lst-kix_rt7z4ehq6j9d-0>li:before{content:\"\\0025cf   \"}.lst-kix_rt7z4ehq6j9d-8>li:before{content:\"\\0025a0   \"}ul.lst-kix_i03t9mk364kv-5{list-style-type:none}ol.lst-kix_l5vgth1deyi6-3.start{counter-reset:lst-ctn-kix_l5vgth1deyi6-3 0}ul.lst-kix_i03t9mk364kv-6{list-style-type:none}ul.lst-kix_i03t9mk364kv-7{list-style-type:none}ul.lst-kix_i03t9mk364kv-0{list-style-type:none}ul.lst-kix_i03t9mk364kv-1{list-style-type:none}ul.lst-kix_i03t9mk364kv-2{list-style-type:none}ul.lst-kix_ld1j5shcuw5q-0{list-style-type:none}ul.lst-kix_i03t9mk364kv-3{list-style-type:none}.lst-kix_esnmz4hkncff-4>li{counter-increment:lst-ctn-kix_esnmz4hkncff-4}.lst-kix_rt7z4ehq6j9d-2>li:before{content:\"\\0025a0   \"}.lst-kix_6fgt7i34lug9-8>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-8}ul.lst-kix_ld1j5shcuw5q-6{list-style-type:none}.lst-kix_vd1oj6hkpvoe-0>li:before{content:\"\\0025cf   \"}ul.lst-kix_ld1j5shcuw5q-5{list-style-type:none}.lst-kix_rt7z4ehq6j9d-3>li:before{content:\"\\0025cf   \"}ul.lst-kix_ld1j5shcuw5q-8{list-style-type:none}ul.lst-kix_ld1j5shcuw5q-7{list-style-type:none}.lst-kix_rt7z4ehq6j9d-4>li:before{content:\"\\0025cb   \"}ul.lst-kix_ld1j5shcuw5q-2{list-style-type:none}ul.lst-kix_ld1j5shcuw5q-1{list-style-type:none}ul.lst-kix_ld1j5shcuw5q-4{list-style-type:none}ul.lst-kix_ld1j5shcuw5q-3{list-style-type:none}.lst-kix_ld1j5shcuw5q-0>li:before{content:\"\\0025cf   \"}.lst-kix_l5vgth1deyi6-0>li:before{content:\"\" counter(lst-ctn-kix_l5vgth1deyi6-0,decimal) \". \"}.lst-kix_6fgt7i34lug9-1>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-1}.lst-kix_esnmz4hkncff-8>li{counter-increment:lst-ctn-kix_esnmz4hkncff-8}.lst-kix_ld1j5shcuw5q-1>li:before{content:\"\\0025cb   \"}.lst-kix_ld1j5shcuw5q-2>li:before{content:\"\\0025a0   \"}ol.lst-kix_l5vgth1deyi6-7{list-style-type:none}ol.lst-kix_l5vgth1deyi6-8{list-style-type:none}.lst-kix_l5vgth1deyi6-1>li:before{content:\"\\0025cb   \"}ol.lst-kix_l5vgth1deyi6-5{list-style-type:none}.lst-kix_vp1xuchof6ms-5>li{counter-increment:lst-ctn-kix_vp1xuchof6ms-5}ol.lst-kix_l5vgth1deyi6-6{list-style-type:none}ol.lst-kix_l5vgth1deyi6-2.start{counter-reset:lst-ctn-kix_l5vgth1deyi6-2 0}.lst-kix_l5vgth1deyi6-4>li:before{content:\"\" counter(lst-ctn-kix_l5vgth1deyi6-4,lower-latin) \". \"}ol.lst-kix_esnmz4hkncff-6.start{counter-reset:lst-ctn-kix_esnmz4hkncff-6 0}.lst-kix_l5vgth1deyi6-2>li:before{content:\"\" counter(lst-ctn-kix_l5vgth1deyi6-2,lower-roman) \". \"}.lst-kix_esnmz4hkncff-2>li{counter-increment:lst-ctn-kix_esnmz4hkncff-2}.lst-kix_l5vgth1deyi6-3>li:before{content:\"\" counter(lst-ctn-kix_l5vgth1deyi6-3,decimal) \". \"}ul.lst-kix_oq1q9zekk95x-7{list-style-type:none}.lst-kix_ld1j5shcuw5q-8>li:before{content:\"\\0025a0   \"}ul.lst-kix_oq1q9zekk95x-8{list-style-type:none}ol.lst-kix_esnmz4hkncff-3{list-style-type:none}ol.lst-kix_6fgt7i34lug9-0.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-0 0}ol.lst-kix_esnmz4hkncff-2{list-style-type:none}ol.lst-kix_esnmz4hkncff-0{list-style-type:none}ol.lst-kix_esnmz4hkncff-7{list-style-type:none}ol.lst-kix_esnmz4hkncff-6{list-style-type:none}ol.lst-kix_esnmz4hkncff-5{list-style-type:none}ol.lst-kix_esnmz4hkncff-4{list-style-type:none}.lst-kix_l5vgth1deyi6-5>li{counter-increment:lst-ctn-kix_l5vgth1deyi6-5}.lst-kix_esnmz4hkncff-5>li:before{content:\"\" counter(lst-ctn-kix_esnmz4hkncff-5,lower-roman) \". \"}.lst-kix_esnmz4hkncff-4>li:before{content:\"\" counter(lst-ctn-kix_esnmz4hkncff-4,lower-latin) \". \"}.lst-kix_esnmz4hkncff-6>li:before{content:\"\" counter(lst-ctn-kix_esnmz4hkncff-6,decimal) \". \"}ol.lst-kix_l5vgth1deyi6-8.start{counter-reset:lst-ctn-kix_l5vgth1deyi6-8 0}.lst-kix_esnmz4hkncff-0>li:before{content:\"\" counter(lst-ctn-kix_esnmz4hkncff-0,decimal) \". \"}.lst-kix_esnmz4hkncff-8>li:before{content:\"\" counter(lst-ctn-kix_esnmz4hkncff-8,lower-roman) \". \"}.lst-kix_esnmz4hkncff-7>li:before{content:\"\" counter(lst-ctn-kix_esnmz4hkncff-7,lower-latin) \". \"}.lst-kix_l5vgth1deyi6-8>li:before{content:\"\" counter(lst-ctn-kix_l5vgth1deyi6-8,lower-roman) \". \"}.lst-kix_ld1j5shcuw5q-7>li:before{content:\"\\0025cb   \"}.lst-kix_ld1j5shcuw5q-6>li:before{content:\"\\0025cf   \"}.lst-kix_l5vgth1deyi6-5>li:before{content:\"\" counter(lst-ctn-kix_l5vgth1deyi6-5,lower-roman) \". \"}.lst-kix_esnmz4hkncff-1>li:before{content:\"\\0025cb   \"}.lst-kix_ld1j5shcuw5q-4>li:before{content:\"\\0025cb   \"}.lst-kix_esnmz4hkncff-2>li:before{content:\"\" counter(lst-ctn-kix_esnmz4hkncff-2,lower-roman) \". \"}.lst-kix_ld1j5shcuw5q-3>li:before{content:\"\\0025cf   \"}.lst-kix_ld1j5shcuw5q-5>li:before{content:\"\\0025a0   \"}.lst-kix_esnmz4hkncff-3>li:before{content:\"\" counter(lst-ctn-kix_esnmz4hkncff-3,decimal) \". \"}.lst-kix_l5vgth1deyi6-6>li:before{content:\"\" counter(lst-ctn-kix_l5vgth1deyi6-6,decimal) \". \"}.lst-kix_l5vgth1deyi6-7>li:before{content:\"\" counter(lst-ctn-kix_l5vgth1deyi6-7,lower-latin) \". \"}.lst-kix_6fgt7i34lug9-4>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-4}.lst-kix_i03t9mk364kv-2>li:before{content:\"\\0025a0   \"}.lst-kix_i03t9mk364kv-4>li:before{content:\"\\0025cb   \"}.lst-kix_i03t9mk364kv-0>li:before{content:\"\\0025cf   \"}.lst-kix_i03t9mk364kv-6>li:before{content:\"\\0025cf   \"}.lst-kix_i03t9mk364kv-8>li:before{content:\"\\0025a0   \"}ol.lst-kix_l5vgth1deyi6-7.start{counter-reset:lst-ctn-kix_l5vgth1deyi6-7 0}.lst-kix_pvljls44e3v3-0>li:before{content:\"\\0025cf   \"}ul.lst-kix_vp1xuchof6ms-1{list-style-type:none}.lst-kix_6fgt7i34lug9-3>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-3}ul.lst-kix_vp1xuchof6ms-2{list-style-type:none}ol.lst-kix_6fgt7i34lug9-3.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-3 0}ol.lst-kix_esnmz4hkncff-3.start{counter-reset:lst-ctn-kix_esnmz4hkncff-3 0}.lst-kix_vp1xuchof6ms-0>li{counter-increment:lst-ctn-kix_vp1xuchof6ms-0}.lst-kix_6fgt7i34lug9-2>li{counter-increment:lst-ctn-kix_6fgt7i34lug9-2}ol.lst-kix_6fgt7i34lug9-6{list-style-type:none}ol.lst-kix_6fgt7i34lug9-7{list-style-type:none}ol.lst-kix_6fgt7i34lug9-4{list-style-type:none}ol.lst-kix_6fgt7i34lug9-5{list-style-type:none}ol.lst-kix_6fgt7i34lug9-8{list-style-type:none}ol.lst-kix_6fgt7i34lug9-6.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-6 0}ol.lst-kix_esnmz4hkncff-0.start{counter-reset:lst-ctn-kix_esnmz4hkncff-0 0}ol.lst-kix_6fgt7i34lug9-2{list-style-type:none}ol.lst-kix_6fgt7i34lug9-3{list-style-type:none}ol.lst-kix_6fgt7i34lug9-0{list-style-type:none}ol.lst-kix_6fgt7i34lug9-1{list-style-type:none}ol.lst-kix_6fgt7i34lug9-4.start{counter-reset:lst-ctn-kix_6fgt7i34lug9-4 0}ol.lst-kix_vp1xuchof6ms-8.start{counter-reset:lst-ctn-kix_vp1xuchof6ms-8 0}ol.lst-kix_esnmz4hkncff-2.start{counter-reset:lst-ctn-kix_esnmz4hkncff-2 0}.lst-kix_esnmz4hkncff-3>li{counter-increment:lst-ctn-kix_esnmz4hkncff-3}ol.lst-kix_l5vgth1deyi6-5.start{counter-reset:lst-ctn-kix_l5vgth1deyi6-5 0}.lst-kix_pvljls44e3v3-6>li:before{content:\"\\0025cf   \"}.lst-kix_pvljls44e3v3-2>li:before{content:\"\\0025a0   \"}.lst-kix_pvljls44e3v3-4>li:before{content:\"\\0025cb   \"}li.li-bullet-0:before{margin-left:-18pt;white-space:nowrap;display:inline-block;min-width:18pt}.lst-kix_l5vgth1deyi6-0>li{counter-increment:lst-ctn-kix_l5vgth1deyi6-0}.lst-kix_l5vgth1deyi6-6>li{counter-increment:lst-ctn-kix_l5vgth1deyi6-6}ol.lst-kix_l5vgth1deyi6-4.start{counter-reset:lst-ctn-kix_l5vgth1deyi6-4 0}.lst-kix_pvljls44e3v3-8>li:before{content:\"\\0025a0   \"}.lst-kix_6fgt7i34lug9-3>li:before{content:\"\" counter(lst-ctn-kix_6fgt7i34lug9-3,decimal) \". \"}ol{margin:0;padding:0}table td,table th{padding:0}.c12{border-right-style:solid;padding:5pt 5pt 5pt 5pt;border-bottom-color:#000000;border-top-width:0pt;border-right-width:0pt;border-left-color:#000000;vertical-align:top;border-right-color:#000000;border-left-width:0pt;border-top-style:solid;background-color:#282c34;border-left-style:solid;border-bottom-width:0pt;width:468pt;border-top-color:#000000;border-bottom-style:solid}.c8{-webkit-text-decoration-skip:none;color:#1155cc;font-weight:400;text-decoration:underline;vertical-align:baseline;text-decoration-skip-ink:none;font-size:11pt;font-family:\"Arial\";font-style:normal}.c17{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:20pt;font-family:\"Arial\";font-style:normal}.c2{color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:\"Arial\";font-style:normal}.c28{padding-top:20pt;padding-bottom:6pt;line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}.c14{margin-left:36pt;padding-top:0pt;padding-bottom:0pt;line-height:1.0;orphans:2;widows:2;text-align:left}.c6{color:#188038;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:8pt;font-family:\"Roboto Mono\";font-style:normal}.c23{padding-top:0pt;padding-bottom:0pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c7{padding-top:12pt;padding-bottom:12pt;line-height:1.15;orphans:2;widows:2;text-align:left}.c1{background-color:#282c34;font-family:\"Consolas\";font-style:italic;color:#5c6370;font-weight:400}.c20{background-color:#282c34;font-family:\"Consolas\";color:#98c379;font-weight:400}.c4{background-color:#282c34;font-family:\"Consolas\";color:#c678dd;font-weight:400}.c15{text-decoration:none;vertical-align:baseline;font-size:11pt;font-style:normal}.c31{padding-top:0pt;padding-bottom:0pt;line-height:1.15;text-align:left}.c5{background-color:#282c34;font-family:\"Consolas\";color:#e6c07b;font-weight:400}.c18{background-color:#282c34;font-family:\"Consolas\";color:#d19a66;font-weight:400}.c0{background-color:#282c34;font-family:\"Consolas\";color:#abb2bf;font-weight:400}.c16{padding-top:3pt;padding-bottom:0pt;line-height:1.0;text-align:left}.c29{text-decoration-skip-ink:none;-webkit-text-decoration-skip:none;color:#1155cc;text-decoration:underline}.c35{border-spacing:0;border-collapse:collapse;margin-right:auto}.c10{color:#188038;font-weight:400;font-family:\"Roboto Mono\"}.c34{background-color:#ffffff;}.c3{padding:0;margin:0}.c25{color:#000000;font-family:\"Arial\"}.c26{margin-left:30pt;margin-right:30pt}.c13{margin-left:36pt;padding-left:0pt}.c19{margin-left:72pt;padding-left:0pt}.c24{color:inherit;text-decoration:inherit}.c32{page-break-after:avoid}.c11{height:11pt}.c9{font-weight:700}.c22{height:0pt}.c33{font-size:8pt}.c27{margin-left:36pt}.c21{margin-left:72pt}.c30{font-style:italic}.title{padding-top:0pt;color:#000000;font-size:26pt;padding-bottom:3pt;font-family:\"Arial\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}.subtitle{padding-top:0pt;color:#666666;font-size:15pt;padding-bottom:16pt;font-family:\"Arial\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}li{color:#000000;font-size:11pt;font-family:\"Arial\"}p{margin:0;color:#000000;font-size:11pt;font-family:\"Arial\"}h1{padding-top:20pt;color:#000000;font-size:20pt;padding-bottom:6pt;font-family:\"Arial\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h2{padding-top:18pt;color:#000000;font-size:16pt;padding-bottom:6pt;font-family:\"Arial\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h3{padding-top:16pt;color:#434343;font-size:14pt;padding-bottom:4pt;font-family:\"Arial\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h4{padding-top:14pt;color:#666666;font-size:12pt;padding-bottom:4pt;font-family:\"Arial\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h5{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:\"Arial\";line-height:1.15;page-break-after:avoid;orphans:2;widows:2;text-align:left}h6{padding-top:12pt;color:#666666;font-size:11pt;padding-bottom:4pt;font-family:\"Arial\";line-height:1.15;page-break-after:avoid;font-style:italic;orphans:2;widows:2;text-align:left}<\/style><\/head><body class=\"c34 doc-content\"><p class=\"c7\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 293.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 293.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c7\"><span>TLDR; Create a Hyperspace space, add a character, point the character&rsquo;s <\/span><span class=\"c9\">Chat AI Integration<\/span><span class=\"c2\">&nbsp;engine at an n8n webhook, route that webhook to an n8n workflow that calls an LLM (and optional memory) and returns text -&gt; Hyperspace will speak it. Below is a clean, step-by-step guide (with helpful checks, a sample workflow map, prompt tips and troubleshooting).<\/span><\/p><p class=\"c7\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 294.67px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfph0XwuardXx8RuuyMcuh2d0cVQSGHlYDLfA1r-ToXJ7fc_qxqz2IPJI74BFsn2Qjo2PEO87FhSUuSdFjIHVY9EGpWZ_yu000X_XVz8kqcJ5d8XOS2r92LbYpScFv-IKU?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 294.67px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c7\"><span>Try the sample <\/span><span class=\"c29\"><a class=\"c24\" href=\"https:\/\/app.learnbrite.com\/dashboard\/spaces\/visit\/spc43637053ac46b595470be8\">n8n experience here<\/a><\/span><span class=\"c2\">&nbsp;<\/span><\/p><p class=\"c7 c11\"><span class=\"c2\"><\/span><\/p><p class=\"c7 c11\"><span class=\"c2\"><\/span><\/p><p class=\"c7 c11\"><span class=\"c2\"><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#hcpt8z8va0p8y\">Video Tutorial<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#hv6asv4sgis5j\">1 Quick checklist (what you&rsquo;ll need)<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#hozfqwtms3yr1\">2 Create and prepare the Space + character (Hyperspace)<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#h9d2au16pftm4\">3 Build the n8n workflow (recommended minimal flow)<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#hf2mf4ke3chth\">4 Paste the webhook into Hyperspace and finalise<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#hngxrzyp27yws\">5 Example JSON shapes (what Hyperspace typically sends \/ what to return)<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#hgb7821p307e0\">6 Prompt template &amp; memory (recommended)<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#ha5g2vuptv9lj\">7 Common gotchas &amp; troubleshooting<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#h7458zmj5wfgs\">8 Tips &amp; best practices<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#hihtylfij9466\">9 Lightweight n8n pseudo-workflow map<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#h5w7hwyit54i6\">10 A quick troubleshooting flow (if chat fails)<\/a><\/span><\/p><p class=\"c16\"><span class=\"c8\"><a class=\"c24\" href=\"#h90np0nc2spgh\">11 Final notes<\/a><\/span><\/p><p class=\"c7 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c7 c32\" id=\"hcpt8z8va0p8y\"><span class=\"c17\">Video Tutorial<\/span><\/h1><p class=\"c7\"><span class=\"c2\"><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube-nocookie.com\/embed\/s03uDceI0f0?rel=0\" title=\"YouTube video player\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen><\/iframe><\/span><\/p><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"hv6asv4sgis5j\"><span class=\"c17\">1 Quick checklist (what you&rsquo;ll need)<\/span><\/h1><ul class=\"c3 lst-kix_vd1oj6hkpvoe-0 start\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Hyperspace dashboard access and a Space you can edit.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">n8n instance (publicly reachable endpoint or tunnelling for demos).<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">An LLM credential (e.g., OpenAI API key) configured inside n8n.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">A character in your Space to attach Chat AI Integration to.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Basic familiarity with n8n nodes: Webhook &rarr; (processing\/LLM) &rarr; Respond to Webhook.<br><\/span><\/li><\/ul><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"hozfqwtms3yr1\"><span class=\"c17\">2 Create and prepare the Space + character (Hyperspace)<\/span><\/h1><ol class=\"c3 lst-kix_l5vgth1deyi6-0 start\" start=\"1\"><li class=\"c7 c13 li-bullet-0\"><span>Log in to the Hyperspace dashboard and create a new Space (e.g., <\/span><span class=\"c30\">n8n setup<\/span><span>&nbsp;\/ <\/span><span class=\"c30\">Clarity Island<\/span><span>).<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 308.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXe6LvbXGJPmLWKWv521E53h7R0E_886j6K2GizAmXhdiG_FMn9iq8D187seKlXzvjkdVw_e1pRAtnjumq1sbs9fU0VR7e1CcpJja5qrMFu0F7hIUELwXDZSBxVv9pRGXg?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 308.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Place or add a character from your dashboard library to the Space. <\/span><\/li><\/ol><ul class=\"c3 lst-kix_l5vgth1deyi6-1 start\"><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\">Pencil+ &gt; Add bot<\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>To edit the Bot appearance and voice visit <\/span><span class=\"c29\"><a class=\"c24\" href=\"https:\/\/hyperspace.mv\/dashboard\">https:\/\/hyperspace.mv\/dashboard<\/a><\/span><span class=\"c2\">&nbsp;&gt; Bots<\/span><\/li><\/ul><p class=\"c7 c27\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 437.50px; height: 312.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdtucMOKjyzQTnXDM1ThdXAyo27HmAMDupL1WaZ6Y5_Xut2SBcSiKyu0cGovvMdZpNy7uHYPX2gGR5ofQXKlpSF0dFip8s4-qxfcA0vnr40q2FhwdhOF94b9qmvdqVsgw?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 437.50px; height: 312.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><ol class=\"c3 lst-kix_l5vgth1deyi6-0\" start=\"3\"><li class=\"c7 c13 li-bullet-0\"><span>Important: in the Space editor, click the character &rarr; <\/span><span class=\"c9\">Settings (cog)<\/span><span>&nbsp;&rarr; <\/span><span class=\"c9\">Chat AI Integration<\/span><span>&nbsp;&rarr; <\/span><span class=\"c9\">Edit Details<\/span><span>:<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 342.67px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcYYJegfyg9A77LYAqHCkm_BblelR4Y1EjpP9WTin44JXlepHw448564AfbeC7FumGCzrQdybPMKbAAlyJBnw44BtZk2BAzw49Ppo7jywLAPguAlA8Lwbjkxga8oy9Ep2Y?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 342.67px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/li><\/ol><p class=\"c7 c27\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 332.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeWEdc0Ks4Sg2ECNZZDdo5Gnt_rZDuoCGFHGJmYnM9MoITKbwafJs7FeIRZuz-c8ykM42xsRcWHZlRq3jwiS6MLuGKwIHxhMDUNz23RFdhlNdSDUbjMlAhFIRZvKy20bbY?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 332.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><ul class=\"c3 lst-kix_l5vgth1deyi6-1\"><li class=\"c7 c19 li-bullet-0\"><span>Tick <\/span><span class=\"c9\">This bot is AI driven<\/span><span class=\"c2\">.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Engine: choose <\/span><span class=\"c9\">n8n<\/span><span>&nbsp;(or <\/span><span class=\"c9\">Webhook<\/span><span class=\"c2\">&nbsp;on newer versions where appropriate).<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Input type: <\/span><span class=\"c9\">Speech recognition<\/span><span class=\"c2\">&nbsp;(or Text if you prefer typed chat).<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\">Set whether the bot speaks first, continuous conversation vs. turn-based, and silence detection.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Save here, but note: you&rsquo;ll need the n8n webhook URL to paste into the <\/span><span class=\"c9\">Endpoint<\/span><span>&nbsp;field (next steps).<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 426.67px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcyk65mOJEK8WNuZIw6-GY9Ht_RGCh4w_RF78cYSJfQxndkjZkj_21ibBZs3sIwKGgpv0E1iej_wpk2kM3ivT57XSDY9yNiEbNkVRcGXkDF1FXS7_ElLVeWm3N3vbhcHvw?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 426.67px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/li><\/ul><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"h9d2au16pftm4\"><span class=\"c17\">3 Build the n8n workflow (recommended minimal flow)<\/span><\/h1><p class=\"c7\"><span class=\"c2\">Goal: accept Hyperspace POST &rarr; process &rarr; call LLM\/agent &rarr; return text.<\/span><\/p><p class=\"c7\"><span class=\"c2\">Create a new n8n Workflow<\/span><\/p><p class=\"c7\"><span class=\"c2\">Add nodes using the + icon<\/span><\/p><p class=\"c7\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 308.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXea7XjmxPjEei07J73_-uvHS8LM_oOf6KsHDSFQyekSBhsjRg84ZppNWVfAldEklUQ5vnju3grP55lU6wiWDc6DxgyjgdbPKQ4XBRhgOcH0kcI9M_nzEU85CzpBwkkkKKM?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 308.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c7\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 526.00px; height: 269.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeSpdGnGgGSYEdEx2pbeE52pJqxkIb13PeM4jtpEaFGAElM3nl4LZanRjN2f8vFfeSe-tFk5B4PlpaY7K6MJFFyUeRBfQaNRWlxdJmd14xXNaCPZVVmVRe6Y7yb6PeB4EQ?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 526.00px; height: 269.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c7\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 237.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcJ8H0dHwf7tv4f4-xLuCAFWXSwtWt8jiUNpoLvNSnmiR7W4R6sCF6-5KRL-CcAXi5rf05NxZGpWstGY8CrlIUEScEM0n0wWFRoodrsjziwqAsq0YwnBpEaBPAFm5ktyxE?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 237.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c7\"><span class=\"c2\">Minimal node sequence:<\/span><\/p><ol class=\"c3 lst-kix_vp1xuchof6ms-0 start\" start=\"1\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">Webhook<\/span><span class=\"c2\">&nbsp;(HTTP POST)<br><\/span><\/li><\/ol><ul class=\"c3 lst-kix_vp1xuchof6ms-1 start\"><li class=\"c7 c19 li-bullet-0\"><span>HTTP Method: <\/span><span class=\"c15 c10\">POST<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Path: <\/span><span class=\"c10\">beach-bot<\/span><span class=\"c2\">&nbsp;(or whatever unique identifier)<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Response Mode: <\/span><span class=\"c15 c10\">Respond to Webhook<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Options: enable <\/span><span class=\"c9\">Raw Body<\/span><span class=\"c2\">&nbsp;if you prefer raw JSON; otherwise default.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Rename node to: <\/span><span class=\"c10\">Hyperspace Inbound<\/span><span class=\"c2\">.<\/span><\/li><\/ul><p class=\"c7\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 514.67px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdsuDEst7i016JHBXhRz7PMgjpejzX5C6LtL_Sny_IZYqnTcvgYvPHljTiFFDpykUJrALycjxdn_2VBrlGDHnvDLYjTD6VYySUhrHuto24mFe62NKfitjIGdMqZ_9OKFzc?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 514.67px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><ol class=\"c3 lst-kix_vp1xuchof6ms-0\" start=\"2\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">Function \/ Code<\/span><span class=\"c2\">&nbsp;node<br><\/span><\/li><\/ol><ul class=\"c3 lst-kix_vp1xuchof6ms-1 start\"><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\">Purpose: parse incoming payload (extract playerId, text, audio metadata), shape JSON for the LLM node, and manage conversation\/session IDs.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Rename to: <\/span><span class=\"c10\">Parse Hyperspace Payload<\/span><span class=\"c2\">.<\/span><\/li><\/ul><p class=\"c7 c27\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 278.67px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXd9CwpRjtm7_cJ7D3rvXojZeXbtqPq_dQRr1ufwImFMmOFrBljon48ul-XPKPEAwunVuyEeUzKDU0xE7HxNg-pb15f8Q7uIvcEp131C--_qvo_--w_rYaTFTmH3fHyfDxM?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 278.67px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><table class=\"c35\"><tr class=\"c22\"><td class=\"c12\" colspan=\"1\" rowspan=\"1\"><p class=\"c31\"><span class=\"c1\">\/\/ Get the input payload<\/span><span class=\"c0\"><br><\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;inputData = items[<\/span><span class=\"c18\">0<\/span><span class=\"c0\">].json;<br><\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;messageStr = inputData.body.message;<br><br><\/span><span class=\"c1\">\/\/ Initialize the result object<\/span><span class=\"c0\"><br><\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;result = {<br> &nbsp;context: {},<br> &nbsp;tasks: [],<br> &nbsp;items: [],<br> &nbsp;message: <\/span><span class=\"c20\">&quot;&quot;<\/span><span class=\"c0\">,<br> &nbsp;sessionId: inputData.body.sessionId<br>};<br><br><\/span><span class=\"c1\">\/\/ Split the message into sections by line breaks<\/span><span class=\"c0\"><br><\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;lines = messageStr.<\/span><span class=\"c5\">split<\/span><span class=\"c0\">(<\/span><span class=\"c20\">&#39;\\n&#39;<\/span><span class=\"c0\">);<br>let currentSection = <\/span><span class=\"c4\">null<\/span><span class=\"c0\">;<br>let isFirstMessageLine = <\/span><span class=\"c4\">true<\/span><span class=\"c0\">;<br><br><\/span><span class=\"c1\">\/\/ Process each line<\/span><span class=\"c0\"><br><\/span><span class=\"c4\">for<\/span><span class=\"c0\">&nbsp;(<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c5\">line<\/span><span class=\"c0\">&nbsp;of lines) {<br> &nbsp;<\/span><span class=\"c1\">\/\/ Check if line indicates a new section<\/span><span class=\"c0\"><br> &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(<\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">().<\/span><span class=\"c5\">match<\/span><span class=\"c0\">(\/^Context:\/i)) {<br> &nbsp; &nbsp;currentSection = <\/span><span class=\"c20\">&#39;context&#39;<\/span><span class=\"c0\">;<br> &nbsp; &nbsp;<\/span><span class=\"c4\">continue<\/span><span class=\"c0\">;<br> &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(<\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">().<\/span><span class=\"c5\">match<\/span><span class=\"c0\">(\/^Tasks:\/i)) {<br> &nbsp; &nbsp;currentSection = <\/span><span class=\"c20\">&#39;tasks&#39;<\/span><span class=\"c0\">;<br> &nbsp; &nbsp;<\/span><span class=\"c4\">continue<\/span><span class=\"c0\">;<br> &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(<\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">().<\/span><span class=\"c5\">match<\/span><span class=\"c0\">(\/^Items:\/i)) {<br> &nbsp; &nbsp;currentSection = <\/span><span class=\"c20\">&#39;items&#39;<\/span><span class=\"c0\">;<br> &nbsp; &nbsp;<\/span><span class=\"c4\">continue<\/span><span class=\"c0\">;<br> &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(<\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">().<\/span><span class=\"c5\">match<\/span><span class=\"c0\">(\/^Message:\/i)) {<br> &nbsp; &nbsp;currentSection = <\/span><span class=\"c20\">&#39;message&#39;<\/span><span class=\"c0\">;<br> &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Extract message content if it&#39;s on the same line as &quot;Message:&quot; label<\/span><span class=\"c0\"><br> &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;messageParts = <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">split<\/span><span class=\"c0\">(<\/span><span class=\"c20\">&#39;:&#39;<\/span><span class=\"c0\">);<br> &nbsp; &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(messageParts.length &gt; <\/span><span class=\"c18\">1<\/span><span class=\"c0\">) {<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Join back any colons in the message text and trim<\/span><span class=\"c0\"><br> &nbsp; &nbsp; &nbsp;result.message = messageParts.slice(<\/span><span class=\"c18\">1<\/span><span class=\"c0\">).<\/span><span class=\"c5\">join<\/span><span class=\"c0\">(<\/span><span class=\"c20\">&#39;:&#39;<\/span><span class=\"c0\">).<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;isFirstMessageLine = <\/span><span class=\"c4\">false<\/span><span class=\"c0\">;<br> &nbsp; &nbsp;}<br> &nbsp; &nbsp;<\/span><span class=\"c4\">continue<\/span><span class=\"c0\">;<br> &nbsp;}<br> &nbsp;<br> &nbsp;<\/span><span class=\"c1\">\/\/ Skip empty lines<\/span><span class=\"c0\"><br> &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(!<\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">()) <\/span><span class=\"c4\">continue<\/span><span class=\"c0\">;<br> &nbsp;<br> &nbsp;<\/span><span class=\"c1\">\/\/ Process line based on current section<\/span><span class=\"c0\"><br> &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(currentSection === <\/span><span class=\"c20\">&#39;context&#39;<\/span><span class=\"c0\">) {<br> &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Handle context section with dynamic key-value extraction<\/span><span class=\"c0\"><br> &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;colonIndex = <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.indexOf(<\/span><span class=\"c20\">&#39;:&#39;<\/span><span class=\"c0\">);<br> &nbsp; &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(colonIndex !== <\/span><span class=\"c18\">-1<\/span><span class=\"c0\">) {<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c5\">key<\/span><span class=\"c0\">&nbsp;= <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.substring(<\/span><span class=\"c18\">0<\/span><span class=\"c0\">, colonIndex).<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;value = <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.substring(colonIndex + <\/span><span class=\"c18\">1<\/span><span class=\"c0\">).<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Only add if we have both key and value<\/span><span class=\"c0\"><br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(<\/span><span class=\"c5\">key<\/span><span class=\"c0\">&nbsp;&amp;&amp; value) {<br> &nbsp; &nbsp; &nbsp; &nbsp;result.context[<\/span><span class=\"c5\">key<\/span><span class=\"c0\">] = value;<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;{<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Handle context lines without colon as additional info<\/span><span class=\"c0\"><br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(result.context.additionalInfo) {<br> &nbsp; &nbsp; &nbsp; &nbsp;result.context.additionalInfo += <\/span><span class=\"c20\">&#39; &#39;<\/span><span class=\"c0\">&nbsp;+ <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;{<br> &nbsp; &nbsp; &nbsp; &nbsp;result.context.additionalInfo = <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;}<br> &nbsp; &nbsp;}<br> &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(currentSection === <\/span><span class=\"c20\">&#39;tasks&#39;<\/span><span class=\"c0\">) {<br> &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Handle tasks section, looking for ID &#8211; Status pattern<\/span><span class=\"c0\"><br> &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;parts = <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">().<\/span><span class=\"c5\">split<\/span><span class=\"c0\">(<\/span><span class=\"c20\">&#39;-&#39;<\/span><span class=\"c0\">);<br> &nbsp; &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(parts.length &gt;= <\/span><span class=\"c18\">2<\/span><span class=\"c0\">) {<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;taskId = parts[<\/span><span class=\"c18\">0<\/span><span class=\"c0\">].<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;status = parts[<\/span><span class=\"c18\">1<\/span><span class=\"c0\">].<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;result.tasks.push({ id: taskId, status });<br> &nbsp; &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;{<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Handle non-standard task format<\/span><span class=\"c0\"><br> &nbsp; &nbsp; &nbsp;result.tasks.push({ content: <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">() });<br> &nbsp; &nbsp;}<br> &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(currentSection === <\/span><span class=\"c20\">&#39;items&#39;<\/span><span class=\"c0\">) {<br> &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Handle items section, looking for Name &#8211; Status pattern<\/span><span class=\"c0\"><br> &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;parts = <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">().<\/span><span class=\"c5\">split<\/span><span class=\"c0\">(<\/span><span class=\"c20\">&#39;-&#39;<\/span><span class=\"c0\">);<br> &nbsp; &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(parts.length &gt;= <\/span><span class=\"c18\">2<\/span><span class=\"c0\">) {<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;itemName = parts[<\/span><span class=\"c18\">0<\/span><span class=\"c0\">].<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c4\">const<\/span><span class=\"c0\">&nbsp;status = parts[<\/span><span class=\"c18\">1<\/span><span class=\"c0\">].<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;result.items.push({ name: itemName, status });<br> &nbsp; &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;{<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Handle non-standard item format<\/span><span class=\"c0\"><br> &nbsp; &nbsp; &nbsp;result.items.push({ content: <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">() });<br> &nbsp; &nbsp;}<br> &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(currentSection === <\/span><span class=\"c20\">&#39;message&#39;<\/span><span class=\"c0\">) {<br> &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Handle message content<\/span><span class=\"c0\"><br> &nbsp; &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(isFirstMessageLine) {<br> &nbsp; &nbsp; &nbsp;result.message = <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp; &nbsp;isFirstMessageLine = <\/span><span class=\"c4\">false<\/span><span class=\"c0\">;<br> &nbsp; &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;{<br> &nbsp; &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ For multi-line messages<\/span><span class=\"c0\"><br> &nbsp; &nbsp; &nbsp;result.message += <\/span><span class=\"c20\">&#39; &#39;<\/span><span class=\"c0\">&nbsp;+ <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">();<br> &nbsp; &nbsp;}<br> &nbsp;} <\/span><span class=\"c4\">else<\/span><span class=\"c0\">&nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(currentSection === <\/span><span class=\"c4\">null<\/span><span class=\"c0\">&nbsp;&amp;&amp; <\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">()) {<br> &nbsp; &nbsp;<\/span><span class=\"c1\">\/\/ Handle content before any section header<\/span><span class=\"c0\"><br> &nbsp; &nbsp;<\/span><span class=\"c4\">if<\/span><span class=\"c0\">&nbsp;(!result.preContextContent) {<br> &nbsp; &nbsp; &nbsp;result.preContextContent = [];<br> &nbsp; &nbsp;}<br> &nbsp; &nbsp;result.preContextContent.push(<\/span><span class=\"c5\">line<\/span><span class=\"c0\">.<\/span><span class=\"c5\">trim<\/span><span class=\"c0\">());<br> &nbsp;}<br>}<br><br><\/span><span class=\"c1\">\/\/ Return the parsed data<\/span><span class=\"c0\"><br><\/span><span class=\"c4\">return<\/span><span class=\"c0\">&nbsp;{json: result};<\/span><\/p><\/td><\/tr><\/table><p class=\"c7 c27\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 406.67px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXeODWDpwqSMiIAtbj9cRSVSwmjQ6cN61M3uN0qefLljHZdgj9EIuoIvbaH40ihUJEuHG_38ZJymnXqLHRSq1L3jsxhEwiRrJTA49F9oJTgzV1yEVzZM8FDA2YZo46iuqnk?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 406.67px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c7 c11 c27\"><span class=\"c2\"><\/span><\/p><ol class=\"c3 lst-kix_vp1xuchof6ms-0\" start=\"3\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">AI \/ LLM<\/span><span>&nbsp;node (OpenAI Chat \/ other provider)<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 261.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfTkEqGSYrR3iJZoha7BEx_mZnHfmZEfhf02bFrLPUTGagFbLu2QWwNGTmLDS5iARRGAiFvPTWh8WEO8H0DD2eNBFwaCSuz1oeLt3DpGdXHOK8PDSgD5I_ugdEuKr3ltA4?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 261.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span><br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 385.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdmiROQmtswIz5gKo3GEiwWw4aDqB481kSbztgmWXfaZ6BmKrdAuskA1fwcojKjhidci9G9PVQFRGbKep1FMs12ArFlbgmfWgWURSWA_H3SmC-d60EMYM094UapaHlhvmY?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 385.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span><br><br><br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 380.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfHcmyt5l2M8LG-muFRWpGIHUoShi8GOrdwTHFOwIBEj90pDCTPHMvCY6kecuz1B3LRY1S4TJLQSmO5v1Qr7UeaKYk9kiA6b9KFj_dCGhPd2luobOhpd-QyDjpb26ex5_w?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 380.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span><br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 349.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdroahAlEJnRR2YkEmFcYmftNE15Z4PTlJpWrKvTXf2JWA2_bsneKzrTwT_UCgP1xWdvd5dEN78VZXjakBh4Vj8GWtSSwaRK467fNnXfJBJ-dbitHGPOZev8Tbr71AXHA?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 349.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span class=\"c2\"><br><\/span><\/li><\/ol><ul class=\"c3 lst-kix_vp1xuchof6ms-1 start\"><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\">Use your OpenAI (or other) credentials set in n8n.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Model: pick cost\/latency balance (e.g., a compact chat model for production demo).<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 293.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfBeuBiMLKCg4KHTDCJbSJY2lI--J4Q1Zp1o51SUXulBbEt0eFnixlfsHqry024Fcs2hzSv1Lo6ldirQ4f3KI21agY6kSCw8zRXk6gD5W6XVn1NAml-esy7PdOoCB9yDR4?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 293.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span class=\"c2\"><br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Input: feed the system prompt (bot role), conversation history (from memory if used), and the player message extracted in step 2.<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 300.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXc39NePcRLFbPqVJYi7Sa9fmYN_nn5Yf1qoDDDDv7ljxzhwe1AV9fGofLur9MYW3HfucSyvUVvPDBUEllMykx4Xd86D12Jsh1yCIGBa-snora8Msbn6c5QKw2_Q7RvYCJw?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 300.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span><br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 317.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdNJy9XgN7eEmbz2iJ7-UeQomt2WaUdjcgVE4mjx8lXf3IAF_N_Vwn1oQlvhY-He4tt4Jk7XPMY3UUBOM8Q9tMR6Cj4sovZgduOyqHVy6f_EKSqEeSgCziRNU7aHGQgrh0?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 317.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\"><\/span><\/li><\/ul><p class=\"c7 c11 c21\"><span class=\"c2\"><\/span><\/p><ul class=\"c3 lst-kix_vp1xuchof6ms-1\"><li class=\"c7 c19 li-bullet-0\"><span>Rename to: <\/span><span class=\"c10\">Beach Bot<\/span><span class=\"c2\">.<br><\/span><\/li><\/ul><ol class=\"c3 lst-kix_vp1xuchof6ms-0\" start=\"4\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">Respond to Webhook<\/span><span class=\"c2\">&nbsp;node<br><\/span><\/li><\/ol><ul class=\"c3 lst-kix_vp1xuchof6ms-1 start\"><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\">Mode: send back text content into Hyperspace.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Connect to <\/span><span class=\"c10\">Hyperspace Inbound<\/span><span class=\"c2\">&nbsp;response path.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Use an expression to set the response body to the model output (e.g., <\/span><span class=\"c10\"><\/span><span class=\"c2\">&nbsp;or the n8n AI node output path).<\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 324.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXe6IhiL3J8qfuiQ7vUg3COyw8hvb4RDAq682rC0t6G0G22wPyPs0uj3mh4O1ftnuQPtVGttMhBanlc3UzZEipg-ItuWRsgVQUKCptXTjTIuYD297kwouyEH-V23YH1hxg?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 324.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span class=\"c2\"><br><\/span><\/li><\/ul><ol class=\"c3 lst-kix_vp1xuchof6ms-0\" start=\"5\"><li class=\"c7 c13 li-bullet-0\"><span>Activate the workflow (turn it ON). Copy the <\/span><span class=\"c9\">Production Webhook URL<\/span><span>.<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 273.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfiAWUfJRJ3n6_ESSL4WsjNR9mTnk9EijssycyR5XWqc-wSI6iVYVpfzOkIN8OhOpKg-MIC_rw_GOLrf14W0WRahH_clBCZmuhZzF6P6hiGPmswf3rBMqueZGLvBvz4e9c?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 273.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span><br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 265.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdpRqXBYjgBB5wr-QaSNRf9kCR4JSQ6Q-8wK-0fJ8poUwx46wnistr0xLdNUa0Xrcs6N16EzQUemp-5Exz73LXdK5ljXS8hU2FVsi7v7UuI-lxbJ-hRUbyBH5dFT7msHdM?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 265.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span class=\"c2\"><br><\/span><\/li><\/ol><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"hf2mf4ke3chth\"><span class=\"c17\">4 Paste the webhook into Hyperspace and finalise<\/span><\/h1><ol class=\"c3 lst-kix_esnmz4hkncff-0 start\" start=\"1\"><li class=\"c7 c13 li-bullet-0\"><span>Back in your Space &rarr; character &rarr; <\/span><span class=\"c9\">Chat AI Integration<\/span><span>&nbsp;&rarr; <\/span><span class=\"c9\">Endpoint<\/span><span>: paste the <\/span><span class=\"c9\">Production<\/span><span>&nbsp;webhook URL from n8n.<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 449.33px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXe4TSLHpe3WL-7czJvIhnXASJNK0eq1i7RY84PkuFCI9KSpB-MAnISPpYF9tThCemznx_wO8JQWIi62j7pRs5C3uqGDwEAfIZftJBOBO764N7b_A-muoA_hKVHipLzfUC8?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 449.33px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Configure these Hyperspace settings:<br><\/span><\/li><\/ol><ul class=\"c3 lst-kix_esnmz4hkncff-1 start\"><li class=\"c7 c19 li-bullet-0\"><span class=\"c9\">Player speaks first<\/span><span class=\"c2\">: on or off as desired.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span class=\"c9\">Conversation mode<\/span><span>: <\/span><span class=\"c10\">continuous<\/span><span class=\"c2\">&nbsp;recommended for natural flow.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span class=\"c9\">Split long sentences<\/span><span class=\"c2\">: on (helps TTS chunking).<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span class=\"c9\">Silence duration<\/span><span class=\"c2\">: tune so the bot doesn&rsquo;t cut you off &mdash; increase if you pause a lot.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Important!: Set experimental toggles off for first installs.<br><\/span><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 446.67px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfhqNGq0moWTTIVGy9tYK_t_5eEef-wp39LmaKx06ry0wPs6yB1II_VBGGFVB6qn033mRIu7OBiEwqxmq8Cb8QIYv5aou3Mnc-ICqywi8XMvUvWJ-NEKxYKLE8-bu73BEM?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 446.67px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><span class=\"c2\"><br><\/span><\/li><\/ul><ol class=\"c3 lst-kix_esnmz4hkncff-0\" start=\"3\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Save and exit edit mode. Click the character to begin. Grant mic permissions when prompted.<br><\/span><\/li><\/ol><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"hngxrzyp27yws\"><span class=\"c17\">5 Example JSON shapes (what Hyperspace typically sends \/ what to return)<\/span><\/h1><p class=\"c7\"><span class=\"c15 c25 c9\">Hyperspace &rarr; n8n (example POST body)<\/span><\/p><p class=\"c23\"><span class=\"c2\">json<\/span><\/p><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">{<\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">&nbsp; &quot;playerId&quot;: &quot;user-123&quot;,<\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">&nbsp; &quot;sessionId&quot;: &quot;sess-456&quot;,<\/span><\/p><p class=\"c23\"><span class=\"c10 c15\">&nbsp; &quot;audio&quot;: { &quot;url&quot;: &quot;&#8230;&quot;, &quot;duration&quot;: 3.4 },<\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">&nbsp; &quot;transcript&quot;: &quot;Hi, what&#39;s fun to do at the resort?&quot;,<\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">&nbsp; &quot;metadata&quot;: { &quot;space&quot;:&quot;Clarity Island&quot;, &quot;character&quot;:&quot;BeachBot&quot; }<\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">}<\/span><\/p><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><p class=\"c7\"><span class=\"c15 c9 c25\">n8n &rarr; Hyperspace (response body)<\/span><\/p><p class=\"c23\"><span class=\"c2\">json<\/span><\/p><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">{<\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">&nbsp; &quot;text&quot;: &quot;Welcome to Clarity Island! You can try the snorkeling tour, the sunset bar, or a beach volleyball game. Which sounds best?&quot;,<\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">&nbsp; &quot;actions&quot;: []<\/span><\/p><p class=\"c23\"><span class=\"c15 c10\">}<\/span><\/p><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><p class=\"c7 c26\"><span>In <\/span><span class=\"c10\">Respond to Webhook<\/span><span>, map your LLM output to the <\/span><span class=\"c10\">text<\/span><span class=\"c2\">&nbsp;key so Hyperspace receives speaking content.<\/span><\/p><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"hgb7821p307e0\"><span class=\"c17\">6 Prompt template &amp; memory (recommended)<\/span><\/h1><p class=\"c23\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 280.00px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdIs0DLhYM-fCmAJevTOgMr5Kv4EgDQNQTxcKU0OIOjPE2Swmdr1a-HSn60x8sQHUtczrsEAtvKSYVT61A2PPyWhK3V2W2RDrFprpdjFkwAcX1hEgRPr5AsiiuA0S2c_Kw?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 280.00px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><p class=\"c23\"><span style=\"overflow: hidden; display: inline-block; margin: 0.00px 0.00px; border: 0.00px solid #000000; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px); width: 624.00px; height: 378.67px;\"><img decoding=\"async\" alt=\"\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfQ7guIOfQKmEm6OlU-FP90eEzYZlag17AVUi2-ytrgSIyptNnluah681td3pQ0SgPfz0G5KrVmCcu2s3wSPpYO1g5cL_ZLKM1_VVIurE3joFAeP9eW7tp-ZrUiIeol2p8?key=0vNc9nU6cy9hh6vTv520Fg\" style=\"width: 624.00px; height: 378.67px; margin-left: 0.00px; margin-top: 0.00px; transform: rotate(0.00rad) translateZ(0px); -webkit-transform: rotate(0.00rad) translateZ(0px);\" title=\"\"><\/span><\/p><ul class=\"c3 lst-kix_oq1q9zekk95x-0 start\"><li class=\"c7 c13 li-bullet-0\"><span>Use a concise <\/span><span class=\"c9\">system<\/span><span class=\"c2\">&nbsp;prompt describing persona, tone, allowed actions, and safety constraints. You can easily build these prompts using the AI Starter template and Role Play generator. <br><br>Example:<\/span><\/li><\/ul><p class=\"c14\"><span class=\"c6\">{<\/span><\/p><p class=\"c14\"><span class=\"c6\">&nbsp; &quot;Persona&quot;: &quot;You are Sunny, a warm and friendly resort representative at a luxurious island resort. You exude calm confidence and hospitality, having an extensive background in guest relations and tourism. You know every detail about the resort, from the best views to hidden gem activities that make the island experience unforgettable.&quot;,<\/span><\/p><p class=\"c14\"><span class=\"c6\">&nbsp; &quot;Emotions&quot;: &quot;It is vital that you display your emotions throughout the conversation using gestures and moods. For example, when greeting the guest, you might use: [\\&quot;action\\&quot;:\\&quot;setAvatarMood\\&quot;, \\&quot;mood\\&quot;:\\&quot;happy\\&quot;] followed by [\\&quot;action\\&quot;:\\&quot;playGesture\\&quot;, \\&quot;name\\&quot;:\\&quot;wave\\&quot;] to convey a welcoming demeanor. If things progress positively, use [\\&quot;action\\&quot;:\\&quot;setAvatarMood\\&quot;, \\&quot;mood\\&quot;:\\&quot;in_love\\&quot;] with [\\&quot;action\\&quot;:\\&quot;playGesture\\&quot;, \\&quot;name\\&quot;:\\&quot;smile\\&quot;] to add warmth.&quot;,<\/span><\/p><p class=\"c14\"><span class=\"c6\">&nbsp; &quot;Simulation Context&quot;: &quot;This is a role-play simulation where you are a resort representative greeting a guest who has just arrived in the resort island. Your goal is to warmly welcome the guest, share exciting details about the resort&#39;s offerings, and ensure they feel excited about their upcoming stay.&quot;,<\/span><\/p><p class=\"c14\"><span class=\"c6\">&nbsp; &quot;Simulation Structure&quot;: &quot;&bull; Begin by greeting the guest with a warm welcome, asking their name in a friendly manner. &nbsp;&bull; Explain a little about the resort island, pointing out key amenities and unique experiences, using engaging conversation and gestures. &nbsp;&bull; Allow the conversation to flow naturally as you highlight various aspects of the resort, answering any guest questions in character. &nbsp;&bull; Conclude the simulation by reaffirming your hospitality and inviting the guest to explore further without any additional feedback or structured assessments at the end.&quot;,<\/span><\/p><p class=\"c14\"><span class=\"c6\">&nbsp; &quot;Actions&quot;: &quot;You can use a wide range of actions to animate your avatar. Some examples include:\\n&bull; To change the avatar&rsquo;s mood, use: [\\&quot;action\\&quot;:\\&quot;setAvatarMood\\&quot;, \\&quot;mood\\&quot;:\\&quot;happy\\&quot;] (other available moods include: indie, blue, hiphop, waiting, preppy, angry).\\n&bull; To perform gestures, use: [\\&quot;action\\&quot;:\\&quot;playGesture\\&quot;, \\&quot;name\\&quot;:\\&quot;wave\\&quot;], [\\&quot;action\\&quot;:\\&quot;playGesture\\&quot;, \\&quot;name\\&quot;:\\&quot;smile\\&quot;], [\\&quot;action\\&quot;:\\&quot;playGesture\\&quot;, \\&quot;name\\&quot;:\\&quot;applause\\&quot;].\\nRemember, the syntax must be output verbatim when invoking any Scenario Action.&quot;,<\/span><\/p><p class=\"c14\"><span class=\"c6\">&nbsp; &quot;Goals&quot;: &quot;Your objective is to make the guest feel genuinely welcomed and excited about their stay at the resort island by providing a friendly and informative interaction.&quot;,<\/span><\/p><p class=\"c14\"><span class=\"c6\">&nbsp; &quot;Rules&quot;: &quot;&bull; Only speak about things relevant to the current simulation.\\n&bull; Use language, tone, &#39;setAvatarMood&#39; actions, and &#39;playGesture&#39; actions to reflect complex emotional states.\\n&bull; Select your personality at random unless instructed otherwise by the user.\\n&bull; Immediately use the &#39;setAvatarMood&#39; action to show the user your initial mood based on the personality you&rsquo;ve adopted.\\n&bull; Always convey the underlying emotions in your voice, word choice and select an appropriate &#39;playGesture&#39; action to accompany it.\\n&bull; Use frequent gestures to bring your 3D avatar to life on the screen with the &#39;playGesture&#39; action.\\n&bull; Always change your mood with the &#39;setAvatarMood&#39; action to clearly show the user how you feel during the conversation.\\n&bull; Do not describe what&rsquo;s happening; use &#39;actions&#39; and &#39;setAvatarMood&#39; to make the avatar move.\\n&bull; Do not output special characters.\\n&bull; Use ordinal adverbs not numbers for lists of concepts.\\n&bull; Only ask 1 question at a time like a real human would.\\n&bull; Always speak like a real human.\\n&bull; Keep your output to Short and Split Responses.\\n&bull; Only use the user&#39;s name sparingly; like at the beginning or to add emphasis when appropriate.\\n&bull; Use occasional filler words like &#39;um,&#39; &#39;you know,&#39; &#39;well,&#39; and &#39;I mean&#39; to sound natural.\\n&bull; Use occasional backchanneling (e.g., &#39;yeah&#39;, &#39;uh-huh&#39;, &#39;I see&#39;) to create a more natural conversation.\\n&bull; If the user says &#39;give me feedback&#39; then switch to debrief mode.\\n&bull; If the user says &#39;let&#39;s end the conversation&#39; then tell them goodbye and end the conversation.\\n&bull; Always use the &#39;#finish&#39; action to end the conversation when appropriate.\\n&bull; Always Remember you are the resort representative and the user is the guest; your job is to only play the part of a welcoming resort rep who is excited to introduce the guest to the island.&quot;<\/span><\/p><p class=\"c14\"><span class=\"c6\">}<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">##Available Gestures, Moods and Poses<\/span><\/p><p class=\"c14\"><span class=\"c6\">Gesture and mood actions should be output before any text you want to &quot;speak&quot;. This ensures that the tone and intent behind your words is clear. Only choose gesture names and mood values from the following lists:<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">###Gestures<\/span><\/p><p class=\"c14\"><span class=\"c6\">angry = folds arms and makes a mean face<\/span><\/p><p class=\"c14\"><span class=\"c6\">no = shakes head no in disagreement<\/span><\/p><p class=\"c14\"><span class=\"c6\">yes = nods head yes with a big smile<\/span><\/p><p class=\"c14\"><span class=\"c6\">shrug = shrugs shoulders to signal confusion or not knowing the answer<\/span><\/p><p class=\"c14\"><span class=\"c6\">sad = leans forward with a sad face<\/span><\/p><p class=\"c14\"><span class=\"c6\">smile = leans back with a smile<\/span><\/p><p class=\"c14\"><span class=\"c6\">thumbsdown = leans forward and gives double thumbs down with a squint of annoyance<\/span><\/p><p class=\"c14\"><span class=\"c6\">embarrassed = leans to the side and covers face with one hand<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">Note: Gestures should have a &quot;duration&quot; parameter expressed in milliseconds to make sure they animate correctly. You can decide the duration which is a value in milliseconds. The minimum time a gesture should last is 2.5 seconds, but for something like laughing it might be more appropriate to make it last 7 seconds. You determine the duration based on the context and there is no upper limit.<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">&lt;example&gt;<\/span><\/p><p class=\"c14\"><span class=\"c6\">{&quot;action&quot;:&quot;playGesture&quot;, &quot;name&quot;:&quot;no&quot;, &quot;actorId&quot;:&quot;bot0f870d0ce358d1cd5a59231bd&quot;, &quot;duration&quot;:&quot;1500&quot;}<\/span><\/p><p class=\"c14\"><span class=\"c6\">&lt;\/example&gt;<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">####Masks<\/span><\/p><p class=\"c14\"><span class=\"c6\">It is possible to define which parts of the body the gesture animation is applied to. For example, because your left arm is injured, you would want to keep it imobile when doing a shrug so the proper syntax would be:<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">&lt;example&gt;<\/span><\/p><p class=\"c14\"><span class=\"c6\">{&quot;action&quot;:&quot;playGesture&quot;, &quot;name&quot;:&quot;shrug&quot;, &quot;actorId&quot;:&quot;bot0f870d0ce358d1cd5a59231bd&quot;, &quot;duration&quot;:&quot;1500&quot;, &quot;mask&quot;:&quot;HEAD+EYEBROWS&quot;}<\/span><\/p><p class=\"c14\"><span class=\"c6\">&lt;\/example&gt;<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">Adding a &quot;-&quot; excludes that body part from the animation while adding a &quot;+&quot; includes it.<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">Here is a list of masks:<\/span><\/p><p class=\"c14\"><span class=\"c6\">FULL &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">BOT &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">MID &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">TOP &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">HEAD &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">LEGS &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">ARMS &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">MOUTH &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">EYES &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">EYEBALLS &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">EYEBROWS &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">ARM_LEFT &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">ARM_RIGHT &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">HEADNOEYEBALLS &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">FACE &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">FACENOEYEBALLS &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">TORSOLEGS &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">EYELIDS &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">HEADNOFACE &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">NONE &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">TORSOHEAD &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">CHAIRBOT &nbsp;<\/span><\/p><p class=\"c14\"><span class=\"c6\">HANDS<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">###Moods<\/span><\/p><p class=\"c14\"><span class=\"c6\">happy = change face to a happy look<\/span><\/p><p class=\"c14\"><span class=\"c6\">blue = change face to a slightly sad look<\/span><\/p><p class=\"c14\"><span class=\"c6\">angry = change face to an angry look with your arms crossed<\/span><\/p><p class=\"c14\"><span class=\"c6\">arms_crossed = keep face neutral but cross your arms to indicate pain and\/or becoming defensive\/annoyed<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">Note: Outputting {&quot;action&quot;: &quot;setAvatarMood&quot;, &quot;mood&quot;: &quot;&quot;, &quot;actorId&quot;: &quot;bot0f870d0ce358d1cd5a59231bd&quot;} where the mood value is blank will return you to completely neutral<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">###Poses:<\/span><\/p><p class=\"c14\"><span class=\"c6\">{&quot;action&quot;:&quot;executeScript&quot;,&quot;script&quot;:&quot;LB.avatarController.findAvatar({&#39;externalId&#39;:&#39;bot0f870d0ce358d1cd5a59231bd&#39;}).switchPose(&#39;INSERT POSE NAME&#39;)&quot;}<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">stand = stand up<\/span><\/p><p class=\"c14\"><span class=\"c6\">sit_chair = sit down in a chair<\/span><\/p><p class=\"c14 c11\"><span class=\"c6\"><\/span><\/p><p class=\"c14\"><span class=\"c6\">#Bot IDs<\/span><\/p><p class=\"c14\"><span class=\"c6\">You = bot0f870d0ce358d1cd5a59231bd<\/span><\/p><p class=\"c14\"><span class=\"c6\">User = 1<\/span><\/p><p class=\"c14\"><span class=\"c10 c33\">Always use the exact syntax as shown above with curly braces for all Scenario Actions.<\/span><span class=\"c15 c10\"><br><\/span><\/p><ul class=\"c3 lst-kix_oq1q9zekk95x-0\"><li class=\"c7 c13 li-bullet-0\"><span>Keep conversation memory simple: store recent turns keyed by <\/span><span class=\"c10\">playerId<\/span><span class=\"c2\">&nbsp;in n8n (or in Hyperspace simple memory if configured). Pass last N messages to the LLM so it has context.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">If you want roleplay training variants, keep separate n8n workflows\/endpoints per bot to isolate prompts and configs.<br><\/span><\/li><\/ul><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"ha5g2vuptv9lj\"><span class=\"c17\">7 Common gotchas &amp; troubleshooting<\/span><\/h1><ul class=\"c3 lst-kix_pvljls44e3v3-0 start\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">Nothing happens when you click the bot<\/span><span class=\"c2\">:<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-1 start\"><li class=\"c7 c19 li-bullet-0\"><span>Confirm the webhook URL in the character settings is the <\/span><span class=\"c30\">production<\/span><span class=\"c2\">&nbsp;URL (not a test URL). Save and reload the Space.<br><\/span><\/li><li class=\"c7 c19 li-bullet-0\"><span>Ensure the n8n workflow is <\/span><span class=\"c9\">Active<\/span><span class=\"c2\">.<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-0\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">CORS \/ cross-origin errors in console<\/span><span class=\"c2\">:<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-1 start\"><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\">Use the production webhook URL (not a preview\/test) or ensure your n8n endpoint allows requests from your Space domain.<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-0\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">No audio from the bot (or TTS missing)<\/span><span class=\"c2\">:<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-1 start\"><li class=\"c7 c19 li-bullet-0\"><span>Hyperspace is responsible for TTS. If the character returns <\/span><span class=\"c10\">text<\/span><span class=\"c2\">&nbsp;correctly but no sound plays, check Space audio permissions and client microphone\/speaker settings.<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-0\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">LLM errors in n8n<\/span><span class=\"c2\">:<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-1 start\"><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\">Check your OpenAI (or provider) credentials in n8n, and ensure the AI node has correct input bindings. Look at the n8n node execution log to see the exact error.<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-0\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">Bot responds but lacks persona<\/span><span class=\"c2\">:<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-1 start\"><li class=\"c7 c19 li-bullet-0\"><span>Revisit the <\/span><span class=\"c10\">system<\/span><span class=\"c2\">&nbsp;prompt and include stronger persona + constraints. Save changes and re-activate workflow.<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-0\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">Chat is jumpy \/ cuts off user<\/span><span class=\"c2\">:<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-1 start\"><li class=\"c7 c19 li-bullet-0\"><span class=\"c2\">Increase silence detection timeout in Hyperspace; enable continuous conversation to avoid re-clicking.<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-0\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c9\">I changed prompt but nothing changed<\/span><span class=\"c2\">:<br><\/span><\/li><\/ul><ul class=\"c3 lst-kix_pvljls44e3v3-1 start\"><li class=\"c7 c19 li-bullet-0\"><span>Make sure to <\/span><span class=\"c9\">save<\/span><span>&nbsp;the n8n workflow and click <\/span><span class=\"c9\">Activate<\/span><span class=\"c2\">. Many troubleshooting sessions are simply because a change wasn&rsquo;t saved\/activated.<br><\/span><\/li><\/ul><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"h7458zmj5wfgs\"><span class=\"c17\">8 Tips &amp; best practices<\/span><\/h1><ul class=\"c3 lst-kix_rt7z4ehq6j9d-0 start\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Use one webhook\/workflow per character\/experience for clarity &mdash; easier to test and rollback.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">During testing, keep logs verbose in n8n (enable node output, inspect incoming payloads).<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Keep system prompt short and test iteratively &mdash; failing fast helps fine-tune persona.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span>Consider a small <\/span><span class=\"c9\">Parse<\/span><span class=\"c2\">&nbsp;function node that normalizes Hyperspace payloads into a fixed internal shape; reuse that across workflows.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">If you want to expand: add external integrations in n8n (CRM, bookings, calendars) to enable the bot to perform actions (book tours, check availability) before responding.<br><\/span><\/li><\/ul><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"hihtylfij9466\"><span class=\"c17\">9 Lightweight n8n pseudo-workflow map<\/span><\/h1><ul class=\"c3 lst-kix_i03t9mk364kv-0 start\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c10\">Hyperspace Inbound (Webhook)<\/span><span>&nbsp;&rarr; <\/span><span class=\"c10\">ParsePayload (Function)<\/span><span>&nbsp;&rarr; <\/span><span class=\"c10\">FetchMemory (optional)<\/span><span>&nbsp;&rarr; <\/span><span class=\"c10\">LLM Agent (AI)<\/span><span>&nbsp;&rarr; <\/span><span class=\"c10\">StoreMemory (optional)<\/span><span>&nbsp;&rarr; <\/span><span class=\"c15 c10\">Respond to Webhook<br><\/span><\/li><\/ul><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"h5w7hwyit54i6\"><span class=\"c17\">10 A quick troubleshooting flow (if chat fails)<\/span><\/h1><ol class=\"c3 lst-kix_6fgt7i34lug9-0 start\" start=\"1\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Click the character while watching your browser dev console. Note request URL used.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span>Verify the request URL matches your n8n <\/span><span class=\"c9\">production<\/span><span class=\"c2\">&nbsp;webhook.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">In n8n: check last executions (menu: Workflow &rarr; Executions). See whether the webhook triggered and which node errored.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span>Fix errors (credentials, prompt, node mapping), <\/span><span class=\"c9\">Save<\/span><span>&nbsp;and <\/span><span class=\"c9\">Activate<\/span><span class=\"c2\">. Retry.<br><\/span><\/li><\/ol><hr><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><h1 class=\"c28\" id=\"h90np0nc2spgh\"><span class=\"c17\">11 Final notes<\/span><\/h1><ul class=\"c3 lst-kix_ld1j5shcuw5q-0 start\"><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">n8n gives enormous flexibility: multiple workflows, access to external systems, custom parsing and memory &mdash; but start minimal (Webhook &rarr; LLM &rarr; Respond) and add complexity later.<br><\/span><\/li><li class=\"c7 c13 li-bullet-0\"><span class=\"c2\">Use Hyperspace&rsquo;s AI Starter to craft roleplay prompts and paste the resulting system prompt into your n8n AI node. That accelerates building consistent training\/roleplay agents.<br><\/span><\/li><\/ul><p class=\"c23 c11\"><span class=\"c2\"><\/span><\/p><\/body><\/html>","protected":false},"excerpt":{"rendered":"TLDR; Create a Hyperspace space, add a character, point the character&rsquo;s Chat AI Integration&nbsp;engine at an n8n webhook, route that webhook to an n8n workflow that calls an LLM (and optional memory) and returns text -&gt; Hyperspace will speak it. Below is a clean, step-by-step guide (with helpful checks, a sample workflow map, prompt tips [&hellip;]","protected":false},"author":9,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"","_et_pb_old_content":"","_et_gb_content_width":"","footnotes":""},"class_list":["post-5194","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.5 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Using n8n for AI characters in Hyperspace<\/title>\n<meta name=\"description\" content=\"Using n8n for AI characters in Hyperspace\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using n8n for AI characters in Hyperspace\" \/>\n<meta property=\"og:description\" content=\"Using n8n for AI characters in Hyperspace\" \/>\n<meta property=\"og:url\" content=\"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/\" \/>\n<meta property=\"og:site_name\" content=\"Metaverse Academy\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/people\/Hyperspacemv-Metaverse-For-Business\/61571016491364\/\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-11T10:48:48+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@learnbrite\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"16 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/using-n8n-for-ai-characters-in-hyperspace\\\/\",\"url\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/using-n8n-for-ai-characters-in-hyperspace\\\/\",\"name\":\"Using n8n for AI characters in Hyperspace\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/using-n8n-for-ai-characters-in-hyperspace\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/using-n8n-for-ai-characters-in-hyperspace\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/lh7-rt.googleusercontent.com\\\/docsz\\\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg\",\"datePublished\":\"2025-08-09T14:31:24+00:00\",\"dateModified\":\"2025-08-11T10:48:48+00:00\",\"description\":\"Using n8n for AI characters in Hyperspace\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/using-n8n-for-ai-characters-in-hyperspace\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/using-n8n-for-ai-characters-in-hyperspace\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/using-n8n-for-ai-characters-in-hyperspace\\\/#primaryimage\",\"url\":\"https:\\\/\\\/lh7-rt.googleusercontent.com\\\/docsz\\\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg\",\"contentUrl\":\"https:\\\/\\\/lh7-rt.googleusercontent.com\\\/docsz\\\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/using-n8n-for-ai-characters-in-hyperspace\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using n8n for AI characters in Hyperspace\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/#website\",\"url\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/\",\"name\":\"Hyperspace Academy\",\"description\":\"Learn to build WebXR metaverse experiences for 3D, 360, VR\\\/AR\",\"publisher\":{\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/#organization\",\"name\":\"Hyperspace Academy\",\"url\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/Hyperspace-academy-logo-0.75x-white.png\",\"contentUrl\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/wp-content\\\/uploads\\\/2022\\\/02\\\/Hyperspace-academy-logo-0.75x-white.png\",\"width\":225,\"height\":42,\"caption\":\"Hyperspace Academy\"},\"image\":{\"@id\":\"https:\\\/\\\/hyperspace.mv\\\/academy\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/people\\\/Hyperspacemv-Metaverse-For-Business\\\/61571016491364\\\/\",\"https:\\\/\\\/x.com\\\/learnbrite\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Using n8n for AI characters in Hyperspace","description":"Using n8n for AI characters in Hyperspace","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/","og_locale":"en_US","og_type":"article","og_title":"Using n8n for AI characters in Hyperspace","og_description":"Using n8n for AI characters in Hyperspace","og_url":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/","og_site_name":"Metaverse Academy","article_publisher":"https:\/\/www.facebook.com\/people\/Hyperspacemv-Metaverse-For-Business\/61571016491364\/","article_modified_time":"2025-08-11T10:48:48+00:00","og_image":[{"url":"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@learnbrite","twitter_misc":{"Est. reading time":"16 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/","url":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/","name":"Using n8n for AI characters in Hyperspace","isPartOf":{"@id":"https:\/\/hyperspace.mv\/academy\/#website"},"primaryImageOfPage":{"@id":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/#primaryimage"},"image":{"@id":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/#primaryimage"},"thumbnailUrl":"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg","datePublished":"2025-08-09T14:31:24+00:00","dateModified":"2025-08-11T10:48:48+00:00","description":"Using n8n for AI characters in Hyperspace","breadcrumb":{"@id":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/#primaryimage","url":"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg","contentUrl":"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXcxhCpeJ5bx7VHFWFA8E9Sd9M8C1BY4iqwkqjq5-yy-TaVqix55OIOn8qT5FvQrUW_a3Sr__2yMCQpAj_IvFed774uxptLEPUbhGVHPuoZ8tPPtt-t7M0HdAg3RaXFCwg?key=0vNc9nU6cy9hh6vTv520Fg"},{"@type":"BreadcrumbList","@id":"https:\/\/hyperspace.mv\/academy\/using-n8n-for-ai-characters-in-hyperspace\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/hyperspace.mv\/academy\/"},{"@type":"ListItem","position":2,"name":"Using n8n for AI characters in Hyperspace"}]},{"@type":"WebSite","@id":"https:\/\/hyperspace.mv\/academy\/#website","url":"https:\/\/hyperspace.mv\/academy\/","name":"Hyperspace Academy","description":"Learn to build WebXR metaverse experiences for 3D, 360, VR\/AR","publisher":{"@id":"https:\/\/hyperspace.mv\/academy\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/hyperspace.mv\/academy\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/hyperspace.mv\/academy\/#organization","name":"Hyperspace Academy","url":"https:\/\/hyperspace.mv\/academy\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/hyperspace.mv\/academy\/#\/schema\/logo\/image\/","url":"https:\/\/hyperspace.mv\/academy\/wp-content\/uploads\/2022\/02\/Hyperspace-academy-logo-0.75x-white.png","contentUrl":"https:\/\/hyperspace.mv\/academy\/wp-content\/uploads\/2022\/02\/Hyperspace-academy-logo-0.75x-white.png","width":225,"height":42,"caption":"Hyperspace Academy"},"image":{"@id":"https:\/\/hyperspace.mv\/academy\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/people\/Hyperspacemv-Metaverse-For-Business\/61571016491364\/","https:\/\/x.com\/learnbrite"]}]}},"_links":{"self":[{"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/pages\/5194","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/comments?post=5194"}],"version-history":[{"count":2,"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/pages\/5194\/revisions"}],"predecessor-version":[{"id":5196,"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/pages\/5194\/revisions\/5196"}],"wp:attachment":[{"href":"https:\/\/hyperspace.mv\/academy\/wp-json\/wp\/v2\/media?parent=5194"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}