What is Nostr?
Jakk Goodday
npub1mqc…nz85
2023-10-15 19:20:00

จัดการฟีดรกๆ ให้เป็นระเบียบด้วย Listr.lol

หลายคนยังไม่อยากรีบแอดเพื่อนกันเยอะๆ เพราะกลัวว่าฟีดตัวเองจะเด้งรัวๆ กลัวฟีดจะรกจนตามอ่านกันไม่ทัน กลัวจะพลาดอะไรบางอย่างไปใช่ไหมครับ ครั้นพอมีเราเพื่อนน้อยก็ทำให้ Nostr ดูเหมือนไม่ค่อยจะมีอะไรน่าสนใจสักเท่าไหร่ จะเพิ่มเพื่อนก็ยังติดปัญหาแรกอยู่ เกิดอาการลังเลจะเอายังไงดี?

ก็เพราะ Nostr มันไม่มีอัลกอริธึมคอยจัดการสิ่งที่เราจะมองเห็น (ยกเว้นบางไคลเอนต์ที่คัดกรองฟีดได้ เช่น corracle หรือ nostrudel เป็นต้น) ฟีดบน Nostr จึงเรียงกันแบบตามไทม์แสตมป์อย่างตรงไปตรงมา ดังนั้นถ้าเพื่อนของคุณเยอะ โน๊ตต่างๆ ก็อาจจะฟลัดกันเองจนทับถมกองพะเนินเทินทึก พาลทำให้คุณหาสิ่งทีอยากอ่านได้ค่อนข้างลำบาก

ปัญหานี้ไม่ได้เกิดขึ้นแค่กับพวกเราเพียงเท่านั้นครับ มันเกิดกับทุกคน

พวกที่ใช้งาน Nostr กันมาก่อนต่างก็เห็นว่ามันน่ารำคาญพอสมควร เพื่อนบางคนก็ขยันโน๊ตกันเหลือเกิน ผมเคยเจอเพื่อนที่โน๊ตกันแบบนาทีต่อนาที ผมตามคนเกือบพันนี่ฟีดไหลยังกะบั้งไฟทะยานฟ้า จะกด Unfollow บางทีก็ติดลูกเกรงใจ จะกด Mute ก็ดูรุนแรงไปหน่อย เพราะเหตุนี้จึงต้องมีการหาทางออก

เหล่านักพัฒนาโปรโตคอล Nostr จึงได้เขียนสิ่งที่เรียกว่า “NIPs” (Nostr Implementation Possibilities) และเพื่อแก้ไขปัญหาเบื้องต้น พวกเขาจึงได้เขียน NIP-51 ขึ้นมาชื่อว่า “List”

List คืออะไร?

List ช่วยให้เราจัด “รายการ” เพื่อจัดกลุ่มของ “ผู้ใช้”, “บุ๊คมาร์ค” และ “รีเลย์” ได้ด้วยตัวเอง หรือเอาแบบเข้าใจง่ายๆ ก็คือ.. มันช่วยให้เราสามารถจัดกลุ่มให้กับคนที่เราติดตามได้นั่นเอง.. (เหมือนจัดกลุ่มเพื่อนใน FB) การสร้าง List ต่างๆ บน Nostr นั้น จะแยกย่อยตามประเภทของ “Event kind” ซึ่งก็คือลักษณะของสิ่งที่จะปรากฏอยู่บน Nostr

ต่อไปนี้คือ kind ที่เราสามารถจัดกลุ่มหรือสร้าง List ได้

(เราต้องรู้เรื่องเหล่านี้ก่อน เพราะต้องเลือก kind ให้ถูก ตรงตามความต้องการในตอนกดสร้าง List ใหม่)

