protoschool.github.io icon indicating copy to clipboard operation
protoschool.github.io copied to clipboard

SEO Updates Part 2

Open zebateira opened this issue 4 years ago • 2 comments

Following up with Andrew's suggestions, we can continue to improve our SEO results with the following implementations:

  • [x] Update page titles to be more attractive to users searching (done in #549)
    • [x] move "tutorial" keyword to the start of the title in the lessons titles
    • [x] add course title to lessons title if not present
  • [ ] Move tutorials pages to /tutorials/* or /tutorials/project-name/*
  • [ ] More text: most webpages, particularly the homepage, should have at least 250 words
  • [ ] Improve H1's with more keywords (length should be at least 20 characters as well)
  • [ ] Add footer with links to other PL Projects, Github and Twitter, attribution notice, etc. (see detailed issue #515)
  • [x] Improve loading page times (done here: https://github.com/ProtoSchool/protoschool.github.io/pull/521)
  • [x] Create dedicated pages for courses, e.g. /courses/filecoin with dedicated text blocks (more on how this is needed to unblock distinct social cards per search query here)
  • [ ] About page
  • [ ] Use https://schema.org/ in the breadcrumbs (item tags)
  • [x] Allow Google to find lesson pages (due to more detailed content) but add a UI feature to direct users to start of tutorial (see detailed issue #523)

zebateira avatar Aug 14 '20 15:08 zebateira

Just a note here that we have some initial feedback from JB Web Analytics to review before digging in on this one.

terichadbourne avatar Sep 02 '20 16:09 terichadbourne

Notes on "Create dedicated pages for courses"

  1. Content: create a new entry on static/translations/en.json for the necessary content
  2. Creating the course pages: here we have two options: static or dynamic 2.1. Static: easiest and quickest. Basically create static pages for each course (IPFS, Multiformats, Filecoin, etc) and then add them to the static routes in the src/routes.js file. 2.2. Dynamic:
    • Use the courses.json file to generate the routes and feed it to a new entry in the routes file called courses which should be added to the all entry as well (all and featured need to be ignored from the list of courses from the courses.json file when generating the pages)
    • Create new pages/Course.vue page component that will render a generic course using the content of the translations file
    • Optional: re-structure the courses.json file to separate all and featured from the rest of the courses. something like ui: [all, featured], curated: [ipfs, filecoin, multiformats]

zebateira avatar Dec 07 '20 17:12 zebateira