Skip to main content

How to load HTML

The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser.

This covers how to load HTML documents into a LangChain Document objects that we can use downstream.

Parsing HTML files often requires specialized tools. Here we demonstrate parsing via Unstructured. Head over to the integrations page to find integrations with additional services, such as FireCrawl.

Prerequisites

This guide assumes familiarity with the following concepts:

Installationโ€‹

yarn add @langchain/community

Setupโ€‹

Although Unstructured has an open source offering, youโ€™re still required to provide an API key to access the service. To get everything up and running, follow these two steps:

  1. Download & start the Docker container:
docker run -p 8000:8000 -d --rm --name unstructured-api quay.io/unstructured-io/unstructured-api:latest --port 8000 --host 0.0.0.0
  1. Get a free API key & API URL here, and set it in your environment (as per the Unstructured website, it may take up to an hour to allocate your API key & URL.):
export UNSTRUCTURED_API_KEY="..."
# Replace with your `Full URL` from the email
export UNSTRUCTURED_API_URL="https://<ORG_NAME>-<SECRET>.api.unstructuredapp.io/general/v0/general"

Loading HTML with Unstructuredโ€‹

import { UnstructuredLoader } from "@langchain/community/document_loaders/fs/unstructured";

const filePath =
"../../../../libs/langchain-community/src/tools/fixtures/wordoftheday.html";

const loader = new UnstructuredLoader(filePath, {
apiKey: process.env.UNSTRUCTURED_API_KEY,
apiUrl: process.env.UNSTRUCTURED_API_URL,
});