ประเภทของ List

  • Kind 3 : (Contacts) รายการของคนที่เรากดติดตามเอาไว้ List นี้ไม่ต้องสร้าง มันมาให้เองอัตโนมัติ
  • Kind 10000 : (Mute) รายการของคนที่เราไปกด Mute เอาไว้ มันจะมาเองโดยอัตโนมัติหรือถ้าเราสร้างเองมันจะไปทับ List ที่มีอัตโนมัติก่อนหน้านี้ (การ Mute คือการที่เราปิดการมองเห็นผู้ใช้รายนั้นเอาไว้ เราจะไม่เห็นโน๊ตหรือแอคชั่นใดๆ ของเขาบน Nostr อีก อาจจะเพราะเราไม่อยากเห็น หรือรำคาญที่โน๊ตบ่อย โน๊ตไม่เข้าท่า ฯลฯ แต่ไม่ได้ต้องการจะทำถึงขั้น Unfollow)
  • Kind 10001 : (Pin) รายการของโน๊ตที่เรากดปักหมุดไว้ (ในบางไคลเอนต์สามารถปักหมุดได้ เช่น Snort)
  • Kind 10002 : (Relays) รายการ Relay ที่ผู้ใช้ (เรา) ใช้อยู่ (ตั้งชื่อรายการไม่ได้)
  • Kind 30000 : (Categorized People) รายการของผู้ใช้ที่เราตั้งชื่อรายการได้ นี่คือรายการที่ผมใช้ สร้างบ่อยที่สุด เพื่อจัดประเภทคนกลุ่มต่างๆ ที่เราติดตาม เพื่อให้ง่ายต่อการแยกแยะและค้นหาในอนาคต
  • Kind 30001 : (Categorized Bookmarks) รายการของโน๊ตที่เราได้เคยทำการบุ๊คมาร์คเอาไว้ เราสามารถตั้งชื่อให้กับรายการนี้ได้ เรียกง่ายๆ ว่าจัดรายการโน๊ตที่ชอบหรือเอาไว้ตามอ่าน, อ่านทบทวนเมื่อมีเวลาในภายหลัง
  • Kind 30022 : (Categorized Relays) รายการ Relay ที่ผู้ใช้ (เรา) ชื่นชอบ เผื่อจับพลัดจับผลูทำรายชื่อ Relay หายก็กลับมาดูจากที่นี่ได้

ปัญหาที่คนไม่ค่อยใช้ List คือนอกจากไม่รู้ว่ามันมีอยู่และมันเอาไว้ใช้ประโยชน์อะไรแล้ว ยังรู้สึกแอบแย่เวลามีคนมาส่อง List ของตัวเองด้วย (โดยเฉพาะ Mute list)

แต่ในความเป็นจริง.. การสร้าง List ใหม่นั้นเราสามารถเลือกได้ว่าอยากจะให้เป็นแบบ Public หรือ Private ก็ได้ครับ สำหรับไคลเอนต์ที่นิยมใช้งานกันทั่วไปและรองรับ NIP-51 คือ nostudel และ corracle ที่จัดการกับ List เบื้องต้นได้ (ใช้งานผ่านเบราเซอร์) รวมถึง Amethyst บนแอนดรอยด์ (เอาไว้ดูโน๊ตใน List ต่างๆ แต่จัดการ List ไม่ได้) ส่วนของ iOS ผมไม่ได้ใช้ จึงไม่ทราบจริงๆ ครับ

ในบทความนี้ผมจะแสดงตัวอย่างการใช้งานไคลเอนต์ที่มีไว้สำหรับจัดการ List ให้เราโดยเฉพาะ

นั่นคือ “Listr” ซึ่งพัฒนาโดยคุณ JeffG และมีคุณ Kanarge ซึ่งเป็นผู้ออกแบบ UX/UI ในเวอร์ชั่น 2.0 ให้มีความสวยงามและน่าใช้งานมากยิ่งขึ้น

image

อย่างไรก็ตาม ณ ขณะที่เขียนอยู่นี้ เวอร์ชัน 2.0 ยังเป็นการพัฒนาในระดับ Beta อยู่ เท่าที่ผมลองเล่นก็ถือว่าใช้งานได้ดีและง่ายกว่า 1.0 มากโขทีเดียวครับ แต่ก็น่าจะปรับปรุงให้ดีได้กว่านี้อีกในอนาคต เอาว่าผมจะพยายามรวบรัดไม่ให้ยาวจนเกินไป เพราะเดี๋ยว อ.อาร์ม จะไลฟ์สอนกันอีกทีในรายการ #Onlynips

