Jekyll config.yml did not find expected key while parsing a block mapping

I'm not sure of your formating/indentation for _config.yml.

This one is correct :

title: Oliver Williams - Portfolio
url: "http://yourdomain.com"
markdown: kramdown 
permalink: /:title

defaults: 
  - 
    scope: 
      path: "" 
      type: "posts" 
    values: 
      layout: "post"
  -
    scope:
      path: ""
      type: "pages" 
    values:
      layout: "page"

The problem is in your second list element for defaults. The marker is indented too much, possible because you used a tab instead of a two spaces.

There is no reason to put the mappings that are elements of those lists on a separate line. You also don't have to indent list elements if the list is a mapping value. Nor is it necessary to quote simple scalars like "posts", "page", etc. (You don't have that for your title value either)

So you can do:

title: Oliver Williams - Portfolio
url: http://yourdomain.com   # the base hostname & protocol for your site

# Build settings
markdown: kramdown
permalink: /:title

defaults:
- scope:
    path: ''         # an empty string here means all files in the project
    type: posts      # previously `post` in Jekyll 2.2.
  values:
    layout: post
- scope:
    path: ''         # an empty string here means all files in the project
    type: pages
  values:
    layout: page

which is equivalent to your input (corrected for the overindented -)

Tags:

Yaml

Jekyll