HTML to YAML Converter
About this app
A simple web app that converts HTML code or a website URL into a YAML file arranged by title and heading.
HTML to YAML Converter 🌐 HTML to YAML Converter Convert to YAML
Related apps
Put this on your site
Source
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>HTML to YAML Converter</title>
<meta name="description" content="A fun web app that converts HTML code or a website URL into a YAML file arranged by title and heading.">
<meta name="keywords" content="HTML, YAML, Converter, Web App">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
<link href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Fira+Code&display=swap" rel="stylesheet">
<script type="text/javascript">
try {
// App Javascript Goes Here. Place your entire script content inside the try block for error handling.
const parseHTML = (html) => {
const parser = new DOMParser();
return parser.parseFromString(html, 'text/html');
};
const toYAML = (obj) => {
let yaml = '';
for (const prop in obj) {
yaml += prop + ':\n';
for (const subProp in obj[prop]) {
yaml += ' - ' + subProp + ': "' + obj[prop][subProp] + '"\n';
}
}
return yaml;
};
const summarizeText = (text) => {
const summary = text.substring(0, 100) + '...';
return summary;
};
// This will run when the DOM is ready.
document.addEventListener("DOMContentLoaded", function() {
document.getElementById('convert').addEventListener('click', function() {
const input = document.getElementById('input').value;
const doc = parseHTML(input);
const data = {};
const title = doc.querySelector('title');
if (title) {
data["Title"] = title.textContent;
}
doc.querySelectorAll('h1, h2, h3, h4, h5, h6').forEach((heading, i) => {
const headingText = heading.textContent;
const headingLink = heading.querySelector('a')?.href;
const summary = summarizeText(headingText);
data[`Heading ${i + 1}`] = { text: headingText, link: headingLink, summary: summary };
});
const output = toYAML(data);
document.getElementById('output').innerText = output;
});
});
} catch (error) {
// This will throw the error to the parent window.
throw error;
}
</script>
<style>
/* App CSS Goes Here */
body {
font-family: 'Fira Code', monospace;
background-color: #f5f5f5;
}
.container {
margin-top: 2em;
}
#output {
white-space: pre;
background-color: #fff;
padding: 1em;
border-radius: 5px;
border: 1px solid #ddd;
margin-top: 1em;
}
</style>
</head>
<body>
<div id="main-container" class="container">
<!-- App HTML Goes Here -->
<h1>🌐 HTML to YAML Converter</h1>
<textarea id="input" class="form-control" rows="10" placeholder="Paste your HTML code here or a website URL..."></textarea>
<button id="convert" class="btn btn-primary mt-2">Convert to YAML</button>
<pre id="output"></pre>
</div>
</body>
</html>
NEW APPS
These are apps made by the community!