หมายเหตุ: ไคลเอนต์อีกตัวสำหรับไว้จัดการ List คือ Nostree ซึ่งผมจะยังไม่เขียนแนะนำในบทความนี้นะครับ

การใช้งาน listr

เมื่อเข้ามาที่เว็บไซต์ของตัวไคลเอนต์ Listr.lol ให้เพื่อนๆ ทำการ Login ด้วย Alby Extension (NIP-07) ให้เรียบร้อย

เราจะเห็นแถบไซด์บาร์เมนูด้านซ้ายมือ ที่แสดงเมนูสำคัญๆ อย่างเช่น “Activity feed” ที่จะโชว์ว่าเพื่อนของเราคนไหนได้ทำการสร้างหรืออัพเดท List อะไรไปบ้าง ที่เหลือก็ตามชื่อเลย กดดูกันเอาเองได้ครับ

ถัดลงมาในส่วน “Your List” ก็จะเป็นรายการของ List ที่เราได้เคยสร้างเอาไว้ ทำให้เรากดเข้าไปดูได้จากตรงนี้ นับว่าสะดวกมากทีเดียว ใครยังไม่เคยสร้างอะไรไว้ก็จะยังไม่มีรายการแสดงมากมายครับ

image

พื้นที่หลักของหน้าโปรไฟล์เรา (กดเข้าจากเมนูขวาบน ตรงรูปโปรไฟล์ของเรา ซึ่งจะแสดง List ต่างๆ ที่เราเคยสร้างไว้ในรูปแบบของ Card view ซึ่งผมชอบมาก เพราะมันดูเข้าใจง่ายและใช้งานได้ง่ายนั่นเอง

แต่ละการ์ด จะมีชื่อ จำนวนไอเทมที่เราใส่ไว้ (คน, บุ๊คมาร์ค, รีเลย์) และอีเว้นท์ที่มีในการ์ดนั้นๆ (เช่น โน๊ตต่างๆ เป็นต้น) ทีนี้ก็คงจะพอเข้าใจวิธีการใช้งานเบื้องต้น หรือการเรียกดูข้อมูลกันแล้วนะครับ ผมว่ามันก็ไม่ได้เข้าใจยากเท่าไหร่นัก

image

ท้ายบทความผมจะแสดงยูสเคสให้ดูว่า หลังจากที่เรามี List แล้ว ชีวิตเราจะดีขึ้นยังไง?

การสร้าง List

มาลองเริ่มต้นสร้าง List กันเลยดีกว่า (จริงๆ ถ้าขี้เกียจทำเอง ก็สามารถ Duplicate จากรายการที่ผมเคยสร้างไว้ได้เลยครับ) ตามภาพด้านล่างนี้ เราจะสามารถกดสร้าง List ใหม่ได้เลยจาก 2 ที่ด้วยกัน Create a new list แถบเมนูด้านซ้าย หรือ +New list จากเมนูด้านบนขวา

image

ผมจะขออธิบายไปทีละช่องเพื่อไม่ให้ต้องแปะภาพให้รกจนเกินไปนะครับ

image

  1. เลือกประเภทของ Kind ที่ต้องการตามที่ผมพึ่งแนะนำไปด้านบน ผมแนะนำให้เริ่มลองจาก Kind 30000 : (Categorized People) เพื่อสร้างกลุ่มรายชื่อของเพื่อนหรือคนที่เราติดตาม (หรือคนที่เราไม่ได้ติดตามก็ได้เหมือนกัน) ผมจะยกตัวอย่างจากการสร้าง List ทีมงาน Right Shift ละกันนะครับ
  2. ช่องถัดมาให้ตั้งชื่อรายการ ในที่นี้ผมจะตั้งชื่อว่า Right Shift Team
  3. ช่องถัดมาตรง Description ให้เขียนคำอธิบายตามใจชอบ ว่ารายการนี้เป็นรายการสำหรับอะไร
  4. ช่อง Category ก็เลือกประเภทให้ตรงหรือสอดคล้องกับที่เราสร้าง เพื่อเวลากลับมาดูจะได้เข้าใจได้ง่ายครับ
  5. ช่องสุดท้ายคือช่องสำคัญ List items หรือสิ่งที่เราต้องการจะบรรจุเข้าไปใน List นี้นั่นเอง ด้านขวาของช่องคือส่วนสำคัญที่เราต้องเลือกว่าจะให้รายการนี้ Public ให้ใครเห็นหรือคัดลอกก็ได้ หรือจะสร้างให้เป็นรายการ Private ที่จะมีแค่เราเห็นได้เพียงคนเดียวเท่านั้น

สำหรับ List items ที่สามารถนำมาเพิ่มเข้าไปในรายการได้ จะต้องเป็นประเภท NIP-19 Identifier (bech32-encoded entities) ซึ่งเป็นอย่างใดอย่างหนึ่งต่อไปนี้ ได้แก่ npub, nprofile, note, nevent หรือ naddr ครับ

ให้เราคัดลอกข้อมูลเหล่านี้มากรอกในช่องที่ 5 ในตัวอย่างด้านบน ผมได้คัดลอกเอา npup ของ Jakk Goodday มากรอก จากนั้นผมจะกดเครื่องหมายติ๊กถูก

จะปรากฏชื่อ Jakk Goodday เป็น Item แรกสำหรับรายการที่เรากำลังจะสร้างนี้ แต่รายการนี้จะยังไม่เสร็จสมบูรณ์จนกว่าเราจะกดปุ่มสีเขียว Publish ด้านล่าง (กดไปแล้ว ก็สามารถ Edit เพื่ออัพเดท หรือทำการนำเข้า นำออกไอเทมได้ตลอดเวลาตามต้องการ)

image

เมื่อเราเพิ่มไอเทมจนพอใจและกด Publish รายการนี้แล้ว ที่หน้าโปรไฟล์ของเราจะปรากฏการ์ดของ List ที่พึ่งสร้างใหม่นี้ และมีไอเทมต่างๆ ที่เพิ่มไว้ปรากฏเป็นรายละเอียด โดยในแต่ละไอเทมเรายังสามารถกด Follow หรือ Unfollow บุคคลได้ รวมทั้งกด Add to list เพื่อเพิ่มคนๆ นั้นไปยัง List อื่นก็ได้ด้วยเช่นกัน

นอกจากนี้เรายังสามารถแชร์ List (เอาไปโชว์บน Amethyst ได้ แต่ Kind 3, 10000, 10001 จะไม่ปรากฏบน Amethyst ) หรือกดปุ่ม Edit ได้ตามต้องการครับ

image

ที่เหลืออยากจะลองสร้างอะไรก็ลองเล่นกันดู คุณอาจจะสร้าง List สำหรับเพื่อนจอมเขียนบทความ, เพื่อนจอมฮา, นักศิลปะ, ช่างภาพ, ทาสแมว ฯลฯ สุดแล้วแต่จะสร้างกันกันเอาเองเลยครับ

ข้อดีของการสร้าง List แบบ Kind 30000 นี้คือ เราสร้างรายการของคนกลุ่มต่างๆ และใช้ไคลเอนต์อื่นในการเปิดดูโน๊ตหรืออัพเดทข้อมูลข่าวสารต่างๆ จากคนใน List นั้นๆ ได้ โดยที่เราไม่จำเป็นต้องกด Follow เขาเลยก็ได้ครับ มันดีตรงนี้แหละ

ถ้าคุณไปส่อง List ในโปรไฟล์ของผม คุณจะเจอ List ที่จัดกลุ่มคนเอาไว้หลากหลาย (ซึ่งผมก็ Duplicate คนอื่นเขามาอีกที) คุณสามารถกด Duplicate เอากลุ่มคนที่ชอบจากที่ผมมีได้เลย ง่ายนิดเดียว

ผมจะยกตัวอย่างให้ดู สมมุติคุณไปที่โปรไฟล์ของ Vitor Pamplona (ผู้พัฒนาหลักของแอป Amethyst) แล้วคุณเจอ Public list ของเขาซึ่งเป็นรายชื่อ Dev ของแอป Amethyst ทั้งหมด คุณอยากติดตามโน๊ตและอัพเดทจากกลุ่มคนเหล่านี้ คุณก็สามารถกดปุ่ม Deuplicate ที่เห็นนั้นได้เลยครับ

image

เมื่อกดปุ่ม Duplicate แล้ว.. ระบบจะขอให้คุณตั้งชื่อ และระบุรายละเอียดของ List นี้ใหม่ (ที่จะไปปรากฏบนโฟรไฟล์ของคุณ) เมื่อกรอกเรียบร้อยก็กด Duplicate this list ได้เลย เป็นอันว่าเสร็จพิธี แค่นี้คุณก็ได้รายชื่อพวกนี้ไปเป็นของตัวเอง ไว้ส่องข้อมูลเองง่ายๆ ได้แล้ว

image

การดูฟีดอัพเดทใน List ต่างๆ

มาถึงสิ่งที่เป็น “หมุดหมายสำคัญ” ของการสร้าง List กันเสียที เมื่อคุณมี List ที่พึงพอใจครบถ้วนแล้ว คราวนี้การใช้งาน Nostr ของคุณก็จะไม่มีวันเหมือนเดิมอีกต่อไป..

ผมขออนุญาตแนะนำเฉพาะไคลเอนต์ที่ผมรู้จักและคุ้นเคยก็แล้วกันนะครับ ต้องขออภัยเพื่อนๆ ชาว iOS ด้วยเพราะผมใช้ Android ท่านอาจต้องลองหาแนวทางบนมือถือกันเองแล้วนำมาแบ่งปันกัน หรือเน้นใช้งานกันบนเบราเซอร์ไปก่อนนะครับ

Amethyst

ชาวแอนดรอยด์ดูเหมือนจะเข้าทางที่สุด สำหรับ Amethyst เพราะเราสามารถกดดูโน๊ต หรืออัพเดทข่าวคราวความเคลื่อนไหวของผู้ใช้ใน List ต่างๆ ไว้กันได้โดยสะดวกโยธิน สามารถกดด้านบนได้จากหน้า Home หรือหน้า Notification เพื่อเลือกดู List ที่ต้องการได้เลยครับ

ซึ่งจากหน้า Home คุณจะเลือกดูโน๊ตจากแท็ป New threads หรือเลือกดูคอมเม้นท์จากแท็ป Conversation ก็ได้ คราวนี้คุณก็จะเห็นฟีดจากเฉพาะกลุ่มคนที่คุณสร้างไว้ใน List นั้น


image


noStrudel

noStrudel.ninja เป็นไคลเอนต์อีกหนึ่งตัวที่ได้รับความนิยมในการใช้งานผ่านเบราเซอร์บน PC ซึ่งมีเมนูแยกและรองรับ List โดยเฉพาะ เมื่อกดเข้าไปดูจะเห็น List ต่างๆ ที่เราสร้างไว้ในลักษณะนี้ คือมีรูปโปรไฟล์เรียงซ้อนๆ กันให้ดูในแต่ละ List ด้วย

image

เมื่อกดเลือกที่การ์ดของ List ใดๆ เราก็จะเห็นรายการไอเท็มของแต่ละ List นั้นๆ และยังสามารถเลือกที่จะ Delete หรือดู Feed ของ List นั้นๆ ได้ด้วยครับ ซึ่งเมื่อกดที่ Feed ไคลเอนต์ก็จะทำการดึงโน๊ตทั้งหมดของคนใน List นั้นมาให้เราดู ชีวิตดี๊ดี

image

นอกจากนี้.. การ Follow ผู้ใช้งานบน noStrudel ยังสามารถกดเลือกเพิ่มเข้าไปยัง List ที่เราเคยสร้างเอาไว้แล้วได้เลย ซึ่งถือว่าสะดวกดีมากๆ ครับ

image

Corracle

Corracle.social เป็นอีกไคลเอนต์ที่ทำงานได้รวดเร็ว สวยงามสะอาดตาที่ใช้งานได้ผ่านเบราเซอร์ โดย Corracle จะสามารถกดเพิ่มคนเข้าไปใน List ได้เลยง่ายๆ เช่นเดียวกันกับ noStrudel แต่จะมี UI แตกต่างกันเพียงเล็กน้อยตามภาพด้านล่าง

โดยเมื่อไปที่หน้าโปรไฟล์ของใครก็ตาม เมื่อกดที่ปุ่ม 3 จุดด้านบน จะมีให้เลือก Add to list

image

โดยเราสามารถเลือกเพิ่มเข้าไปใน List ที่เคยสร้างไว้แล้ว หรือจะสร้าง List ใหม่ดูก็ได้ครับ

image

ซึ่งผมคงไม่สอนสร้าง List ใหม่ด้วย noStrudel หรือ Corracle นะครับ ไม่งั้นบทความจะยาวเกินกว่าเหตุ ซึ่งเพื่อนๆ สามารถไปลองเล่นกันดูเองได้ไม่ได้ยากเกินความเข้าใจ

สิ่งที่ควรทราบเกี่ยวกับ List

  • การ Delete List ต่างๆ บนที่เคยสร้างไว้บนโปรโตคอล Nostr นั้นไม่นับว่าง่ายหรือจะได้ผลลัพธ์แบบเบ็ดเสร็จ เพราะการลบข้อมูลบน Nostr ถือว่าเป็นสิ่งที่ไม่เคยทำได้จริง (รวมถึงโน๊ตต่างๆ ด้วย) เนื่องจากเราต้องทำการ Request ไปยัง Relay ต่างๆ ที่ได้ทำการบันทึกข้อมูลนั้นเอาไว้และขอให้เค้าลบออกให้ การลบข้อมูลจากรีเลย์ทั่วไปนั้นทำได้ง่าย แต่กับรีเลย์ที่มีเงื่อนไขในการเข้าถึง (เช่น Paid relay) ก็นับว่าเป็นเรื่องยากทีเดียวครับ
  • ดังนั้นผมแนะนำว่าให้เวลาและใส่ใจในการสร้าง List สักหน่อย จะได้ไม่ต้องมานั่งรำคาญตาในภายหลัง
  • Mute list ที่มีออโต้นั้นไม่สามารถปิดการมองเห็นได้ (มัน Public) มันทำให้ผู้ใช้รู้สึกอึดอัดที่จะกด Mute เพื่อนเพราะกลัวจะหมางใจกัน
  • เราสามารถคัดลอกเอาไอดีของ List ที่เป็น Kind 30000+ ไปสร้างโน๊ตเพื่อแสดรายชื่อคนใน List นั้นได้ (ไคลเอนต์อื่นผมไม่ทราบ)
  • เราสามารถสร้าง List ได้ไม่จำกัด และเพิ่มไอเท็มเข้าออกได้ตลอดเวลาในแต่ละ List
  • Listr.lol v2.0 พึ่งเปิดตัวได้ไม่นาน และยังเป็น beta version ดังนั้นจึงอาจมีข้อบกพร่องในการใช้งานได้บ้าง อย่าลืมช่วยกันส่งฟีดแบ้กไปที่ผู้พัฒนาถือว่าร่วมด้วยช่วยกัน
  • จากการทดลองใช้งาน noStudel และ Corracle ยังไม่เหมาะสำหรับการสร้าง List เหมาะเอาไว้ดู และการดูฟีดของแต่ละ List บน Ametjyst นั้นเริ่ดมากๆ
  • แชร์บทความนี้ และนำสิ่งที่เข้าใจไปเผยแพร่ให้กับคนอื่นๆ หากเห็นว่าเป็นประโยชน์
  • หากสงสัยอะไรในการใช้งาน List ก็สามารถสอบถามผมเข้ามาได้เลยครับ และอย่าลืมติดตามไลฟ์สดสอนจับมือทำ Listr ของ อ.อาร์ม ในเร็วๆ นี้ ทางรายการ Onlynips
Author Public Key
npub1mqcwu7muxz3kfvfyfdme47a579t8x0lm3jrjx5yxuf4sknnpe43q7rnz85