const data = await loader.load();
console.log(data);
[
Document {
pageContent: 'Word of the Day',
metadata: {
category_depth: 0,
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: ': April 10, 2023',
metadata: {
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
parent_id: 'b845e60d85ff7d10abda4e5f9a37eec8',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'UncategorizedText'
}
},
Document {
pageContent: 'foible',
metadata: {
category_depth: 1,
languages: [Array],
parent_id: 'b845e60d85ff7d10abda4e5f9a37eec8',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'play',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'noun',
metadata: {
category_depth: 0,
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'FOY-bul',
metadata: {
category_depth: 0,
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Prev',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Next',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'What It Means',
metadata: {
category_depth: 1,
languages: [Array],
parent_id: '211c3644cd30f9bc846f0582444e9451',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Foibles are minor flaws or shortcomings in\n' +
' character or behavior. In fencing,\n' +
" foible refers to the part of a sword's blade\n" +
' between the middle and point, which is considered the\n' +
' weakest part.',
metadata: {
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
parent_id: '7daafb9067bef1d8d72040b9015a168b',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: '// He was amused daily by the foibles of his\n' +
' eccentric neighbor.',
metadata: {
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
parent_id: '7daafb9067bef1d8d72040b9015a168b',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'See the entry >',
metadata: {
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: '7daafb9067bef1d8d72040b9015a168b',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'foible in\n Context',
metadata: {
category_depth: 1,
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
parent_id: '211c3644cd30f9bc846f0582444e9451',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: '"Films about important historical moments are often\n' +
' marked by a heavy solemnity, a sometimes suffocating\n' +
' respectfulness that can make one forget that these\n' +
' events involved real people, human beings with\n' +
' passions and foibles." โ€” Michael Ordoรฑa,\n' +
' The Los Angeles Times, 20 Jan. 2023',
metadata: {
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
parent_id: 'e57874be3146e3cb252d37874a07840c',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'Build your vocabulary! Get Word of the Day in\n' +
' your inbox every day.',
metadata: {
category_depth: 2,
languages: [Array],
parent_id: 'e57874be3146e3cb252d37874a07840c',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Test Your Vocabulary',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'What Did You Just Call Me?',
metadata: {
category_depth: 3,
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
parent_id: 'e63fbd8b85aa3915e02c1c91f1c8adf0',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: undefined,
metadata: {
category_depth: 1,
languages: [Array],
parent_id: 'a17ddfeddba8873cf88e4ff041e439c5',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'Before we went to her house, Hannah told\n' +
' us her aunt was a\n' +
' flibbertigibbet.',
metadata: {
category_depth: 1,
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
languages: [Array],
parent_id: 'a17ddfeddba8873cf88e4ff041e439c5',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'Insulting\n Complimentary',
metadata: {
category_depth: 1,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: 'a17ddfeddba8873cf88e4ff041e439c5',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'You know what it looks likeโ€ฆ but what is\n' +
' it called?',
metadata: {
languages: [Array],
parent_id: 'a17ddfeddba8873cf88e4ff041e439c5',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'TAKE THE QUIZ',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Can you make 12 words with 7 letters?',
metadata: {
languages: [Array],
parent_id: 'eec9e49b2e4f6c99b5517e44ec9efeb4',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'PLAY',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Did You Know?',
metadata: {
category_depth: 1,
languages: [Array],
parent_id: '7a6d7635930938a56182b0cbc12b5b88',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Many word lovers agree that the pen is mightier than the\n' +
' sword. But be they\n' +
' honed\n' +
' in wit or form, even the sharpest tools in the shed have\n' +
' their flaws. Thatโ€™s where foible comes in\n' +
' handy. Borrowed from French in the 1600s, the word\n' +
' originally referred to the weakest part of a fencing\n' +
' sword, that part being the portion between the middle\n' +
' and the pointed tip. The English foible soon\n' +
' came to be applied not only to weaknesses in blades but\n' +
' also to minor failings in character. The French source\n' +
' of foible is also at a remove from the fencing\n' +
' arena; the French foible means "weak," and it\n' +
' comes from the same Old French term, feble,\n' +
' that gave us\n' +
' feeble.',
metadata: {
emphasized_text_contents: [Array],
emphasized_text_tags: [Array],
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: 'fbe2a45ff9ac86d8b3e5e311ba4aaf94',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'Test Your Vocabulary with M-W Quizzes',
metadata: {
category_depth: 1,
languages: [Array],
parent_id: '7a6d7635930938a56182b0cbc12b5b88',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Famous Novels, First Lines Quiz',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Weather Words',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Name That Animal: Volume 3',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Name That Hat!',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Name That Flower',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Are You Feeling Lucky?',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Famous Novels, First Lines Quiz',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Weather Words',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Name That Animal: Volume 3',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Name That Hat!',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Name That Flower',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Are You Feeling Lucky?',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Famous Novels, First Lines Quiz',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Weather Words',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Name That Animal: Volume 3',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Play Now',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Test Your Vocabulary',
metadata: {
category_depth: 1,
languages: [Array],
parent_id: '63b33a2339cd82a6aec91b7c6c4e75c2',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Unscramble the letters to create a word that refers to a\n' +
' particular kind of fencing sword: BRASE.',
metadata: {
languages: [Array],
parent_id: 'b95a085d102592f456bf277b90a7f7b9',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'VIEW THE ANSWER',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Podcast',
metadata: {
category_depth: 1,
languages: [Array],
parent_id: '2669d693b8827c7babf22eb05c106af5',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'More Words of the Day',
metadata: {
category_depth: 1,
languages: [Array],
parent_id: '2669d693b8827c7babf22eb05c106af5',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Apr 09\n \n auspicious',
metadata: {
category_depth: 1,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: '4ab7b48ab6922a6ce36b46af27bbf0ae',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'Apr 08\n' +
' \n' +
' circumscribe',
metadata: {
category_depth: 1,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: '4ab7b48ab6922a6ce36b46af27bbf0ae',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'Apr 07\n \n equivocal',
metadata: {
category_depth: 1,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: '4ab7b48ab6922a6ce36b46af27bbf0ae',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'Apr 06\n \n seder',
metadata: {
category_depth: 1,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: '4ab7b48ab6922a6ce36b46af27bbf0ae',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'Apr 05\n' +
' \n' +
' gerrymander',
metadata: {
category_depth: 1,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: '4ab7b48ab6922a6ce36b46af27bbf0ae',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'Apr 04\n \n belated',
metadata: {
category_depth: 1,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: '4ab7b48ab6922a6ce36b46af27bbf0ae',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'ListItem'
}
},
Document {
pageContent: 'SEE ALL WORDS OF THE DAY',
metadata: {
category_depth: 0,
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'Title'
}
},
Document {
pageContent: 'Can you solve 4 words at once?\n' +
' \n' +
' \n' +
' \n' +
' Play\n' +
' \n' +
' \n' +
' Play\n' +
' \n' +
' \n' +
' \n' +
' \n' +
' \n' +
' Can you solve 4 words at once?\n' +
' \n' +
' \n' +
' \n' +
' Play\n' +
' \n' +
' \n' +
' Play',
metadata: {
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: 'f9af15bb60bb691bd715c92448636671',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'Love words? Need even more definitions?',
metadata: {
languages: [Array],
parent_id: 'f9af15bb60bb691bd715c92448636671',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: "Subscribe to America's largest dictionary and get thousands\n" +
' more definitions and advanced searchโ€”ad free!',
metadata: {
languages: [Array],
parent_id: 'f9af15bb60bb691bd715c92448636671',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
},
Document {
pageContent: 'Merriam-Webster unabridged',
metadata: {
link_texts: [Array],
link_urls: [Array],
link_start_indexes: [Array],
languages: [Array],
parent_id: 'f9af15bb60bb691bd715c92448636671',
filename: 'wordoftheday.html',
filetype: 'text/html',
category: 'NarrativeText'
}
}
]

Was this page helpful?


You can leave detailed feedback on GitHub.