Ngắn gọn trước
Yellorn là cái tab trình duyệt tôi muốn có mỗi khi một task integration bắt đầu bằng câu “cái này chắc 5 phút” và kết thúc bằng 6 trang formatter, một tunnel chết, một file CSV đáng ngờ, cộng thêm cảm giác cuộc đời đang bị một dấu phẩy điều khiển.
Yellorn sửa JSON, XML, YAML, CSV bị lỗi. Nó convert qua lại giữa các format. Nó publish payload hiện tại thành mock webhook API. Nó ghi log request gửi vào webhook. Nó cũng có Request Sender để bắn HTTP request ra ngoài, lưu template, xem lại history.
Nói ngắn hơn: Yellorn gom mấy việc lặt vặt nhưng hay phá flow khi debug integration vào một workspace. Không phải kiểu “thay đổi cách nhân loại làm API”. Chỉ là bớt phải mở bảy cái tab, trong đó ba cái nhìn như được monetize bởi quảng cáo casino.
Mọi chuyện thường bắt đầu rất vô hại
Bạn nhờ LLM tạo một JSON mẫu. Nó trả về thứ nhìn giống JSON, nhưng bọc trong Markdown fence, mở đầu bằng một câu rất lịch sự, và kết thúc object bằng trailing comma. JSON chưa chắc valid, nhưng thái độ thì rất tốt.
Thường nó sẽ kiểu như này:
| |
Rồi backend log ra một Python dict:
| |
Sau đó ai đó gửi file CSV export từ Excel. File có UTF-8 BOM, delimiter là dấu chấm phẩy, quote bị biến thành smart quote. Khi hỏi thì câu trả lời thường là “em không sửa gì cả”. Đây cũng là câu mở đầu của khá nhiều sự kiện đáng nhớ trong production.
| |
Chưa hết. Vendor cần một webhook URL public để bắn callback. Tunnel local vừa đổi URL. Bạn paste URL mới vào dashboard, bấm test, không thấy gì. Mười phút sau mới phát hiện dashboard vẫn dùng URL cũ vì bạn quên bấm Save. Công nghệ hiện đại là vậy: ta có thể deploy lên edge toàn cầu, nhưng vẫn thua một cái nút Save.
Không việc nào trong đống này khó. Chính vì không khó nên nó bực. Việc khó còn cho ta cảm giác đang làm kỹ thuật. Việc này chỉ làm ta mất tập trung từng chút một, như bị muỗi đốt trong phòng máy lạnh.
Yellorn được xây cho đúng đoạn đó.
Sửa dữ liệu, nhưng đừng giả vờ dữ liệu luôn đúng
Parser nghiêm ngặt là đúng. JSON.parse không có nghĩa vụ làm chuyên viên tư vấn tâm lý cho dữ liệu vừa đi qua Slack, Claude, Excel, Notion và clipboard của ba người khác nhau.
Nhưng tool cho developer có thể giúp trước khi giơ tay đầu hàng.
Yellorn parse nghiêm ngặt trước. Nếu input valid, nó format lại gọn gàng rồi thôi. Nếu parse fail, Data Doctor chạy best-effort recovery trên JSON, XML, YAML, và CSV. Hiện có 29 auto-fix pass được document: 15 cho JSON, 5 cho XML, 6 cho YAML, và 3 cho CSV.
Phần JSON xử lý các ca quen mặt: Markdown fence, comment, Python literal, single quote, key không có quote, trailing comma, thiếu comma, auto-close bracket, timestamp, datetime, Decimal, tuple, set. CSV thì xử lý BOM, delimiter lạ, quote lạ. XML và YAML cũng có các pass riêng, vì mỗi format đều có một cách rất cá tính để làm hỏng buổi sáng của bạn.
Điểm quan trọng là Yellorn không sửa trong im lặng.
Với đoạn LLM paste ở trên, kết quả hữu ích không cần màu mè. Chỉ cần thành dữ liệu sạch để đọc tiếp:
| |
Nếu nó gỡ Markdown fence, normalize smart quote, xoá trailing comma, hoặc auto-close bracket, fix đó được label rõ ràng. Bạn biết tool vừa làm gì với dữ liệu của mình. Đây là ranh giới quan trọng: tool nên giúp sửa cú pháp, không nên âm thầm sáng tác nghiệp vụ.
Dấu phẩy sai thì để Yellorn lo. Customer ID sai thì vẫn là bạn lo. Rất tiếc, đời dev chưa công bằng đến mức đó.
Convert format mà không phải nắn dữ liệu bằng tay
Sau khi payload parse được, câu tiếp theo thường là: “Có xem nó ở format khác được không?”
Backend thích Python. Frontend thích JSON. Ops thích YAML. Business gửi CSV. Một hệ thống cũ vẫn nói XML, có thể vì lý do lịch sử, có thể vì thù hằn cá nhân. Không ai hoàn toàn sai. Người kẹt ở giữa mới là người khổ.
Yellorn convert giữa JSON, XML, YAML, CSV, và Python-style output. CSV sang JSON thành danh sách object theo từng row. XML sang JSON giữ convention như @_attr, #text, và #cdata. Python export có thể giữ các kiểu hữu ích như datetime.fromisoformat(...), Decimal, tuple, và set.
Có những conversion vốn dĩ mất thông tin. JSON nested sâu không thể biến thành CSV đẹp chỉ bằng niềm tin và một nút bấm. Khi conversion có nguy cơ reshape hoặc mất dữ liệu, Yellorn cảnh báo trước.
Undo cũng là atomic: một lần undo trả lại cả text lẫn active format. Nghe nhỏ, nhưng ai từng dùng tool đổi dữ liệu một nơi, đổi UI state một nơi, rồi Ctrl+Z không biết quay về đâu sẽ hiểu. Ctrl+Z mà có tính cách riêng là một trải nghiệm rất không nên có.
Cần webhook URL thì publish luôn
Đôi khi bạn không cần dựng thêm service. Bạn chỉ cần một URL thật.
Trong Yellorn, paste payload, bấm Publish, bạn có một HTTPS endpoint chạy trên Cloudflare Edge:
| |
Sau đó test lại có thể đơn giản như đáng lẽ nó phải đơn giản:
| |
Endpoint nhận mọi HTTP method tại slug đó. Response status có thể cấu hình để giả lập các case như 200, 401, 429, hoặc 500. Test happy path, auth fail, rate limit, server lỗi đều được, không cần viết một app Express chỉ để return res.json(payload).
Webhook endpoint là public cho ai có slug. Đó là bản chất của webhook: bên ngoài phải gọi được. Nhưng portal xem log tại /webhook/<slug> thì chỉ owner mới xem được. Người ngoài có thể bắn request vào, nhưng không đọc được log của bạn.
Portal hiển thị method, headers, body, source IP, timestamp của từng request. Yellorn cũng trả Content-Type theo format payload: XML thì application/xml, CSV thì text/csv, v.v.
Bản Free có 5 active URL với TTL 24 giờ. Pro và Team tăng giới hạn cho nhu cầu dùng nhiều hơn.
Đây không phải backend production. Nó là cái dùng trước khi bạn viết backend, hoặc trong những lúc viết backend chỉ để trả một payload mẫu nghe hơi quá tay.
Gửi request ở chiều ngược lại
Debug webhook có hai chiều. Người ta gọi vào mình. Mình cũng phải gọi ra ngoài.
Yellorn có Request Sender cho chiều thứ hai. Nó hỗ trợ GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS, kèm URL, headers, auth, và body.
Request dùng nhiều có thể lưu thành template. Mỗi lần dispatch có history: status, timing, response headers, và response body được truncate tối đa 1 MB.
History nghe bình thường, nhưng rất hữu ích. Trí nhớ con người là một database không ACID, replication kém, và query sau 11 giờ đêm thường trả về kết quả rất tự tin nhưng sai.
Request Sender cũng có guardrail: SSRF protection, loop protection, và header X-Yellorn-Internal-Dispatch để tránh gọi đệ quy vào chính webhook của bạn. Tool tiện thì vẫn cần phanh. Xe chỉ có chân ga thường kết thúc bằng postmortem.
Nhìn payload như người bình thường
Raw text tốt, cho đến khi payload nested sáu tầng và bạn bắt đầu đếm ngoặc bằng mắt. Không ai đi học lập trình để thi môn đó cả.
Yellorn có vài cách nhìn dữ liệu:
- Tree view cho cấu trúc JSON-like, có inline edit và thao tác copy nhanh.
- Table view cho dữ liệu dạng row như CSV hoặc array of objects.
- Graph view để nhìn quan hệ parent-child.
- JMESPath search khi bạn cần lọc đúng phần dữ liệu thay vì mở 200 node bằng tay.
Ví dụ:
| |
Mục tiêu không phải làm dữ liệu trông màu mè. Mục tiêu là giữ bộ nhớ ngắn hạn của bạn cho việc khác quan trọng hơn, ví dụ nhớ mình vừa deploy nhánh nào.
Những thứ nhỏ nhưng đỡ mệt
Yellorn còn có vài thứ không quá hào nhoáng, nhưng dùng nhiều sẽ thấy đáng tiền công viết:
- Compare mode mở hai tab trong Monaco diff editor read-only, sort key JSON trước khi diff để đổi thứ tự key không tạo drama giả.
- Smart Format làm recovery và type conversion mạnh hơn.
- Simple Format pretty-print nhưng giữ ý nghĩa dữ liệu.
- Safe Format chỉ chỉnh layout, không reparse.
- Compress minify whitespace.
- Cloud Backup sync tabs, palette, và layout giữa các thiết bị đã đăng nhập, có hiển thị quota.
Từng món riêng lẻ không đủ để làm keynote. Nhưng ghép lại, nó biến Yellorn thành một workspace thật sự, không phải một cái formatter dùng xong rồi quên tab đang mở ở đâu.
Nó thay cái gì, và không thay cái gì
Yellorn thay được khá nhiều màn nhảy qua lại giữa formatter, converter, webhook bin, tunnel, REST client, và diff tool trong các ca debug hằng ngày.
Nó không thay Postman cho API workflow phức tạp của cả team. Nó không thay integration test, schema contract, observability, hay backend production. Nó cũng không biến dữ liệu sai nghiệp vụ thành đúng. Payload nhầm customer ID thì Yellorn không ngồi thiền để giác ngộ domain model giúp bạn.
Ranh giới đó là cố ý. Yellorn làm phần giữa rất thực tế: sửa payload, convert format, publish endpoint tạm, xem request đi vào, gửi request đi ra, rồi để bạn tiếp tục việc chính.
Nếu mấy việc đó xuất hiện trong ngày làm việc của bạn nhiều hơn mức bạn muốn thừa nhận, thử Yellorn. Nó được xây cho những việc integration nhỏ, lặp lại, đủ phổ biến để không thể bỏ qua và đủ chán để không nên tiếp tục làm bằng tay.
