Chuyển đổi HTML sang Markdown

Việc chuyển một bài viết WordPress sang Hugo, lưu trữ một trang Confluence dưới dạng ghi chú, hoặc chỉnh sửa email nội dung phong phú cho một wiki tài liệu đều đòi hỏi phải chuyển đổi HTML thành Markdown. Công cụ này ánh xạ tiêu đề, đoạn văn, danh sách, liên kết, hình ảnh và khối mã sang dạng Markdown tương ứng, giúp nội dung giữ nguyên cấu trúc mà không bị rườm rà bởi HTML.

Cách chuyển đổi HTML sang Markdown

  1. 1

    Dán HTML

    Toàn bộ trang, nội dung email văn bản định dạng phong phú hoặc các đoạn trích đều được phân tích.

  2. 2

    Chuyển đổi

    Tiêu đề, đoạn văn, danh sách, liên kết, hình ảnh và khối mã được chuyển thành Markdown.

  3. 3

    Sao chép Markdown

    Đưa kết quả vào Obsidian, Hugo, Jekyll, Notion hoặc một kho lưu trữ Git.

Chuyển đổi HTML sang Markdown

Bộ chuyển đổi sẽ duyệt qua DOM và tạo ra mã Markdown cho mỗi phần tử được nhận diện. Các thẻ bao bọc như <div>, <span>, <section><article> sẽ bị loại bỏ và nội dung của chúng được giữ ở cấp độ lồng nhau chính xác.

Ánh xạ các phần tử

HTML Kết quả Markdown
Từ <h1> đến <h6> Tiêu đề từ # đến ######
<strong>, <b> **text**
<em>, <i> *text*
<code> nội tuyến `text`
<pre><code> khối được bao bởi ba dấu backtick, kèm ngôn ngữ nếu được đặt
<a href> [text](url)
<img src alt> ![alt](src)
<ul><li> - item
<ol><li> 1. item
<blockquote> > quote
<hr> ---

Điều gì xảy ra với phần còn lại

Markdown không thể biểu đạt mọi phần tử HTML. Các thẻ không có dạng tương đương trong Markdown sẽ bị loại bỏ và chỉ giữ lại nội dung văn bản của chúng:

  • <table>: văn bản trong các ô vẫn được giữ, nhưng khung của bảng bị mất. Hãy dùng công cụ hỗ trợ bảng khi cấu trúc quan trọng.
  • <del>, <u> và các kiểu nội tuyến khác: văn bản vẫn giữ, định dạng thì không.
  • <video>, <audio>, <iframe>: từ các phần nhúng này không tạo ra gì có thể hiển thị trong Markdown.
  • <details> / <summary>: văn bản bên trong được giữ, tiện ích bung mở thì không.

Để chuyển đổi qua lại không mất dữ liệu, hãy chuyển từ nguồn Markdown gốc thay vì từ HTML đã được kết xuất.

Câu hỏi thường gặp

Các trình bao bọc <div><span> đơn giản sẽ bị loại bỏ và nội dung của chúng được xuất ra ở cấp độ lồng nhau đúng. Các div chỉ dùng để dàn trang sẽ trở nên vô hình trong Markdown, đây thường là điều bạn mong muốn đối với tài liệu.

Đúng vậy. <pre><code class="language-js"> sẽ trở thành khối được rào bằng dấu backtick, với js làm gợi ý ngôn ngữ; các khối mã thụt lề nhưng không có ngôn ngữ sẽ quay về dạng khối rào thông thường.

Văn bản trong các ô của <table> được giữ, nhưng bản thân khung thì không: các hàng và cột không được bảo toàn nên cấu trúc bị mất. Hãy dùng công cụ hỗ trợ bảng khi cấu trúc quan trọng.

Gần như vậy; tuy nhiên các định dạng tinh tế (liên kết kiểu tham chiếu, dòng mới cứng kèm hai khoảng trắng sau, các dấu nhấn nhấn mạnh thay thế) có thể được điều chỉnh để phù hợp hơn. Để đảm bảo khả năng truyền tải dữ liệu hoàn toàn không mất mát, hãy giữ nguyên định dạng Markdown ban đầu.

Công cụ liên quan

Công cụ này có phiên bản bằng các ngôn ngữ khác