Short answer
HubSpot's developer blog covers adding structured data directly to a template (for example the blog post template) with HubL variables, then validating with Google's Rich Results Test. For a single page, the page's head HTML works too.
1. Design Manager
Templates live in the design manager in my demo portal.

2. Example
<script type="application/ld+json">
{ "@context": "https://schema.org", "@type": "BlogPosting", "headline": "{{ content.name }}" }
</script>