- Gói tài liệu/trình soạn thảo/trình xem/công cụ thuyết trình vào một tệp
.bento.html, có thể mở, chỉnh sửa và trình bày chỉ với trình duyệt, như một lựa chọn thay thế PowerPoint - Chỉ một tệp khoảng 570KB hoạt động như một ứng dụng hoàn chỉnh, có thể lưu và gửi qua email hoặc AirDrop mà không cần tài khoản/cloud/trình cài đặt
- Dữ liệu slide được lưu dưới dạng JSON có thể đọc được bên trong tệp, nên các AI agent như Claude Code/Codex/Gemini/ChatGPT có thể chỉnh sửa trực tiếp tệp
- Nếu gửi cả
.pptxhiện có cho AI, thay vì chỉ chuyển đổi đơn thuần, AI có thể viết lại thành slide tận dụng các tính năng Bento như Morph/biểu đồ thời gian thực - Hỗ trợ chuyển cảnh Morph/biểu đồ/video/âm thanh/cộng tác mã hóa thời gian thực, và sau Slides còn có kế hoạch cung cấp Docs và Sheets theo cùng mô hình tệp đơn
Một tệp vừa là tài liệu vừa là ứng dụng
- Trong
.bento.htmlchứa cả slide lẫn toàn bộ chương trình biên tập - Khi mở tệp trong trình duyệt, trình biên tập chạy ngay lập tức, và khi lưu thì dữ liệu tài liệu được ghi lại vào chính tệp
- Phông chữ/hình ảnh/biểu đồ cũng được nhúng kèm, nên chỉ với bản sao của tệp là có thể mở và thuyết trình độc lập
- Ở chế độ Offline, cập nhật và cộng tác bị chặn để mọi thao tác đều được xử lý cục bộ
- Có thể chạy ngay trên trình duyệt tại Bento/Slides hoặc tải về tệp ứng dụng đơn lẻ
Định dạng tài liệu dành cho AI agent
- Dữ liệu tài liệu được lưu dưới dạng JSON thuần văn bản trong khối
<script type="application/bento+json" id="bento-doc">ở đầu tệp - Có thể đọc tài liệu hiện tại bằng
window.bento.docvà nạp tài liệu đã sửa bằngwindow.bento.loadDoc(json) - AI agent có thể thêm slide/biểu đồ/ghi chú cho người thuyết trình chỉ bằng cách sửa JSON mà không cần đụng vào mã ứng dụng
- Có thể dùng không chỉ với các coding agent như Claude Code/Cursor/Aider mà cả trong chatbot thông thường hỗ trợ đính kèm tệp
- Với chatbot không hỗ trợ tệp, có thể sao chép JSON ra, chỉnh sửa rồi dán lại
- Dùng Ollama/llama.cpp/LM Studio thì việc biên tập bằng AI cũng có thể chạy hoàn toàn cục bộ
- Cung cấp agents.md để hướng dẫn AI agent khai thác Bento đúng cách
Tính năng thuyết trình gần với web hơn PowerPoint
- Hỗ trợ chuyển cảnh Morph giúp các phần tử có cùng
iddi chuyển mượt mà giữa các slide- Chỉ cần nhân bản slide hiện có rồi di chuyển phần tử hoặc đổi kiểu là có thể tạo chuyển cảnh mà không cần dựng timeline riêng
- Dùng engine biểu đồ tự phát triển, không phụ thuộc bên ngoài, để vẽ biểu đồ cột/đường/tròn/phân tán
- Các biểu đồ cột/đường/tròn/phân tán vẫn hoạt động với tooltip/phóng to/chuyển đổi dữ liệu ngay trong lúc thuyết trình
- Có thể nhúng video và âm thanh vào slide hoặc liên kết tới tệp bên ngoài
- Các tệp PowerPoint hiện có không được nhập nguyên trạng mà sẽ được AI tái cấu trúc thành tài liệu Bento
- Cũng hỗ trợ màn hình người thuyết trình/bình luận/bố cục/xuất PDF/nhiều kích thước trang/8 ngôn ngữ giao diện
- Việc chỉnh sửa chủ yếu hướng tới desktop, nhưng vẫn có thể xem và thuyết trình trên smartphone
Cộng tác ưu tiên cục bộ
- Khi bắt đầu một phiên live từ tệp, người mở bản sao của cùng tệp đó sẽ tham gia vào không gian cộng tác
- Dữ liệu cộng tác được mã hóa đầu-cuối bằng AES-GCM, máy chủ chuyển tiếp chỉ xử lý bản mã
- CRDT tự phát triển đảm nhiệm biên tập thời gian thực và hợp nhất các thay đổi khi offline
- Khóa cộng tác nằm ngay trong bản thân tệp, nên việc gửi tệp cũng chính là cách mời tham gia
- Các nội dung chỉnh sửa bị tách nhánh khi offline cũng sẽ được hợp nhất hai chiều khi kết nối lại
Lộ trình Bento/Suite và giấy phép
- Bento/Slides đang được phát hành hiện là ứng dụng đầu tiên của Bento/Suite
- Có kế hoạch cung cấp Bento/Docs và Bento/Sheets dưới dạng các tệp
.bento.htmltự chứa, độc lập - Phần mềm Bento được phát hành theo MIT License
1 bình luận
Ý kiến Hacker News
Tôi là tác giả của Bento. Ở đầu tệp có khối JSON thuần chứa dữ liệu slide nên có thể đọc,
grephoặc xử lý bằng công cụ tự động. Ứng dụng là một blob base64 được nạp qua một loader nhỏ, giải nén bằngDecompressionStreamcủa trình duyệt để giữ gói nhẹ và không tải tệp bên ngoài khi chạyVới File System Access API, nó ghi lại JSON vào chính tệp đó; nếu không được hỗ trợ thì chuyển sang tải xuống thông thường, và mọi bản cập nhật đều được ký bằng ECDSA. Ban đầu tôi thêm GSAP/Flip và echarts trên nền reveal.js, nhưng vì vấn đề về kích thước và hành vi nên đã tự triển khai lại toàn bộ tính năng hoạt ảnh và biểu đồ
Tôi đặc biệt hài lòng vì cộng tác CRDT hoạt động rất mượt. Một blind relay nhỏ chạy trên Cloudflare Durable Objects chỉ nhìn thấy dữ liệu đã mã hóa của client, và tính năng cộng tác bị tắt cho đến khi bắt đầu phiên bằng cách chia sẻ tệp mời. Quyền truy cập được quản lý bằng khóa người dùng nên có thể có người dùng chỉ đọc, đồng thời cũng có thể thu hồi quyền cộng tác thời gian thực theo từng người dùng
Nếu tính năng cộng tác được bật mặc định cho mọi người dùng, tôi cũng thắc mắc liệu có nguy cơ dồn lưu lượng về tài khoản Cloudflare hay không
Có vẻ bạn đã bỏ tính năng này để làm cho nó giống PowerPoint hơn, nhưng đây là tính năng tôi thích nhất ở Reveal.js nên mong là bạn không quên nó
Tôi đã làm một công cụ tương tự nhưng tập trung vào việc tạo các ứng dụng React nhỏ thay vì bản trình bày. HTML mặc định kèm ứng dụng mẫu ở đây, tài liệu ở đây; chưa được trau chuốt hẳn nhưng đủ dùng
Nó tích hợp trình chuyển đổi JSX và trình chỉnh sửa mã, hỗ trợ lưu vào tệp hoặc
localStorage, và cũng có thể xuất riêng dữ liệu JSX và JSON khỏi phần shell phụ trách lưu tệp, chuyển đổi và chỉnh sửaTôi cũng đã làm một ứng dụng iOS để lưu các mini app. Nó không chỉ phụ thuộc vào
localStoragemà lưu dài hạn cả dữ liệu lẫn thay đổi mã nên luồng lưu/làm mới rất mượt. Sandbox chặn các lệnh gọi mạng của ứng dụng đã lưu nhưng có thể cho phép theo từng ứng dụng, và sau này tôi cũng muốn thêm các tiện ích như trình chỉnh sửa nativeTôi nghĩ kiểu này sẽ trở nên phổ biến hơn. Rất nhiều phần mềm có thể được phân phối hoàn toàn cục bộ bằng HTML, TypeScript, React, v.v., và trạng thái cũng có thể để cục bộ, nhưng đến nay động lực kinh tế vẫn còn thiếu
Cá nhân tôi đang dùng Kimi K3 để làm một trò chơi thân thiện di động, bao quát từ đại số tuyến tính đến vật lý lượng tử. Mục tiêu là quan tâm đến người dùng đa dạng thần kinh, lưu toàn bộ trạng thái cục bộ và phân phối qua GitHub Pages để khơi gợi hứng thú với lĩnh vực này. Đây là dự án đòi hỏi nhiều chuyên môn và thời gian, sẽ không khả thi về mặt kinh tế nếu không có LLM; tôi dự định sẽ tự chơi và cải thiện để loại bỏ lỗi rồi mới chia sẻ trên HN
Tôi đã dùng sổ lưu niệm thời gian thực một cách thích thú, nhưng cuối cùng chiếc M1 Mac của tôi bị treo và phải buộc khởi động lại. Trừ khi toàn bộ HN cùng chỉnh sửa một lúc, nó có lẽ vẫn hoạt động tốt trong hầu hết trường hợp, nhưng có vẻ Figma dùng WASM và trình kết xuất tùy biến là có lý do
Khi người khác thay đổi nội dung không liên quan, tiêu điểm nhập hiện tại không nên bị đặt lại. Ngoài ra, câu chữ trên trang đích và bộ slide mẫu quá giống văn do LLM tạo, còn phần bài đăng trên HN thì dễ đọc hơn nhiều. Việc phát hành dưới dạng phần mềm nguồn mở tự do là rất tuyệt
Tôi cũng đồng ý về vấn đề câu chữ, nhưng tôi không tự tin về khả năng viết và lại thiếu thời gian giữa công việc và chăm con nên sẽ sửa dần dần
Tôi đang quảng bá khái niệm ứng dụng web một tệp này, và nếu thêm Bento vào bản nháp Wikipedia đang đề xuất thì cũng hay
.htmlduy nhất, hoạt động ngoại tuyến, với hình ảnh, biểu tượng và kiểu dáng đều được nhúng inline, nên tôi đùa rằng đó là ứng dụng một trang thực sự đầu tiênyou. Wikipedia phải là nguồn cấp ba chứ không phải nơi quảng bá cho các khái niệm muốn thiết lập, nên có lẽ đây không phải chỗ phù hợpThật hay ở chỗ chỉ cần cho Claude biết về công nghệ Bento là có thể dùng được
Trong thời gian dài làm sơ đồ bằng draw.io, tôi luôn thấy cách lưu tài liệu như một blob iframe chứa cả trình biên tập và tệp là rất thông minh. Tuy vậy, draw.io không nhúng chính trình biên tập vào tệp nên vẫn phải tải mã qua kết nối web
Tôi từng hy vọng cách này có thể trở thành trường hợp sử dụng chính, và Bento gần như đúng với hình dung đó của tôi
Nó đáp ứng một nhu cầu rất phổ biến trong môi trường doanh nghiệp. Một vài nhóm trong công ty đã bỏ các sản phẩm cloud hoặc desktop vì bug trong phần mềm trình bày·trực quan hóa hiện có không được sửa và cũng không có thêm tính năng tùy biến, rồi chuyển sang công cụ dựa trên HTML·JavaScript
Có lẽ các “tiểu vương” trong bộ phận IT nội bộ nên bắt đầu lo lắng
Tôi đang hình dung một công cụ trình bày độc lập: cài PWA từ một Bento trống bằng tính năng “cài trang web thành ứng dụng” của trình duyệt, tự động điền tên tác giả v.v., rồi đặt ở chế độ chỉ đọc để người dùng dùng “lưu thành”
Sẽ rất tốt nếu dự án có tính năng cài dưới dạng PWA một tài liệu mặc định trống, chỉ đọc ngoại trừ thông tin tác giả
Tôi định tiếp tục xem xét cách giữ lại các tính năng người dùng muốn ở bản host, đồng thời duy trì những nguyên tắc đặc biệt của Bento
Dùng code agent để tạo bài thuyết trình HTML cho ra kết quả khá tốt. Tùy mục đích, có thể dùng Slidev dựa trên Markdown, hoặc để agent tạo slide Typst vốn đặc biệt đẹp ở các biểu thức toán học
Tuy nhiên, khi nhìn tiêu đề tôi đã nghĩ đây là công cụ liên quan trực tiếp đến PowerPoint, nhưng thực ra chỉ dùng PowerPoint như từ đồng nghĩa của “bài thuyết trình”. Điều này hơi mỉa mai vì có khá nhiều người không thích PowerPoint