diff --git a/app/site/views/help/help.json b/app/site/views/help/help.json index 086dc21f8ef..3b9fca73ef7 100644 --- a/app/site/views/help/help.json +++ b/app/site/views/help/help.json @@ -1 +1 @@ -{"getting-started-with-blot":{"title":"Getting started with Blot","slug":"getting-started-with-blot","subsections":[{"title":"Posts and formatting","slug":"posts-and-formatting","url":"/help/getting-started-with-blot#posts-and-formatting","html":"
Blot is a blogging platform. It creates a folder inside your Dropbox and publishes files you put inside. This means you can use your favorite text editor to write your blog.
\n\n\n\n\nThese files become blog posts when you put them somewhere in your site's folder:
Blot skips files and folders whose name starts with an underscore. Use this feature to embed an image in a blog post.
I've written scripts to generate a folder of files from sites hosted on Tumblr, Wordpress, Jekyll and Squarespace. If you contact me, I can run them on your site and send you the result.
Blot supports Markdown, a markup language designed for plain text files. You can add headings, lists, mathematical statements set in LaTeX, syntax highlighting to code snippets and much more.
Files inside a folder called 'Pages' are added to your site's menu instead of the list of blog posts. You can hide a page from your site's menu if you prefer.
Files inside a folder called 'Drafts' are not published to your site. Instead, Blot creates a preview file which you can open in your web browser.
Every file in your site's folder is public. For example, if you put
in your folder, your readers can download it at www.your-site.com/archive.zip
. You can use Blot as a static file server. Please note that paths and URLs on Blot are case-insensitive.
\nDate: February 28th, 1973\nTags: Literature, Schwarzgerät\n\n# Gravity's rainbow\n\nA screaming comes across the sky.\n\n\n \n
Blot generates all metadata for each post automatically based on the file's contents, name and location. This metadata includes a publish date, permalink and a summary. You can override Blot's metadata with your own.
Metadata must start on the file's first line and be separated from the rest of the post by at least one blank line.
You can also create your own custom metadata and use it on your site's template. View the full list of metadata.
Creating a template, or modifying an existing template will require an understanding of HTML, CSS and Mustache. Blot will be familiar to those who have worked with templates on other blogging platforms.
\nThe best way to learn how to use Blot's template is to clone an existing template and look at its source. Please don't hestitate to contact me if you have any questions.
\n\nTo modify an existing template, create a new template on the design page and specify the template you wish to clone.
If you append the query string ?json=true to a URL on Blot, you can retrieve the view used to render its template. I’d suggest using a browser extension like JSONView to make more sense of it.
When an HTTP request from one of your readers arrives at your site, Blot follows these steps to work out what to send in response. This process is known as routing.
Check your site's template to see if there is a route which matches the path. If there is, render the template and send the HTML as a response.
\nCheck your site's folder to see if there is a file which matches the path. Send the file as a response if it matches.
\nCheck your site's list of redirects to see if you have set one up for this path.
\nServe your template's error page if you have one, or Blot's error page if not.
\nYou can read the source code which defines these steps for a more precise idea of how things work.
Blot uses these variables to render Mustache templates.
The tag… | \nis replaced with… | \n
---|---|
{{title}} | \nyour site’s title | \n
{{#menu}}...{{/menu}} | \na list containing the links on your site’s menu | \n
{{avatar}} | \nthe URL to your site’s avatar | \n
{{siteURL}} | \nthe URL to your site’s homepage | \n
{{feedURL}} | \nthe URL to your site’s RSS feed | \n
{{cssURL}} | \nthe URL to your site’s CSS file | \n
{{scriptURL}} | \nthe URL to your site’s JS file | \n
{{sitemapURL}} | \nthe URL to your site’s sitemap | \n
{{cacheID}} | \na unix time stamp for the last change you made to your site | \n
{{timeZone}} | \nyour site’s timezone | \n
{{roundAvatar}} | \ntrue if you’ve indicated your avatar is round, false if not | \n
{{hideDates}} | \ntrue if you’ve chosen to hide the dates on your site, false if not | \n
Note that some of the variables, like {{{html}}}
have three handlebars rather than two. Mustache escapes variables with two handlebars.
The tag… | \nis replaced with… | \n
---|---|
{{id}} | \nNumber representing the entry's unique ID | \n
{{date}} | \nHuman readable publish date for the entry | \n
{{title}} | \nTitle of the entry | \n
{{{titleTag}}} | \nHTML of the entry's title | \n
{{{html}}} | \nHTML of the entry, including the title | \n
{{{body}}} | \nHTML of the entry, excluding the title | \n
{{{teaser}}} | \nHTML of the title and the first few items in the entry. You can specify the end of the teaser by inserting the special tag {{more}} into your blog post's file. Everything before {{more}} will be included in the teaser. | \n
{{{teaserBody}}} | \n{{{teaser}}} without the title. | \n
{{summary}} | \nText summary of the entry | \n
{{more}} | \nBoolean indicating whether teaser differs from html . This is useful for determining whether or not to show 'read more' links. | \n
{{tags}} | \nList of tags for the entry | \n
{{url}} | \nRelative URL to the entry | \n
{{menu}} | \n"true" if the entry is a page, "false" if not | \n
{{created}} | \nTimestamp | \n
{{updated}} | \nTimestamp | \n
Blot exposes some general purpose functions as Mustache lambdas. Note that you can pass another variable from the view to these functions.
The text inside the tag… | \nis replaced with… | \n
---|---|
{{#encodeURIComponent}}...{{/encodeURIComponent}} | \nThe same text, encoded appropriately for a URI component | \n
You can uses these variables to render lists of posts
The tag… | \nis replaced with… | \n
---|---|
{{#all_posts}}...{{/all_posts}} | \nEvery post ever published | \n
{{#recent_posts}}...{{/recent_posts}} | \n25 most recent posts on your site | \n
{{#archives}}...{{/archives}} | \nA list of years, months and the posts published on them | \n
{{#all_tags}}...{{/all_tags}} | \nthe URL to your site’s avatar | \n
You can specify custom entry metadata:
\nAuthor: Eric Blair\n\n# Homage to Catalonia\n\nIn the Lenin Barracks in Barcelona, the day before...\n\n\n \n
Use custom metadata in your template like this:
Posted by {{metadata.author}}\n
Metadata keys are case insensitive. I’d recommend using conditional blocks to prevent your layout breaking if you don’t consistently specify metadata:
{{#metadata.author}}\n Posted by {{metadata.author}}\n{{/metadata.author}}\n\n{{^metadata.author}}\n Posted by the editor\n{{/metadata.author}}\n
Blot generates four sizes of thumbnails:
Blot will not increase the size of smaller images. The JSON added to each entry looks something like this:
{\n ...\n thumbnail: {\n small: {url: "...", width: 160, height: 103},\n medium: {url: "...", width: 640, height: 411},\n large: {url: "...", width: 1060, height: 681},\n square: {url: "...", width: 160, height: 160 }\n },\n ...\n}\n
You can use them in your template like this:
{{#thumbnail.medium}}\n <img src="{{url}}" width="{{width}}" height="{{height}}">\n{{/thumbnail.medium}}\n
This is the blurb for this page.
\n\n\nLet's say you own the domain example.com
and would like to point it to your site. First, you must decide whether you would like to use the apex domain, which is just example.com
, or a subdomain like www.example.com
or blog.example.com
.
How to use the apex domain
\nGo to your domain's DNS page. Create an ALIAS
record which points to blot.im
. If you cannot create an ALIAS
record, I recommend using the www
subdomain then setting up a redirect from the apex domain to the subdomain.
Tell Blot your domain on the dashboard.
\nHow to use a subdomain
\nGo to your domain's DNS page. This is usually where you bought the domain. Create a CNAME
record for the subdomain you'd like to use and set its value to blot.im
.
Tell Blot your full domain, including the subdomain, on the dashboard.
\nYou can set up redirects for missing or moved pages on your blog. Your site’s 404 log will help you discover URLs which need redirects. You can use RegEx to match multiple routes. For example, this rule redirects URLs starting with /post
to /blog
:
\\/post\\/(.*) → /blog/$1\n
How to embed an image in a blog post
\nHere is the reference for Moment.js's date tokens. These are used in Blot's permalink format, and its templates.
\n | Token | \nOutput | \n
---|---|---|
Month | \nM | \n1 2 ... 11 12 | \n
\n | Mo | \n1st 2nd ... 11th 12th | \n
\n | MM | \n01 02 ... 11 12 | \n
\n | MMM | \nJan Feb ... Nov Dec | \n
\n | MMMM | \nJanuary February ... November December | \n
Quarter | \nQ | \n1 2 3 4 | \n
\n | Qo | \n1st 2nd 3rd 4th | \n
Day of Month | \nD | \n1 2 ... 30 31 | \n
\n | Do | \n1st 2nd ... 30th 31st | \n
\n | DD | \n01 02 ... 30 31 | \n
Day of Year | \nDDD | \n1 2 ... 364 365 | \n
\n | DDDo | \n1st 2nd ... 364th 365th | \n
\n | DDDD | \n001 002 ... 364 365 | \n
Day of Week | \nd | \n0 1 ... 5 6 | \n
\n | do | \n0th 1st ... 5th 6th | \n
\n | dd | \nSu Mo ... Fr Sa | \n
\n | ddd | \nSun Mon ... Fri Sat | \n
\n | dddd | \nSunday Monday ... Friday Saturday | \n
Day of Week (Locale) | \ne | \n0 1 ... 5 6 | \n
Day of Week (ISO) | \nE | \n1 2 ... 6 7 | \n
Week of Year | \nw | \n1 2 ... 52 53 | \n
\n | wo | \n1st 2nd ... 52nd 53rd | \n
\n | ww | \n01 02 ... 52 53 | \n
Week of Year (ISO) | \nW | \n1 2 ... 52 53 | \n
\n | Wo | \n1st 2nd ... 52nd 53rd | \n
\n | WW | \n01 02 ... 52 53 | \n
Year | \nYY | \n70 71 ... 29 30 | \n
\n | YYYY | \n1970 1971 ... 2029 2030 | \n
\n | Y | \n1970 1971 ... 9999 +10000 +10001\n \n Note: This complies with the ISO 8601 standard for dates past the year 9999\n | \n
Week Year | \ngg | \n70 71 ... 29 30 | \n
\n | gggg | \n1970 1971 ... 2029 2030 | \n
Week Year (ISO) | \nGG | \n70 71 ... 29 30 | \n
\n | GGGG | \n1970 1971 ... 2029 2030 | \n
AM/PM | \nA | \nAM PM | \n
\n | a | \nam pm | \n
Hour | \nH | \n0 1 ... 22 23 | \n
\n | HH | \n00 01 ... 22 23 | \n
\n | h | \n1 2 ... 11 12 | \n
\n | hh | \n01 02 ... 11 12 | \n
\n | k | \n1 2 ... 23 24 | \n
\n | kk | \n01 02 ... 23 24 | \n
Minute | \nm | \n0 1 ... 58 59 | \n
\n | mm | \n00 01 ... 58 59 | \n
Second | \ns | \n0 1 ... 58 59 | \n
\n | ss | \n00 01 ... 58 59 | \n
Fractional Second | \nS | \n0 1 ... 8 9 | \n
\n | SS | \n00 01 ... 98 99 | \n
\n | SSS | \n000 001 ... 998 999 | \n
\n | SSSS ... SSSSSSSSS | \n000[0..] 001[0..] ... 998[0..] 999[0..] | \n
Unix Timestamp | \nX | \n1360013296 | \n
Unix Millisecond Timestamp | \nx | \n1360013296123 | \n
Blot converts text files from Markdown. You can use markdown to make text bold, italicized, create lists, links and more. You can mix Markdown and HTML in the same file.
\n\n\nYou can also paste the HTML for a video embed directly into a blog post. Blot also automatically converts plain URLs to Youtube and Vimeo videos into video embeds. To embed a youtube video in your blog post just paste its URL like this:
https://www.youtube.com/watch?v=nkJA6SYwa94\n
You can specify footnotes using this syntax:
A line with a footnote.[^1] Another line.[^2]\n\n[^1]: And the note goes here.\n[^2]: And the second goes here too.\n
I wrote a Markdown extension for Blot which provides basic layout shortcuts. The features are as follows:
The tag… | \nshould make its contents... | \nby applying this CSS class… | \n
---|---|---|
{<<} | \nextend into the left margin | \nwide left | \n
{>>} | \nextend into the right margin | \nwide right | \n
{<>} | \nextend into both margins | \nwide | \n
{>} | \nfloat right inside the page | \nright inside | \n
{<} | \nfloat left inside the page | \nleft inside | \n
{|<} | \nhang in the right margin | \nright margin | \n
{>|} | \nhang in the left margin | \nleft margin | \n
{||} | \nsit inside a 1/2 width column | \ntwo column | \n
{|||} | \nsit inside a 1/3 width column | \nthree column | \n
{||||} | \nsit inside a 1/4 width column | \nfour column | \n
You can including multiple lines inside the same layout tag by indenting them:
{<<} ## Subtitle which extends into left margin\n A paragraph which will also extend into the left margin.\n\n{>>} ## Subtitle which extends into right margin\n A paragraph which will also extend into the right margin.\n
Your blog's template controls how the layout HTML is styled. Most Blot templates come with a variation on layout.css which provides the above features as described.
To create italics, use a single asterix (*) on either side of the text:
*This text will be italic.*
Surrounding text with two asterisks makes text bold:
**This text will be bold.**
Both * or _ symbols work to make text bold or italic. This way you can combine bold and italic in the same sentence. For example:
**Everyone _must_ listen.**
Put a double tilde (~) on either side of the text you want to strikethrough:
~~Strike out mistakes~~
Make a bulleted list by preceding list items with a single asterix (*) or a hyphen (-). You need a space between the asterix and the text.
- Round\n- Shell\n- Projectile
\nCreate a numbered list by preceding list items with a number.
1. Eins\n2. Deux\n3. Tres
\nCreate a text link by wrapping the linked text in brackets [ ], and then wrapping the link in parenthesis ( ). For example:
[Wikipedia](https://wikipedia.org)
# Largest heading\n## Subheading\n### Section heading\n
Blot will convert equations set in LaTeX. Check out this useful guide. To use this, wrap your LaTeX in two dollar signs ($$) like this:
$$ f(x) = 2x^2 + 2/3 $$
\n $$ f(x) = 2x^2 + 2/3 $$
Here's what the markdown looks like, note the ‘!’ before the tag.
![Alt text](http://example.com/image.jpg "Title")\n
Yes, first create a folder whose name starts with an underscore, e.g. '_images'. Blot will not turn any of the files inside into blog posts, but they will be public. Then put the image inside then embed the image like this:
![Image description](/_images/image.jpg)\n
Blot resolves relative paths based on the location of the source file, not its permalink. File paths are case-insenitive. For example, let's say your blog has this folder structure:
These images all resolve correctly in fruit.txt
, no matter its resulting URL.
![Apple](_apple.png)\n![Apple](/posts/_apple.png)\n![Peach](../_images/peach.png)\n
Indent code with four spaces:
var foo = “bar”;\n
You can also wrap code.snippets
with three backticks `
. This is useful for inserting code snippets inside a paragraph.
If you have enabled the syntax highlighting app, Blot will process the snippet using highlight.js. Every Blot template comes with its own syntax highlighting theme. If you are designing a custom blog template and want to use syntax highlighting, please add a theme to your blog’s CSS file.
Key | \nValue | \n
---|---|
Date | \nDefaults to this file's creation date. Set the post's publish date using one of the supported formats. | \n
Title | \nDefaults to the first title in this post or its file name. | \n
Tags | \nEmpty by default. Seperate your tags with a comma. | \n
Permalink | \nDefaults to a URL-friendly version of the post's title. You can specify one here or change your site's default permalinks on the dashboard. | \n
Summary | \nDefaults to the first sentence of the first paragraph in the file. | \n
Teaser | \nLike summary but a little longer. Defaults to the first few paragraphs. | \n
Thumbnail | \nGenerated from the largest image in the post. You can specify a path or URL to an image. | \n
Draft | \nDefaults to 'No'. Anything truthy (e.g. 'Yes') will turn the post into a draft. | \n
Page | \nDefaults to 'No'. Anything truthy (e.g. 'Yes') will turn the post into a page and add it to your blog's menu. | \n
Menu | \nDefaults to 'Yes' if the file is a page. Anything falsy (e.g. 'No') will hide the page from your site's menu. | \n
You can create your own metadata and access it in your blog's template.
\nHere is the full list of Blot's native metadata:
\nMetadata properties | \nExample | \n
---|---|
Draft | \n/sample-post | \n
Page | \n/blog/sample-post | \n
Menu | \n/2017/sample-post | \n
Permalink | \n/2017/10/3/sample-post | \n
URL | \nAlias of the Permalink property | \n
Draft: no\nPage: no\nMenu: no\nPermalink: apple\nUrl: apple\nDate: 1/2/2020\nTags: Fruit, Pears\nThumbnail: _apple.png\nTitle: Apple\nSummary: Summary\n\n# Apple\n\nThis is the summary.\n
Draft 'Yes'\nPage 'Yes'\nMenu: 'Yes' or 'No'\nPermalink:\nUrl: \nDate:\nTags: \nThumbnail:\nSummary:\nTitle:
\nYou can create a page elsewhere in your blog's folder by adding Page: yes
to the file's metadata. If you'd like to create a page that isn't on your blog's menu, add Menu: no
as well.
Blot tries to create a thumbnail from the largest image in a blog post.
\nYou can specify a different thumbnail in the metadata at the top of a file. You can use a URL or a path to a file inside Blot’s folder:
\nThumbnail: /_Photos/Apple.jpg\n
Each post is assigned a permalink, or permanent URL. You can edit the general format of these permalinks on the dashboard. You can use any of the post's properties and any of Blot's date tokens. Here are a few examples:
The permalink format... | \nwill produce URLs like... | \n
---|---|
{{slug}} | \nexample.com/title-of-the-post | \n
blog/{{slug}} | \nexample.com/blog/title-of-the-post | \n
{{YYYY}}/{{slug}} | \nexample.com/2017/title-of-the-post | \n
{{YYYY}}/{{MM}}/{{D}}/{{slug}} | \nexample.com/2017/10/3/title-of-the-post | \n
{{slug}}-{{MM}}-{{YYYY}} | \nexample.com/title-of-the-post-10-2017 | \n
Blot charges an annual fee. You'll be billed when you first create a site, and each year after, as long as you keep your account open. You can cancel your subscription at any time.
\nYour payment information does not touch Blot's servers. Blot uses Stripe to process subscription payments. Read more about Stripe's security on their website.
\n\nYes, you can host as many sites as you like on Blot from the same account. Each site costs $20 a year. You can also create sites in different Dropbox accounts from the same Blot account.
Not at the moment. However, I plan to eventually add support Git, FTP, GitHub and Google Drive. Please contact me if there's a service you'd like me to support.
No, there’s no hard bandwidth or storage limit. However, if you use more than 1TB of bandwidth + storage combined per year, I will ask you to pay enough to meet the cost of hosting your site, or help you set up Blot on your own server.
No, not by default. Blot only has access to a single folder in your Dropbox. However, you can grant Blot full access to your folder. You should only do this if you want to move your site's folder elsewhere, or share it with other people who use Dropbox.
No, Dropbox's traffic limits do not apply to Blot. This is because Blot first transfers the contents of your folder to its server before delivering it to your readers.
Yes. I will email you one week before your subscription is renewed to give you time to cancel or update your billing information. I hate sneaky unwanted recurring bills as much as you do.
You can cancel your subscription on the account page. You can choose to disable your account immediately, or wait until the end of your current subscription period. You can also permanently delete your account.
Blot is a blogging platform. It creates a folder inside your Dropbox and publishes files you put inside. This means you can use your favorite text editor to write your blog.
\n\n\n\n\nThese files become blog posts when you put them somewhere in your site's folder:
Blot skips files and folders whose name starts with an underscore. Use this feature to embed an image in a blog post.
I've written scripts to generate a folder of files from sites hosted on Tumblr, Wordpress, Jekyll and Squarespace. If you contact me, I can run them on your site and send you the result.
Blot supports Markdown, a markup language designed for plain text files. You can add headings, lists, mathematical statements set in LaTeX, syntax highlighting to code snippets and much more.
Files inside a folder called 'Pages' are added to your site's menu instead of the list of blog posts. You can hide a page from your site's menu if you prefer.
Files inside a folder called 'Drafts' are not published to your site. Instead, Blot creates a preview file which you can open in your web browser.
Every file in your site's folder is public. For example, if you put
in your folder, your readers can download it at www.your-site.com/archive.zip
. You can use Blot as a static file server. Please note that paths and URLs on Blot are case-insensitive.
\nDate: February 28th, 1973\nTags: Literature, Schwarzgerät\n\n# Gravity's rainbow\n\nA screaming comes across the sky.\n\n\n \n
Blot generates all metadata for each post automatically based on the file's contents, name and location. This metadata includes a publish date, permalink and a summary. You can override Blot's metadata with your own.
Metadata must start on the file's first line and be separated from the rest of the post by at least one blank line.
You can also create your own custom metadata and use it on your site's template. View the full list of metadata.
Creating a template, or modifying an existing template will require an understanding of HTML, CSS and Mustache. Blot will be familiar to those who have worked with templates on other blogging platforms.
\nThe best way to learn how to use Blot's template is to clone an existing template and look at its source. Please don't hestitate to contact me if you have any questions.
\n\nTo modify an existing template, create a new template on the design page and specify the template you wish to clone.
If you append the query string ?json=true to a URL on Blot, you can retrieve the view used to render its template. I’d suggest using a browser extension like JSONView to make more sense of it.
When an HTTP request from one of your readers arrives at your site, Blot follows these steps to work out what to send in response. This process is known as routing.
Check your site's template to see if there is a route which matches the path. If there is, render the template and send the HTML as a response.
\nCheck your site's folder to see if there is a file which matches the path. Send the file as a response if it matches.
\nCheck your site's list of redirects to see if you have set one up for this path.
\nServe your template's error page if you have one, or Blot's error page if not.
\nYou can read the source code which defines these steps for a more precise idea of how things work.
Blot uses these variables to render Mustache templates.
The tag… | \nis replaced with… | \n
---|---|
{{title}} | \nyour site’s title | \n
{{#menu}}...{{/menu}} | \na list containing the links on your site’s menu | \n
{{avatar}} | \nthe URL to your site’s avatar | \n
{{siteURL}} | \nthe URL to your site’s homepage | \n
{{feedURL}} | \nthe URL to your site’s RSS feed | \n
{{cssURL}} | \nthe URL to your site’s CSS file | \n
{{scriptURL}} | \nthe URL to your site’s JS file | \n
{{sitemapURL}} | \nthe URL to your site’s sitemap | \n
{{cacheID}} | \na unix time stamp for the last change you made to your site | \n
{{timeZone}} | \nyour site’s timezone | \n
{{roundAvatar}} | \ntrue if you’ve indicated your avatar is round, false if not | \n
{{hideDates}} | \ntrue if you’ve chosen to hide the dates on your site, false if not | \n
Note that some of the variables, like {{{html}}}
have three handlebars rather than two. Mustache escapes variables with two handlebars.
The tag… | \nis replaced with… | \n
---|---|
{{id}} | \nNumber representing the entry's unique ID | \n
{{date}} | \nHuman readable publish date for the entry | \n
{{title}} | \nTitle of the entry | \n
{{{titleTag}}} | \nHTML of the entry's title | \n
{{{html}}} | \nHTML of the entry, including the title | \n
{{{body}}} | \nHTML of the entry, excluding the title | \n
{{{teaser}}} | \nHTML of the title and the first few items in the entry. You can specify the end of the teaser by inserting the special tag {{more}} into your blog post's file. Everything before {{more}} will be included in the teaser. | \n
{{{teaserBody}}} | \n{{{teaser}}} without the title. | \n
{{summary}} | \nText summary of the entry | \n
{{more}} | \nBoolean indicating whether teaser differs from html . This is useful for determining whether or not to show 'read more' links. | \n
{{tags}} | \nList of tags for the entry | \n
{{url}} | \nRelative URL to the entry | \n
{{menu}} | \n"true" if the entry is a page, "false" if not | \n
{{created}} | \nTimestamp | \n
{{updated}} | \nTimestamp | \n
Blot exposes some general purpose functions as Mustache lambdas. Note that you can pass another variable from the view to these functions.
The text inside the tag… | \nis replaced with… | \n
---|---|
{{#encodeURIComponent}}...{{/encodeURIComponent}} | \nThe same text, encoded appropriately for a URI component | \n
You can uses these variables to render lists of posts
The tag… | \nis replaced with… | \n
---|---|
{{#all_posts}}...{{/all_posts}} | \nEvery post ever published | \n
{{#recent_posts}}...{{/recent_posts}} | \n25 most recent posts on your site | \n
{{#archives}}...{{/archives}} | \nA list of years, months and the posts published on them | \n
{{#all_tags}}...{{/all_tags}} | \nthe URL to your site’s avatar | \n
You can specify custom entry metadata:
\nAuthor: Eric Blair\n\n# Homage to Catalonia\n\nIn the Lenin Barracks in Barcelona, the day before...\n\n\n \n
Use custom metadata in your template like this:
Posted by {{metadata.author}}\n
Metadata keys are case insensitive. I’d recommend using conditional blocks to prevent your layout breaking if you don’t consistently specify metadata:
{{#metadata.author}}\n Posted by {{metadata.author}}\n{{/metadata.author}}\n\n{{^metadata.author}}\n Posted by the editor\n{{/metadata.author}}\n
Blot generates four sizes of thumbnails:
Blot will not increase the size of smaller images. The JSON added to each entry looks something like this:
{\n ...\n thumbnail: {\n small: {url: "...", width: 160, height: 103},\n medium: {url: "...", width: 640, height: 411},\n large: {url: "...", width: 1060, height: 681},\n square: {url: "...", width: 160, height: 160 }\n },\n ...\n}\n
You can use them in your template like this:
{{#thumbnail.medium}}\n <img src="{{url}}" width="{{width}}" height="{{height}}">\n{{/thumbnail.medium}}\n
This is the blurb for this page.
\n\n\nLet's say you own the domain example.com
and would like to point it to your site. First, you must decide whether you would like to use the apex domain, which is just example.com
, or a subdomain like www.example.com
or blog.example.com
.
How to use the apex domain
\nGo to your domain's DNS page. Create an ALIAS
record which points to blot.im
. If you cannot create an ALIAS
record, I recommend using the www
subdomain then setting up a redirect from the apex domain to the subdomain.
Tell Blot your domain on the dashboard.
\nHow to use a subdomain
\nGo to your domain's DNS page. This is usually where you bought the domain. Create a CNAME
record for the subdomain you'd like to use and set its value to blot.im
.
Tell Blot your full domain, including the subdomain, on the dashboard.
\nYou can set up redirects for missing or moved pages on your blog. Your site’s 404 log will help you discover URLs which need redirects. You can use RegEx to match multiple routes. For example, this rule redirects URLs starting with /post
to /blog
:
\\/post\\/(.*) → /blog/$1\n
How to embed an image in a blog post
\nHere is the reference for Moment.js's date tokens. These are used in Blot's permalink format, and its templates.
\n | Token | \nOutput | \n
---|---|---|
Month | \nM | \n1 2 ... 11 12 | \n
\n | Mo | \n1st 2nd ... 11th 12th | \n
\n | MM | \n01 02 ... 11 12 | \n
\n | MMM | \nJan Feb ... Nov Dec | \n
\n | MMMM | \nJanuary February ... November December | \n
Quarter | \nQ | \n1 2 3 4 | \n
\n | Qo | \n1st 2nd 3rd 4th | \n
Day of Month | \nD | \n1 2 ... 30 31 | \n
\n | Do | \n1st 2nd ... 30th 31st | \n
\n | DD | \n01 02 ... 30 31 | \n
Day of Year | \nDDD | \n1 2 ... 364 365 | \n
\n | DDDo | \n1st 2nd ... 364th 365th | \n
\n | DDDD | \n001 002 ... 364 365 | \n
Day of Week | \nd | \n0 1 ... 5 6 | \n
\n | do | \n0th 1st ... 5th 6th | \n
\n | dd | \nSu Mo ... Fr Sa | \n
\n | ddd | \nSun Mon ... Fri Sat | \n
\n | dddd | \nSunday Monday ... Friday Saturday | \n
Day of Week (Locale) | \ne | \n0 1 ... 5 6 | \n
Day of Week (ISO) | \nE | \n1 2 ... 6 7 | \n
Week of Year | \nw | \n1 2 ... 52 53 | \n
\n | wo | \n1st 2nd ... 52nd 53rd | \n
\n | ww | \n01 02 ... 52 53 | \n
Week of Year (ISO) | \nW | \n1 2 ... 52 53 | \n
\n | Wo | \n1st 2nd ... 52nd 53rd | \n
\n | WW | \n01 02 ... 52 53 | \n
Year | \nYY | \n70 71 ... 29 30 | \n
\n | YYYY | \n1970 1971 ... 2029 2030 | \n
\n | Y | \n1970 1971 ... 9999 +10000 +10001\n \n Note: This complies with the ISO 8601 standard for dates past the year 9999\n | \n
Week Year | \ngg | \n70 71 ... 29 30 | \n
\n | gggg | \n1970 1971 ... 2029 2030 | \n
Week Year (ISO) | \nGG | \n70 71 ... 29 30 | \n
\n | GGGG | \n1970 1971 ... 2029 2030 | \n
AM/PM | \nA | \nAM PM | \n
\n | a | \nam pm | \n
Hour | \nH | \n0 1 ... 22 23 | \n
\n | HH | \n00 01 ... 22 23 | \n
\n | h | \n1 2 ... 11 12 | \n
\n | hh | \n01 02 ... 11 12 | \n
\n | k | \n1 2 ... 23 24 | \n
\n | kk | \n01 02 ... 23 24 | \n
Minute | \nm | \n0 1 ... 58 59 | \n
\n | mm | \n00 01 ... 58 59 | \n
Second | \ns | \n0 1 ... 58 59 | \n
\n | ss | \n00 01 ... 58 59 | \n
Fractional Second | \nS | \n0 1 ... 8 9 | \n
\n | SS | \n00 01 ... 98 99 | \n
\n | SSS | \n000 001 ... 998 999 | \n
\n | SSSS ... SSSSSSSSS | \n000[0..] 001[0..] ... 998[0..] 999[0..] | \n
Unix Timestamp | \nX | \n1360013296 | \n
Unix Millisecond Timestamp | \nx | \n1360013296123 | \n
Blot converts text files from Markdown. You can use markdown to make text bold, italicized, create lists, links and more. You can mix Markdown and HTML in the same file.
\n\n\nYou can also paste the HTML for a video embed directly into a blog post. Blot also automatically converts plain URLs to Youtube and Vimeo videos into video embeds. To embed a youtube video in your blog post just paste its URL like this:
https://www.youtube.com/watch?v=nkJA6SYwa94\n
You can specify footnotes using this syntax:
A line with a footnote.[^1] Another line.[^2]\n\n[^1]: And the note goes here.\n[^2]: And the second goes here too.\n
I wrote a Markdown extension for Blot which provides basic layout shortcuts. The features are as follows:
The tag… | \nshould make its contents... | \nby applying this CSS class… | \n
---|---|---|
{<<} | \nextend into the left margin | \nwide left | \n
{>>} | \nextend into the right margin | \nwide right | \n
{<>} | \nextend into both margins | \nwide | \n
{>} | \nfloat right inside the page | \nright inside | \n
{<} | \nfloat left inside the page | \nleft inside | \n
{|<} | \nhang in the right margin | \nright margin | \n
{>|} | \nhang in the left margin | \nleft margin | \n
{||} | \nsit inside a 1/2 width column | \ntwo column | \n
{|||} | \nsit inside a 1/3 width column | \nthree column | \n
{||||} | \nsit inside a 1/4 width column | \nfour column | \n
You can including multiple lines inside the same layout tag by indenting them:
{<<} ## Subtitle which extends into left margin\n A paragraph which will also extend into the left margin.\n\n{>>} ## Subtitle which extends into right margin\n A paragraph which will also extend into the right margin.\n
Your blog's template controls how the layout HTML is styled. Most Blot templates come with a variation on layout.css which provides the above features as described.
To create italics, use a single asterix (*) on either side of the text:
*This text will be italic.*
Surrounding text with two asterisks makes text bold:
**This text will be bold.**
Both * or _ symbols work to make text bold or italic. This way you can combine bold and italic in the same sentence. For example:
**Everyone _must_ listen.**
Put a double tilde (~) on either side of the text you want to strikethrough:
~~Strike out mistakes~~
Make a bulleted list by preceding list items with a single asterix (*) or a hyphen (-). You need a space between the asterix and the text.
- Round\n- Shell\n- Projectile
\nCreate a numbered list by preceding list items with a number.
1. Eins\n2. Deux\n3. Tres
\nCreate a text link by wrapping the linked text in brackets [ ], and then wrapping the link in parenthesis ( ). For example:
[Wikipedia](https://wikipedia.org)
# Largest heading\n## Subheading\n### Section heading\n
Blot will convert equations set in LaTeX. Check out this useful guide. To use this, wrap your LaTeX in two dollar signs ($$) like this:
$$ f(x) = 2x^2 + 2/3 $$
\n $$ f(x) = 2x^2 + 2/3 $$
Here's what the markdown looks like, note the ‘!’ before the tag.
![Alt text](http://example.com/image.jpg "Title")\n
Yes, first create a folder whose name starts with an underscore, e.g. '_images'. Blot will not turn any of the files inside into blog posts, but they will be public. Then put the image inside then embed the image like this:
![Image description](/_images/image.jpg)\n
Blot resolves relative paths based on the location of the source file, not its permalink. File paths are case-insenitive. For example, let's say your blog has this folder structure:
These images all resolve correctly in fruit.txt
, no matter its resulting URL.
![Apple](_apple.png)\n![Apple](/posts/_apple.png)\n![Peach](../_images/peach.png)\n
Indent code with four spaces:
var foo = “bar”;\n
You can also wrap code.snippets
with three backticks `
. This is useful for inserting code snippets inside a paragraph.
If you have enabled the syntax highlighting app, Blot will process the snippet using highlight.js. Every Blot template comes with its own syntax highlighting theme. If you are designing a custom blog template and want to use syntax highlighting, please add a theme to your blog’s CSS file.
Key | \nValue | \n
---|---|
Date | \nDefaults to this file's creation date. Set the post's publish date using one of the supported formats. | \n
Title | \nDefaults to the first title in this post or its file name. | \n
Tags | \nEmpty by default. Seperate your tags with a comma. | \n
Permalink | \nDefaults to a URL-friendly version of the post's title. You can specify one here or change your site's default permalinks on the dashboard. | \n
Summary | \nDefaults to the first sentence of the first paragraph in the file. | \n
Teaser | \nLike summary but a little longer. Defaults to the first few paragraphs. | \n
Thumbnail | \nGenerated from the largest image in the post. You can specify a path or URL to an image. | \n
Draft | \nDefaults to 'No'. Anything truthy (e.g. 'Yes') will turn the post into a draft. | \n
Page | \nDefaults to 'No'. Anything truthy (e.g. 'Yes') will turn the post into a page and add it to your blog's menu. | \n
Menu | \nDefaults to 'Yes' if the file is a page. Anything falsy (e.g. 'No') will hide the page from your site's menu. | \n
You can create your own metadata and access it in your blog's template.
\nHere is the full list of Blot's native metadata:
\nMetadata properties | \nExample | \n
---|---|
Draft | \n/sample-post | \n
Page | \n/blog/sample-post | \n
Menu | \n/2017/sample-post | \n
Permalink | \n/2017/10/3/sample-post | \n
URL | \nAlias of the Permalink property | \n
Draft: no\nPage: no\nMenu: no\nPermalink: apple\nUrl: apple\nDate: 1/2/2020\nTags: Fruit, Pears\nThumbnail: _apple.png\nTitle: Apple\nSummary: Summary\n\n# Apple\n\nThis is the summary.\n
Draft 'Yes'\nPage 'Yes'\nMenu: 'Yes' or 'No'\nPermalink:\nUrl: \nDate:\nTags: \nThumbnail:\nSummary:\nTitle:
\nYou can create a page elsewhere in your blog's folder by adding Page: yes
to the file's metadata. If you'd like to create a page that isn't on your blog's menu, add Menu: no
as well.
Blot tries to create a thumbnail from the largest image in a blog post.
\nYou can specify a different thumbnail in the metadata at the top of a file. You can use a URL or a path to a file inside Blot’s folder:
\nThumbnail: /_Photos/Apple.jpg\n
Each post is assigned a permalink, or permanent URL. You can edit the general format of these permalinks on the dashboard. You can use any of the post's properties and any of Blot's date tokens. Here are a few examples:
The permalink format... | \nwill produce URLs like... | \n
---|---|
{{slug}} | \nexample.com/title-of-the-post | \n
blog/{{slug}} | \nexample.com/blog/title-of-the-post | \n
{{YYYY}}/{{slug}} | \nexample.com/2017/title-of-the-post | \n
{{YYYY}}/{{MM}}/{{D}}/{{slug}} | \nexample.com/2017/10/3/title-of-the-post | \n
{{slug}}-{{MM}}-{{YYYY}} | \nexample.com/title-of-the-post-10-2017 | \n
Blot charges an annual fee. You'll be billed when you first create a site, and each year after, as long as you keep your account open. You can cancel your subscription at any time.
\nYour payment information does not touch Blot's servers. Blot uses Stripe to process subscription payments. Read more about Stripe's security on their website.
\n\nYes, you can host as many sites as you like on Blot from the same account. Each site costs $20 a year. You can also create sites in different Dropbox accounts from the same Blot account.
Not at the moment. However, I plan to eventually add support Git, FTP, GitHub and Google Drive. Please contact me if there's a service you'd like me to support.
No, there’s no hard bandwidth or storage limit. However, if you use more than 1TB of bandwidth + storage combined per year, I will ask you to pay enough to meet the cost of hosting your site, or help you set up Blot on your own server.
No, not by default. Blot only has access to a single folder in your Dropbox. However, you can grant Blot full access to your folder. You should only do this if you want to move your site's folder elsewhere, or share it with other people who use Dropbox.
No, Dropbox's traffic limits do not apply to Blot. This is because Blot first transfers the contents of your folder to its server before delivering it to your readers.
Yes. I will email you one week before your subscription is renewed to give you time to cancel or update your billing information. I hate sneaky unwanted recurring bills as much as you do.
You can cancel your subscription on the account page. You can choose to disable your account immediately, or wait until the end of your current subscription period. You can also permanently delete your account.
Blot is a blogging platform. It creates a folder inside your Dropbox and publishes files you put inside. This means you can use your favorite text editor to write your blog.
\n\n\n\n\nThese files become blog posts when you put them somewhere in your site's folder:
Blot skips files and folders whose name starts with an underscore. Use this feature to embed an image in a blog post.
I've written scripts to generate a folder of files from sites hosted on Tumblr, Wordpress, Jekyll and Squarespace. If you contact me, I can run them on your site and send you the result.
Blot supports Markdown, a markup language designed for plain text files. You can add headings, lists, mathematical statements set in LaTeX, syntax highlighting to code snippets and much more.
Files inside a folder called 'Pages' are added to your site's menu instead of the list of blog posts. You can hide a page from your site's menu if you prefer.
Files inside a folder called 'Drafts' are not published to your site. Instead, Blot creates a preview file which you can open in your web browser.
Every file in your site's folder is public. For example, if you put
in your folder, your readers can download it at www.your-site.com/archive.zip
. You can use Blot as a static file server. Please note that paths and URLs on Blot are case-insensitive.
\nDate: February 28th, 1973\nTags: Literature, Schwarzgerät\n\n# Gravity's rainbow\n\nA screaming comes across the sky.\n\n\n \n
Blot generates all metadata for each post automatically based on the file's contents, name and location. This metadata includes a publish date, permalink and a summary. You can override Blot's metadata with your own.
Metadata must start on the file's first line and be separated from the rest of the post by at least one blank line.
You can also create your own custom metadata and use it on your site's template. View the full list of metadata.
Blot is a blogging platform. It creates a folder inside your Dropbox and publishes files you put inside. This means you can use your favorite text editor to write your blog.
\n\n\n\n\nThese files become blog posts when you put them somewhere in your site's folder:
Blot skips files and folders whose name starts with an underscore. Use this feature to embed an image in a blog post.
I've written scripts to generate a folder of files from sites hosted on Tumblr, Wordpress, Jekyll and Squarespace. If you contact me, I can run them on your site and send you the result.
Blot supports Markdown, a markup language designed for plain text files. You can add headings, lists, mathematical statements set in LaTeX, syntax highlighting to code snippets and much more.
Files inside a folder called 'Pages' are added to your site's menu instead of the list of blog posts. You can hide a page from your site's menu if you prefer.
Files inside a folder called 'Drafts' are not published to your site. Instead, Blot creates a preview file which you can open in your web browser.
Every file in your site's folder is public. For example, if you put
in your folder, your readers can download it at www.your-site.com/archive.zip
. You can use Blot as a static file server. Please note that paths and URLs on Blot are case-insensitive.
\nDate: February 28th, 1973\nTags: Literature, Schwarzgerät\n\n# Gravity's rainbow\n\nA screaming comes across the sky.\n\n\n \n
Blot generates all metadata for each post automatically based on the file's contents, name and location. This metadata includes a publish date, permalink and a summary. You can override Blot's metadata with your own.
Metadata must start on the file's first line and be separated from the rest of the post by at least one blank line.
You can also create your own custom metadata and use it on your site's template. View the full list of metadata.
Creating a template, or modifying an existing template will require an understanding of HTML, CSS and Mustache. Blot will be familiar to those who have worked with templates on other blogging platforms.
\nThe best way to learn how to use Blot's template is to clone an existing template and look at its source. Please don't hestitate to contact me if you have any questions.
\n\nTo modify an existing template, create a new template on the design page and specify the template you wish to clone.
If you append the query string ?json=true to a URL on Blot, you can retrieve the view used to render its template. I’d suggest using a browser extension like JSONView to make more sense of it.
When an HTTP request from one of your readers arrives at your site, Blot follows these steps to work out what to send in response. This process is known as routing.
Check your site's template to see if there is a route which matches the path. If there is, render the template and send the HTML as a response.
\nCheck your site's folder to see if there is a file which matches the path. Send the file as a response if it matches.
\nCheck your site's list of redirects to see if you have set one up for this path.
\nServe your template's error page if you have one, or Blot's error page if not.
\nYou can read the source code which defines these steps for a more precise idea of how things work.
Blot uses these variables to render Mustache templates.
The tag… | \nis replaced with… | \n
---|---|
{{title}} | \nyour site’s title | \n
{{#menu}}...{{/menu}} | \na list containing the links on your site’s menu | \n
{{avatar}} | \nthe URL to your site’s avatar | \n
{{siteURL}} | \nthe URL to your site’s homepage | \n
{{feedURL}} | \nthe URL to your site’s RSS feed | \n
{{cssURL}} | \nthe URL to your site’s CSS file | \n
{{scriptURL}} | \nthe URL to your site’s JS file | \n
{{sitemapURL}} | \nthe URL to your site’s sitemap | \n
{{cacheID}} | \na unix time stamp for the last change you made to your site | \n
{{timeZone}} | \nyour site’s timezone | \n
{{roundAvatar}} | \ntrue if you’ve indicated your avatar is round, false if not | \n
{{hideDates}} | \ntrue if you’ve chosen to hide the dates on your site, false if not | \n
Note that some of the variables, like {{{html}}}
have three handlebars rather than two. Mustache escapes variables with two handlebars.
The tag… | \nis replaced with… | \n
---|---|
{{id}} | \nNumber representing the entry's unique ID | \n
{{date}} | \nHuman readable publish date for the entry | \n
{{title}} | \nTitle of the entry | \n
{{{titleTag}}} | \nHTML of the entry's title | \n
{{{html}}} | \nHTML of the entry, including the title | \n
{{{body}}} | \nHTML of the entry, excluding the title | \n
{{{teaser}}} | \nHTML of the title and the first few items in the entry. You can specify the end of the teaser by inserting the special tag {{more}} into your blog post's file. Everything before {{more}} will be included in the teaser. | \n
{{{teaserBody}}} | \n{{{teaser}}} without the title. | \n
{{summary}} | \nText summary of the entry | \n
{{more}} | \nBoolean indicating whether teaser differs from html . This is useful for determining whether or not to show 'read more' links. | \n
{{tags}} | \nList of tags for the entry | \n
{{url}} | \nRelative URL to the entry | \n
{{menu}} | \n"true" if the entry is a page, "false" if not | \n
{{created}} | \nTimestamp | \n
{{updated}} | \nTimestamp | \n
Blot exposes some general purpose functions as Mustache lambdas. Note that you can pass another variable from the view to these functions.
The text inside the tag… | \nis replaced with… | \n
---|---|
{{#encodeURIComponent}}...{{/encodeURIComponent}} | \nThe same text, encoded appropriately for a URI component | \n
You can uses these variables to render lists of posts
The tag… | \nis replaced with… | \n
---|---|
{{#all_posts}}...{{/all_posts}} | \nEvery post ever published | \n
{{#recent_posts}}...{{/recent_posts}} | \n25 most recent posts on your site | \n
{{#archives}}...{{/archives}} | \nA list of years, months and the posts published on them | \n
{{#all_tags}}...{{/all_tags}} | \nthe URL to your site’s avatar | \n
You can specify custom entry metadata:
\nAuthor: Eric Blair\n\n# Homage to Catalonia\n\nIn the Lenin Barracks in Barcelona, the day before...\n\n\n \n
Use custom metadata in your template like this:
Posted by {{metadata.author}}\n
Metadata keys are case insensitive. I’d recommend using conditional blocks to prevent your layout breaking if you don’t consistently specify metadata:
{{#metadata.author}}\n Posted by {{metadata.author}}\n{{/metadata.author}}\n\n{{^metadata.author}}\n Posted by the editor\n{{/metadata.author}}\n
Blot generates four sizes of thumbnails:
Blot will not increase the size of smaller images. The JSON added to each entry looks something like this:
{\n ...\n thumbnail: {\n small: {url: "...", width: 160, height: 103},\n medium: {url: "...", width: 640, height: 411},\n large: {url: "...", width: 1060, height: 681},\n square: {url: "...", width: 160, height: 160 }\n },\n ...\n}\n
You can use them in your template like this:
{{#thumbnail.medium}}\n <img src="{{url}}" width="{{width}}" height="{{height}}">\n{{/thumbnail.medium}}\n
Learn how to configure your site and access some of Blot's more advanced features.
\n\n\nLet's say you own the domain example.com
and would like to point it to your site. First, you must decide whether you would like to use the apex domain, which is just example.com
, or a subdomain like www.example.com
or blog.example.com
.
How to use the apex domain
\nGo to your domain's DNS page. Create an ALIAS
record which points to blot.im
. If you cannot create an ALIAS
record, I recommend using the www
subdomain then setting up a redirect from the apex domain to the subdomain.
Tell Blot your domain on the dashboard.
\nHow to use a subdomain
\nGo to your domain's DNS page. This is usually where you bought the domain. Create a CNAME
record for the subdomain you'd like to use and set its value to blot.im
.
Tell Blot your full domain, including the subdomain, on the dashboard.
\nYou can set up redirects for missing or moved pages on your blog. Your site’s 404 log will help you discover URLs which need redirects. You can use RegEx to match multiple routes. For example, this rule redirects URLs starting with /post
to /blog
:
\\/post\\/(.*) → /blog/$1\n
How to embed an image in a blog post
\nHere is the reference for Moment.js's date tokens. These are used in Blot's permalink format, and its templates.
\n | Token | \nOutput | \n
---|---|---|
Month | \nM | \n1 2 ... 11 12 | \n
\n | Mo | \n1st 2nd ... 11th 12th | \n
\n | MM | \n01 02 ... 11 12 | \n
\n | MMM | \nJan Feb ... Nov Dec | \n
\n | MMMM | \nJanuary February ... November December | \n
Quarter | \nQ | \n1 2 3 4 | \n
\n | Qo | \n1st 2nd 3rd 4th | \n
Day of Month | \nD | \n1 2 ... 30 31 | \n
\n | Do | \n1st 2nd ... 30th 31st | \n
\n | DD | \n01 02 ... 30 31 | \n
Day of Year | \nDDD | \n1 2 ... 364 365 | \n
\n | DDDo | \n1st 2nd ... 364th 365th | \n
\n | DDDD | \n001 002 ... 364 365 | \n
Day of Week | \nd | \n0 1 ... 5 6 | \n
\n | do | \n0th 1st ... 5th 6th | \n
\n | dd | \nSu Mo ... Fr Sa | \n
\n | ddd | \nSun Mon ... Fri Sat | \n
\n | dddd | \nSunday Monday ... Friday Saturday | \n
Day of Week (Locale) | \ne | \n0 1 ... 5 6 | \n
Day of Week (ISO) | \nE | \n1 2 ... 6 7 | \n
Week of Year | \nw | \n1 2 ... 52 53 | \n
\n | wo | \n1st 2nd ... 52nd 53rd | \n
\n | ww | \n01 02 ... 52 53 | \n
Week of Year (ISO) | \nW | \n1 2 ... 52 53 | \n
\n | Wo | \n1st 2nd ... 52nd 53rd | \n
\n | WW | \n01 02 ... 52 53 | \n
Year | \nYY | \n70 71 ... 29 30 | \n
\n | YYYY | \n1970 1971 ... 2029 2030 | \n
\n | Y | \n1970 1971 ... 9999 +10000 +10001\n \n Note: This complies with the ISO 8601 standard for dates past the year 9999\n | \n
Week Year | \ngg | \n70 71 ... 29 30 | \n
\n | gggg | \n1970 1971 ... 2029 2030 | \n
Week Year (ISO) | \nGG | \n70 71 ... 29 30 | \n
\n | GGGG | \n1970 1971 ... 2029 2030 | \n
AM/PM | \nA | \nAM PM | \n
\n | a | \nam pm | \n
Hour | \nH | \n0 1 ... 22 23 | \n
\n | HH | \n00 01 ... 22 23 | \n
\n | h | \n1 2 ... 11 12 | \n
\n | hh | \n01 02 ... 11 12 | \n
\n | k | \n1 2 ... 23 24 | \n
\n | kk | \n01 02 ... 23 24 | \n
Minute | \nm | \n0 1 ... 58 59 | \n
\n | mm | \n00 01 ... 58 59 | \n
Second | \ns | \n0 1 ... 58 59 | \n
\n | ss | \n00 01 ... 58 59 | \n
Fractional Second | \nS | \n0 1 ... 8 9 | \n
\n | SS | \n00 01 ... 98 99 | \n
\n | SSS | \n000 001 ... 998 999 | \n
\n | SSSS ... SSSSSSSSS | \n000[0..] 001[0..] ... 998[0..] 999[0..] | \n
Unix Timestamp | \nX | \n1360013296 | \n
Unix Millisecond Timestamp | \nx | \n1360013296123 | \n
Blot converts text files from Markdown. You can use markdown to make text bold, italicized, create lists, links and more. You can mix Markdown and HTML in the same file.
\n\n\nYou can also paste the HTML for a video embed directly into a blog post. Blot also automatically converts plain URLs to Youtube and Vimeo videos into video embeds. To embed a youtube video in your blog post just paste its URL like this:
https://www.youtube.com/watch?v=nkJA6SYwa94\n
You can specify footnotes using this syntax:
A line with a footnote.[^1] Another line.[^2]\n\n[^1]: And the note goes here.\n[^2]: And the second goes here too.\n
I wrote a Markdown extension for Blot which provides basic layout shortcuts. The features are as follows:
The tag… | \nshould make its contents... | \nby applying this CSS class… | \n
---|---|---|
{<<} | \nextend into the left margin | \nwide left | \n
{>>} | \nextend into the right margin | \nwide right | \n
{<>} | \nextend into both margins | \nwide | \n
{>} | \nfloat right inside the page | \nright inside | \n
{<} | \nfloat left inside the page | \nleft inside | \n
{|<} | \nhang in the right margin | \nright margin | \n
{>|} | \nhang in the left margin | \nleft margin | \n
{||} | \nsit inside a 1/2 width column | \ntwo column | \n
{|||} | \nsit inside a 1/3 width column | \nthree column | \n
{||||} | \nsit inside a 1/4 width column | \nfour column | \n
You can including multiple lines inside the same layout tag by indenting them:
{<<} ## Subtitle which extends into left margin\n A paragraph which will also extend into the left margin.\n\n{>>} ## Subtitle which extends into right margin\n A paragraph which will also extend into the right margin.\n
Your blog's template controls how the layout HTML is styled. Most Blot templates come with a variation on layout.css which provides the above features as described.
To create italics, use a single asterix (*) on either side of the text:
*This text will be italic.*
Surrounding text with two asterisks makes text bold:
**This text will be bold.**
Both * or _ symbols work to make text bold or italic. This way you can combine bold and italic in the same sentence. For example:
**Everyone _must_ listen.**
Put a double tilde (~) on either side of the text you want to strikethrough:
~~Strike out mistakes~~
Make a bulleted list by preceding list items with a single asterix (*) or a hyphen (-). You need a space between the asterix and the text.
- Round\n- Shell\n- Projectile
\nCreate a numbered list by preceding list items with a number.
1. Eins\n2. Deux\n3. Tres
\nCreate a text link by wrapping the linked text in brackets [ ], and then wrapping the link in parenthesis ( ). For example:
[Wikipedia](https://wikipedia.org)
# Largest heading\n## Subheading\n### Section heading\n
Blot will convert equations set in LaTeX. Check out this useful guide. To use this, wrap your LaTeX in two dollar signs ($$) like this:
$$ f(x) = 2x^2 + 2/3 $$
\n $$ f(x) = 2x^2 + 2/3 $$
Here's what the markdown looks like, note the ‘!’ before the tag.
![Alt text](http://example.com/image.jpg "Title")\n
Yes, first create a folder whose name starts with an underscore, e.g. '_images'. Blot will not turn any of the files inside into blog posts, but they will be public. Then put the image inside then embed the image like this:
![Image description](/_images/image.jpg)\n
Blot resolves relative paths based on the location of the source file, not its permalink. File paths are case-insenitive. For example, let's say your blog has this folder structure:
These images all resolve correctly in fruit.txt
, no matter its resulting URL.
![Apple](_apple.png)\n![Apple](/posts/_apple.png)\n![Peach](../_images/peach.png)\n
Indent code with four spaces:
var foo = “bar”;\n
You can also wrap code.snippets
with three backticks `
. This is useful for inserting code snippets inside a paragraph.
If you have enabled the syntax highlighting app, Blot will process the snippet using highlight.js. Every Blot template comes with its own syntax highlighting theme. If you are designing a custom blog template and want to use syntax highlighting, please add a theme to your blog’s CSS file.
Key | \nValue | \n
---|---|
Date | \nDefaults to this file's creation date. Set the post's publish date using one of the supported formats. | \n
Title | \nDefaults to the first title in this post or its file name. | \n
Tags | \nEmpty by default. Seperate your tags with a comma. | \n
Permalink | \nDefaults to a URL-friendly version of the post's title. You can specify one here or change your site's default permalinks on the dashboard. | \n
Summary | \nDefaults to the first sentence of the first paragraph in the file. | \n
Teaser | \nLike summary but a little longer. Defaults to the first few paragraphs. | \n
Thumbnail | \nGenerated from the largest image in the post. You can specify a path or URL to an image. | \n
Draft | \nDefaults to 'No'. Anything truthy (e.g. 'Yes') will turn the post into a draft. | \n
Page | \nDefaults to 'No'. Anything truthy (e.g. 'Yes') will turn the post into a page and add it to your blog's menu. | \n
Menu | \nDefaults to 'Yes' if the file is a page. Anything falsy (e.g. 'No') will hide the page from your site's menu. | \n
You can create your own metadata and access it in your blog's template.
\nHere is the full list of Blot's native metadata:
\nMetadata properties | \nExample | \n
---|---|
Draft | \n/sample-post | \n
Page | \n/blog/sample-post | \n
Menu | \n/2017/sample-post | \n
Permalink | \n/2017/10/3/sample-post | \n
URL | \nAlias of the Permalink property | \n
Draft: no\nPage: no\nMenu: no\nPermalink: apple\nUrl: apple\nDate: 1/2/2020\nTags: Fruit, Pears\nThumbnail: _apple.png\nTitle: Apple\nSummary: Summary\n\n# Apple\n\nThis is the summary.\n
Draft 'Yes'\nPage 'Yes'\nMenu: 'Yes' or 'No'\nPermalink:\nUrl: \nDate:\nTags: \nThumbnail:\nSummary:\nTitle:
\nYou can create a page elsewhere in your blog's folder by adding Page: yes
to the file's metadata. If you'd like to create a page that isn't on your blog's menu, add Menu: no
as well.
Blot tries to create a thumbnail from the largest image in a blog post.
\nYou can specify a different thumbnail in the metadata at the top of a file. You can use a URL or a path to a file inside Blot’s folder:
\nThumbnail: /_Photos/Apple.jpg\n
Each post is assigned a permalink, or permanent URL. You can edit the general format of these permalinks on the dashboard. You can use any of the post's properties and any of Blot's date tokens. Here are a few examples:
The permalink format... | \nwill produce URLs like... | \n
---|---|
{{slug}} | \nexample.com/title-of-the-post | \n
blog/{{slug}} | \nexample.com/blog/title-of-the-post | \n
{{YYYY}}/{{slug}} | \nexample.com/2017/title-of-the-post | \n
{{YYYY}}/{{MM}}/{{D}}/{{slug}} | \nexample.com/2017/10/3/title-of-the-post | \n
{{slug}}-{{MM}}-{{YYYY}} | \nexample.com/title-of-the-post-10-2017 | \n
Blot charges an annual fee. You'll be billed when you first create a site, and each year after, as long as you keep your account open. You can cancel your subscription at any time.
\nYour payment information does not touch Blot's servers. Blot uses Stripe to process subscription payments. Read more about Stripe's security on their website.
\n\nYes, you can host as many sites as you like on Blot from the same account. Each site costs $20 a year. You can also create sites in different Dropbox accounts from the same Blot account.
Not at the moment. However, I plan to eventually add support Git, FTP, GitHub and Google Drive. Please contact me if there's a service you'd like me to support.
No, there’s no hard bandwidth or storage limit. However, if you use more than 1TB of bandwidth + storage combined per year, I will ask you to pay enough to meet the cost of hosting your site, or help you set up Blot on your own server.
No, not by default. Blot only has access to a single folder in your Dropbox. However, you can grant Blot full access to your folder. You should only do this if you want to move your site's folder elsewhere, or share it with other people who use Dropbox.
No, Dropbox's traffic limits do not apply to Blot. This is because Blot first transfers the contents of your folder to its server before delivering it to your readers.
Yes. I will email you one week before your subscription is renewed to give you time to cancel or update your billing information. I hate sneaky unwanted recurring bills as much as you do.
You can cancel your subscription on the account page. You can choose to disable your account immediately, or wait until the end of your current subscription period. You can also permanently delete your account.
Blot is a blogging platform. It creates a folder inside your Dropbox and publishes files you put inside. This means you can use your favorite text editor to write your blog.
\n\n\n\n\nThese files become blog posts when you put them somewhere in your site's folder:
Blot skips files and folders whose name starts with an underscore. Use this feature to embed an image in a blog post.
I've written scripts to generate a folder of files from sites hosted on Tumblr, Wordpress, Jekyll and Squarespace. If you contact me, I can run them on your site and send you the result.
Blot supports Markdown, a markup language designed for plain text files. You can add headings, lists, mathematical statements set in LaTeX, syntax highlighting to code snippets and much more.
Files inside a folder called 'Pages' are added to your site's menu instead of the list of blog posts. You can hide a page from your site's menu if you prefer.
Files inside a folder called 'Drafts' are not published to your site. Instead, Blot creates a preview file which you can open in your web browser.
Every file in your site's folder is public. For example, if you put
in your folder, your readers can download it at www.your-site.com/archive.zip
. You can use Blot as a static file server. Please note that paths and URLs on Blot are case-insensitive.
\nDate: February 28th, 1973\nTags: Literature, Schwarzgerät\n\n# Gravity's rainbow\n\nA screaming comes across the sky.\n\n\n \n
Blot generates all metadata for each post automatically based on the file's contents, name and location. This metadata includes a publish date, permalink and a summary. You can override Blot's metadata with your own.
Metadata must start on the file's first line and be separated from the rest of the post by at least one blank line.
You can also create your own custom metadata and use it on your site's template. View the full list of metadata.
Creating a template, or modifying an existing template will require an understanding of HTML, CSS and Mustache. Blot will be familiar to those who have worked with templates on other blogging platforms.
\nThe best way to learn how to use Blot's template is to clone an existing template and look at its source. Please don't hestitate to contact me if you have any questions.
\n\nTo modify an existing template, create a new template on the design page and specify the template you wish to clone.
If you append the query string ?json=true to a URL on Blot, you can retrieve the view used to render its template. I’d suggest using a browser extension like JSONView to make more sense of it.
When an HTTP request from one of your readers arrives at your site, Blot follows these steps to work out what to send in response. This process is known as routing.
Check your site's template to see if there is a route which matches the path. If there is, render the template and send the HTML as a response.
\nCheck your site's folder to see if there is a file which matches the path. Send the file as a response if it matches.
\nCheck your site's list of redirects to see if you have set one up for this path.
\nServe your template's error page if you have one, or Blot's error page if not.
\nYou can read the source code which defines these steps for a more precise idea of how things work.
Blot uses these variables to render Mustache templates.
The tag… | \nis replaced with… | \n
---|---|
{{title}} | \nyour site’s title | \n
{{#menu}}...{{/menu}} | \na list containing the links on your site’s menu | \n
{{avatar}} | \nthe URL to your site’s avatar | \n
{{siteURL}} | \nthe URL to your site’s homepage | \n
{{feedURL}} | \nthe URL to your site’s RSS feed | \n
{{cssURL}} | \nthe URL to your site’s CSS file | \n
{{scriptURL}} | \nthe URL to your site’s JS file | \n
{{sitemapURL}} | \nthe URL to your site’s sitemap | \n
{{cacheID}} | \na unix time stamp for the last change you made to your site | \n
{{timeZone}} | \nyour site’s timezone | \n
{{roundAvatar}} | \ntrue if you’ve indicated your avatar is round, false if not | \n
{{hideDates}} | \ntrue if you’ve chosen to hide the dates on your site, false if not | \n
Note that some of the variables, like {{{html}}}
have three handlebars rather than two. Mustache escapes variables with two handlebars.
The tag… | \nis replaced with… | \n
---|---|
{{id}} | \nNumber representing the entry's unique ID | \n
{{date}} | \nHuman readable publish date for the entry | \n
{{title}} | \nTitle of the entry | \n
{{{titleTag}}} | \nHTML of the entry's title | \n
{{{html}}} | \nHTML of the entry, including the title | \n
{{{body}}} | \nHTML of the entry, excluding the title | \n
{{{teaser}}} | \nHTML of the title and the first few items in the entry. You can specify the end of the teaser by inserting the special tag {{more}} into your blog post's file. Everything before {{more}} will be included in the teaser. | \n
{{{teaserBody}}} | \n{{{teaser}}} without the title. | \n
{{summary}} | \nText summary of the entry | \n
{{more}} | \nBoolean indicating whether teaser differs from html . This is useful for determining whether or not to show 'read more' links. | \n
{{tags}} | \nList of tags for the entry | \n
{{url}} | \nRelative URL to the entry | \n
{{menu}} | \n"true" if the entry is a page, "false" if not | \n
{{created}} | \nTimestamp | \n
{{updated}} | \nTimestamp | \n
Blot exposes some general purpose functions as Mustache lambdas. Note that you can pass another variable from the view to these functions.
The text inside the tag… | \nis replaced with… | \n
---|---|
{{#encodeURIComponent}}...{{/encodeURIComponent}} | \nThe same text, encoded appropriately for a URI component | \n
You can uses these variables to render lists of posts
The tag… | \nis replaced with… | \n
---|---|
{{#all_posts}}...{{/all_posts}} | \nEvery post ever published | \n
{{#recent_posts}}...{{/recent_posts}} | \n25 most recent posts on your site | \n
{{#archives}}...{{/archives}} | \nA list of years, months and the posts published on them | \n
{{#all_tags}}...{{/all_tags}} | \nthe URL to your site’s avatar | \n
You can specify custom entry metadata:
\nAuthor: Eric Blair\n\n# Homage to Catalonia\n\nIn the Lenin Barracks in Barcelona, the day before...\n\n\n \n
Use custom metadata in your template like this:
Posted by {{metadata.author}}\n
Metadata keys are case insensitive. I’d recommend using conditional blocks to prevent your layout breaking if you don’t consistently specify metadata:
{{#metadata.author}}\n Posted by {{metadata.author}}\n{{/metadata.author}}\n\n{{^metadata.author}}\n Posted by the editor\n{{/metadata.author}}\n
Blot generates four sizes of thumbnails:
Blot will not increase the size of smaller images. The JSON added to each entry looks something like this:
{\n ...\n thumbnail: {\n small: {url: "...", width: 160, height: 103},\n medium: {url: "...", width: 640, height: 411},\n large: {url: "...", width: 1060, height: 681},\n square: {url: "...", width: 160, height: 160 }\n },\n ...\n}\n
You can use them in your template like this:
{{#thumbnail.medium}}\n <img src="{{url}}" width="{{width}}" height="{{height}}">\n{{/thumbnail.medium}}\n
Learn how to configure your site and access some of Blot's more advanced features.
\n\n\nLet's say you own the domain example.com
and would like to point it to your site. First, you must decide whether you would like to use the apex domain, which is just example.com
, or a subdomain like www.example.com
or blog.example.com
.
How to use the apex domain
\nGo to your domain's DNS page. Create an ALIAS
record which points to blot.im
. If you cannot create an ALIAS
record, I recommend using the www
subdomain then setting up a redirect from the apex domain to the subdomain.
Tell Blot your domain on the dashboard.
\nHow to use a subdomain
\nGo to your domain's DNS page. This is usually where you bought the domain. Create a CNAME
record for the subdomain you'd like to use and set its value to blot.im
.
Tell Blot your full domain, including the subdomain, on the dashboard.
\nYou can set up redirects for missing or moved pages on your blog. Your site’s 404 log will help you discover URLs which need redirects. You can use RegEx to match multiple routes. For example, this rule redirects URLs starting with /post
to /blog
:
\\/post\\/(.*) → /blog/$1\n
How to embed an image in a blog post
\nHere is the reference for Moment.js's date tokens. These are used in Blot's permalink format, and its templates.
\n | Token | \nOutput | \n
---|---|---|
Month | \nM | \n1 2 ... 11 12 | \n
\n | Mo | \n1st 2nd ... 11th 12th | \n
\n | MM | \n01 02 ... 11 12 | \n
\n | MMM | \nJan Feb ... Nov Dec | \n
\n | MMMM | \nJanuary February ... November December | \n
Quarter | \nQ | \n1 2 3 4 | \n
\n | Qo | \n1st 2nd 3rd 4th | \n
Day of Month | \nD | \n1 2 ... 30 31 | \n
\n | Do | \n1st 2nd ... 30th 31st | \n
\n | DD | \n01 02 ... 30 31 | \n
Day of Year | \nDDD | \n1 2 ... 364 365 | \n
\n | DDDo | \n1st 2nd ... 364th 365th | \n
\n | DDDD | \n001 002 ... 364 365 | \n
Day of Week | \nd | \n0 1 ... 5 6 | \n
\n | do | \n0th 1st ... 5th 6th | \n
\n | dd | \nSu Mo ... Fr Sa | \n
\n | ddd | \nSun Mon ... Fri Sat | \n
\n | dddd | \nSunday Monday ... Friday Saturday | \n
Day of Week (Locale) | \ne | \n0 1 ... 5 6 | \n
Day of Week (ISO) | \nE | \n1 2 ... 6 7 | \n
Week of Year | \nw | \n1 2 ... 52 53 | \n
\n | wo | \n1st 2nd ... 52nd 53rd | \n
\n | ww | \n01 02 ... 52 53 | \n
Week of Year (ISO) | \nW | \n1 2 ... 52 53 | \n
\n | Wo | \n1st 2nd ... 52nd 53rd | \n
\n | WW | \n01 02 ... 52 53 | \n
Year | \nYY | \n70 71 ... 29 30 | \n
\n | YYYY | \n1970 1971 ... 2029 2030 | \n
\n | Y | \n1970 1971 ... 9999 +10000 +10001\n \n Note: This complies with the ISO 8601 standard for dates past the year 9999\n | \n
Week Year | \ngg | \n70 71 ... 29 30 | \n
\n | gggg | \n1970 1971 ... 2029 2030 | \n
Week Year (ISO) | \nGG | \n70 71 ... 29 30 | \n
\n | GGGG | \n1970 1971 ... 2029 2030 | \n
AM/PM | \nA | \nAM PM | \n
\n | a | \nam pm | \n
Hour | \nH | \n0 1 ... 22 23 | \n
\n | HH | \n00 01 ... 22 23 | \n
\n | h | \n1 2 ... 11 12 | \n
\n | hh | \n01 02 ... 11 12 | \n
\n | k | \n1 2 ... 23 24 | \n
\n | kk | \n01 02 ... 23 24 | \n
Minute | \nm | \n0 1 ... 58 59 | \n
\n | mm | \n00 01 ... 58 59 | \n
Second | \ns | \n0 1 ... 58 59 | \n
\n | ss | \n00 01 ... 58 59 | \n
Fractional Second | \nS | \n0 1 ... 8 9 | \n
\n | SS | \n00 01 ... 98 99 | \n
\n | SSS | \n000 001 ... 998 999 | \n
\n | SSSS ... SSSSSSSSS | \n000[0..] 001[0..] ... 998[0..] 999[0..] | \n
Unix Timestamp | \nX | \n1360013296 | \n
Unix Millisecond Timestamp | \nx | \n1360013296123 | \n
Blot converts text files from Markdown. You can use markdown to make text bold, italicized, create lists, links and more. You can mix Markdown and HTML in the same file.
\n\n\nYou can also paste the HTML for a video embed directly into a blog post. Blot also automatically converts plain URLs to Youtube and Vimeo videos into video embeds. To embed a youtube video in your blog post just paste its URL like this:
https://www.youtube.com/watch?v=nkJA6SYwa94\n
You can specify footnotes using this syntax:
A line with a footnote.[^1] Another line.[^2]\n\n[^1]: And the note goes here.\n[^2]: And the second goes here too.\n
I wrote a Markdown extension for Blot which provides basic layout shortcuts. The features are as follows:
The tag… | \nshould make its contents... | \nby applying this CSS class… | \n
---|---|---|
{<<} | \nextend into the left margin | \nwide left | \n
{>>} | \nextend into the right margin | \nwide right | \n
{<>} | \nextend into both margins | \nwide | \n
{>} | \nfloat right inside the page | \nright inside | \n
{<} | \nfloat left inside the page | \nleft inside | \n
{|<} | \nhang in the right margin | \nright margin | \n
{>|} | \nhang in the left margin | \nleft margin | \n
{||} | \nsit inside a 1/2 width column | \ntwo column | \n
{|||} | \nsit inside a 1/3 width column | \nthree column | \n
{||||} | \nsit inside a 1/4 width column | \nfour column | \n
You can including multiple lines inside the same layout tag by indenting them:
{<<} ## Subtitle which extends into left margin\n A paragraph which will also extend into the left margin.\n\n{>>} ## Subtitle which extends into right margin\n A paragraph which will also extend into the right margin.\n
Your blog's template controls how the layout HTML is styled. Most Blot templates come with a variation on layout.css which provides the above features as described.
To create italics, use a single asterix (*) on either side of the text:
*This text will be italic.*
Surrounding text with two asterisks makes text bold:
**This text will be bold.**
Both * or _ symbols work to make text bold or italic. This way you can combine bold and italic in the same sentence. For example:
**Everyone _must_ listen.**
Put a double tilde (~) on either side of the text you want to strikethrough:
~~Strike out mistakes~~
Make a bulleted list by preceding list items with a single asterix (*) or a hyphen (-). You need a space between the asterix and the text.
- Round\n- Shell\n- Projectile
\nCreate a numbered list by preceding list items with a number.
1. Eins\n2. Deux\n3. Tres
\nCreate a text link by wrapping the linked text in brackets [ ], and then wrapping the link in parenthesis ( ). For example:
[Wikipedia](https://wikipedia.org)
# Largest heading\n## Subheading\n### Section heading\n
Blot will convert equations set in LaTeX. Check out this useful guide. To use this, wrap your LaTeX in two dollar signs ($$) like this:
$$ f(x) = 2x^2 + 2/3 $$
\n $$ f(x) = 2x^2 + 2/3 $$
Here's what the markdown looks like, note the ‘!’ before the tag.
![Alt text](http://example.com/image.jpg "Title")\n
Yes, first create a folder whose name starts with an underscore, e.g. '_images'. Blot will not turn any of the files inside into blog posts, but they will be public. Then put the image inside then embed the image like this:
![Image description](/_images/image.jpg)\n
Blot resolves relative paths based on the location of the source file, not its permalink. File paths are case-insenitive. For example, let's say your blog has this folder structure:
These images all resolve correctly in fruit.txt
, no matter its resulting URL.
![Apple](_apple.png)\n![Apple](/posts/_apple.png)\n![Peach](../_images/peach.png)\n
Indent code with four spaces:
var foo = “bar”;\n
You can also wrap code.snippets
with three backticks `
. This is useful for inserting code snippets inside a paragraph.
If you have enabled the syntax highlighting app, Blot will process the snippet using highlight.js. Every Blot template comes with its own syntax highlighting theme. If you are designing a custom blog template and want to use syntax highlighting, please add a theme to your blog’s CSS file.
Key | \nValue | \n
---|---|
Date | \nDefaults to this file's creation date. Set the post's publish date using one of the supported formats. | \n
Title | \nDefaults to the first title in this post or its file name. | \n
Tags | \nEmpty by default. Seperate your tags with a comma. | \n
Permalink | \nDefaults to a URL-friendly version of the post's title. You can specify one here or change your site's default permalinks on the dashboard. | \n
Summary | \nDefaults to the first sentence of the first paragraph in the file. | \n
Teaser | \nLike summary but a little longer. Defaults to the first few paragraphs. | \n
Thumbnail | \nGenerated from the largest image in the post. You can specify a path or URL to an image. | \n
Draft | \nDefaults to 'No'. Anything truthy (e.g. 'Yes') will turn the post into a draft. | \n
Page | \nDefaults to 'No'. Anything truthy (e.g. 'Yes') will turn the post into a page and add it to your blog's menu. | \n
Menu | \nDefaults to 'Yes' if the file is a page. Anything falsy (e.g. 'No') will hide the page from your site's menu. | \n
You can create your own metadata and access it in your blog's template.
\nHere is the full list of Blot's native metadata:
\nMetadata properties | \nExample | \n
---|---|
Draft | \n/sample-post | \n
Page | \n/blog/sample-post | \n
Menu | \n/2017/sample-post | \n
Permalink | \n/2017/10/3/sample-post | \n
URL | \nAlias of the Permalink property | \n
Draft: no\nPage: no\nMenu: no\nPermalink: apple\nUrl: apple\nDate: 1/2/2020\nTags: Fruit, Pears\nThumbnail: _apple.png\nTitle: Apple\nSummary: Summary\n\n# Apple\n\nThis is the summary.\n
Draft 'Yes'\nPage 'Yes'\nMenu: 'Yes' or 'No'\nPermalink:\nUrl: \nDate:\nTags: \nThumbnail:\nSummary:\nTitle:
\nYou can create a page elsewhere in your blog's folder by adding Page: yes
to the file's metadata. If you'd like to create a page that isn't on your blog's menu, add Menu: no
as well.
Blot tries to create a thumbnail from the largest image in a blog post.
\nYou can specify a different thumbnail in the metadata at the top of a file. You can use a URL or a path to a file inside Blot’s folder:
\nThumbnail: /_Photos/Apple.jpg\n
Each post is assigned a permalink, or permanent URL. You can edit the general format of these permalinks on the dashboard. You can use any of the post's properties and any of Blot's date tokens. Here are a few examples:
The permalink format... | \nwill produce URLs like... | \n
---|---|
{{slug}} | \nexample.com/title-of-the-post | \n
blog/{{slug}} | \nexample.com/blog/title-of-the-post | \n
{{YYYY}}/{{slug}} | \nexample.com/2017/title-of-the-post | \n
{{YYYY}}/{{MM}}/{{D}}/{{slug}} | \nexample.com/2017/10/3/title-of-the-post | \n
{{slug}}-{{MM}}-{{YYYY}} | \nexample.com/title-of-the-post-10-2017 | \n
Blot charges an annual fee. You'll be billed when you first create a site, and each year after, as long as you keep your account open. You can cancel your subscription at any time.
\nYour payment information does not touch Blot's servers. Blot uses Stripe to process subscription payments. Read more about Stripe's security on their website.
\n\nYes, you can host as many sites as you like on Blot from the same account. Each site costs $20 a year. You can also create sites in different Dropbox accounts from the same Blot account.
Not at the moment. However, I plan to eventually add support Git, FTP, GitHub and Google Drive. Please contact me if there's a service you'd like me to support.
No, there’s no hard bandwidth or storage limit. However, if you use more than 1TB of bandwidth + storage combined per year, I will ask you to pay enough to meet the cost of hosting your site, or help you set up Blot on your own server.
No, not by default. Blot only has access to a single folder in your Dropbox. However, you can grant Blot full access to your folder. You should only do this if you want to move your site's folder elsewhere, or share it with other people who use Dropbox.
No, Dropbox's traffic limits do not apply to Blot. This is because Blot first transfers the contents of your folder to its server before delivering it to your readers.
Yes. I will email you one week before your subscription is renewed to give you time to cancel or update your billing information. I hate sneaky unwanted recurring bills as much as you do.
You can cancel your subscription on the account page. You can choose to disable your account immediately, or wait until the end of your current subscription period. You can also permanently delete your account.
Blot is a blogging platform. It creates a folder inside your Dropbox and publishes files you put inside. This means you can use your favorite text editor to write your blog.
\n\n\n\n\nThese files become blog posts when you put them somewhere in your site's folder:
Blot skips files and folders whose name starts with an underscore. Use this feature to embed an image in a blog post.
I've written scripts to generate a folder of files from sites hosted on Tumblr, Wordpress, Jekyll and Squarespace. If you contact me, I can run them on your site and send you the result.
Blot supports Markdown, a markup language designed for plain text files. You can add headings, lists, mathematical statements set in LaTeX, syntax highlighting to code snippets and much more.
Files inside a folder called 'Pages' are added to your site's menu instead of the list of blog posts. You can hide a page from your site's menu if you prefer.
Files inside a folder called 'Drafts' are not published to your site. Instead, Blot creates a preview file which you can open in your web browser.
Every file in your site's folder is public. For example, if you put
in your folder, your readers can download it at www.your-site.com/archive.zip
. You can use Blot as a static file server. Please note that paths and URLs on Blot are case-insensitive.
\nDate: February 28th, 1973\nTags: Literature, Schwarzgerät\n\n# Gravity's rainbow\n\nA screaming comes across the sky.\n\n\n \n
Blot generates all metadata for each post automatically based on the file's contents, name and location. This metadata includes a publish date, permalink and a summary. You can override Blot's metadata with your own.
Metadata must start on the file's first line and be separated from the rest of the post by at least one blank line.
You can also create your own custom metadata and use it on your site's template. View the full list of metadata.