Developer-DAO / academy

Deprecated; V2 lives at https://github.com/developer-dao/academy-turbo
https://academy.developerdao.com
110 stars 53 forks source link

improve SEO: titles and descriptions for NFT track lessons #205

Open elPiablo opened 1 year ago

elPiablo commented 1 year ago

We need to homogonise lesson titles and descriptions (including in the lesson body .mdx texts)

The titles in the front matter in the .mdx files don't match the titles in the 'Tracks' or 'Get Started' landing pages. It would be nice to use the same titles in all places including in the lessons.

Also, we need to take into consideration of the descriptions of the lessons in 'Tracks' and also in the lessons themselves. Quite often in these two places, we refer to e.g. lesson 1, or lesson 4 when these 'numbers' aren't represented in the actual lesson titles.

elPiablo commented 1 year ago

cc @jamiebones @kempsterrrr we need to take your considerations on board here re: SEO

kempsterrrr commented 1 year ago

Happily to help :)

I haven't had a full review of the site from an SEO perspective but some initial points here:

URL Structure / site-architecture

Current URL structure - /lessons/1

Should be - /lessons/lesson-name

With the new website design, I'd propose we explore this in more depth as there maybe other rooms for improvements in the overall site-architecture that could really help SEO and user experience.

For example, it maybe better for the user that we structure the site like so:

learn-solidity/how-build-an-NFT learn-polygon/lesson-title learn-solana/lesson-title

This could provide both UX and SEO improvements as every page is targeting important key works in the URL and the lessons themselves are grouped - we probably don't want 100s of lessons in the future all on /lessons/lesson-title as that would a had for user to navigate and bad for SEO.

SEO Metadata

Currently, all pages are the same metadata: title, description, image. Having unique values for these that matches the content of the page is vital for SEO, without it, Google/other engineers does not know what it is looking at and it will not rank - we will only rank for the brand name "Developer DAO Academy" - so always fight an up hil battle. This should be an easy fix. You create an SEO component using generateMetadata that is imported on every page and populated using the front matter I believe you already have on the site.

The other big impact of this is social sharability, this track https://academy.developerdao.com/lessons/projects/2 shows up on social media as the home page info which is missing out on a big opportunity for communicating effectively with users and allowing the content to be shareable. Updating the page meta data as above will solve this problem as well.

image

--

More broadly, we should settle on target keys words/phrases and structure based on what users are searching.

I suspect the optimum structure would be learn-solidity/how-to-build-an-nft as this targets two high-value key phrases, but this is something we can do a little research on.

elPiablo commented 1 year ago

I'll add the lesson header followed by the all front matter (messy!!). And I will move the html tags one space, so they don't render here in the chat:

< LessonHeader title="Lesson 1: Intro to Smart Contract Development" / > front matter: title: Getting Started with Smart Contract Development description: Learn Basics of Smart Contract Development and Remix. icons: ['solidity', 'remix']

...

< LessonHeader title="Lesson 2: Build a Basic NFT" / > front matter: title: Build a Basic NFT description: Write and deploy a Smart Contract for a Basic NFT. Builds on knowledge from Lesson 1. icons: [ 'npm', 'solidity', 'hardhat', 'openzeppelin', 'ethereum', 'etherscan', 'opensea', ]

... < LessonHeader title="Lesson 3: Tier NFTs" discussionUrl="https://developerdao.peeranha.io/discussions/1641/creating-a-smart-contract-for-%E2%80%98tiered%E2%80%99-nfts" / > front matter: i18n: 'smart-contracts' title: TierNFTs description: Write and deploy a Smart Contract for a Tier Based NFT. Builds on knowledge from Lesson 2. icons: [ 'npm', 'solidity', 'hardhat', 'openzeppelin', 'ethereum', 'etherscan', 'opensea', 'polygon', ]

.... < LessonHeader title="Lesson 4: Testing your TierNFT" discussionUrl="https://developerdao.peeranha.io/discussions/1372/testing-solidity-contracts" / > title: Write Automated Tests for your TierNFT description: Prove your TierNFT contract works! Builds on knowledge from Lesson 3. icons: ['solidity', 'hardhat', 'openzeppelin']

... < LessonHeader title="Lesson 5: Connecting to a Frontend" / > front matter: i18n: 'smart-contracts' title: Connecting to a Frontend description: Connect your smart contract to a UI for people to interact with. icons: [ 'rainbowkit', 'wagmi', 'ethers', ] author: 'ropats16'

A lot of homogonising needed!!!

elPiablo commented 1 year ago

While we're here we could just clean up all that front matter if possible, e.g. with internationalisation, forum, and authors. Do we need the authors in the front matter, now that we have it in a footer component?

p.s. am I using good Github practices here with the way I'm presenting stuff?

elPiablo commented 1 year ago

After we finalise this, we'll simply need to update the text in the lesson .mdx files where we refer to any titles we might update.

elPiablo commented 1 year ago

@georgemac510, @7i7o, @briangershon and @ropats16 are you all okay with doing some small changes on the lesson and fundamentals titles and descriptions for SEO, and also easier in general to manage? Please see my previous long post from earlier today, so you can see the lack of conformity in there.

I would say the title in the < header > component should be the same as the title in the front matter as standard. What are anyone's thoughts?

As far as the front matter + the directory/file path goes could I make a first suggestion with the following:

  1. title: Getting Started with Smart Contract Development description: Learn the basics of smart contract development with Remix. `learn-solidity/beginner-smart-contract'

  2. title: Build a Basic NFT description: Write and deploy a smart contract for a basic NFT. Builds on knowledge from Lesson 1. `learn-solidity/how-build-an-NFT'

  3. title: Build a Tier-based NFT description: Write and deploy a smart contract for a tier-based NFT. Builds on knowledge from Lesson 2. `learn-solidity/(build-)tier-based-NFT'

  4. title: Write Automated Tests for your TierNFT Smart Contract description: Prove your TierNFT contract works! Builds on knowledge from Lesson 3. `learn-solidity/smart-contract-testing'

  5. title: Connecting your TierNFT Smart Contract to a Frontend description: Connect your smart contract to a user interface. `learn-solidity/build-smart-contract-ui'

cc @kempsterrrr @jamiebones @wolovim

georgemac510 commented 1 year ago

@elPiablo I have no problem with you updating content that I have produced at this point, if it helps with SEO and can spread the content to a wider audience. I'm out of the picture with other work these days, so I wouldn't have the time to make these updates myself. Good luck.

briangershon commented 1 year ago

Thanks @elPiablo for your new titles/front-matter, it looks good to me!

One thing I noticed: We use the terms Tier-based NFT and TierNFT. I'm thinking Lesson 4 and 5 should be changed so they all use Tier-based NFT which I personally like the best of those.

And stepping back a bit further, not sure if "Tier" or "Tier-based" makes sense from an SEO perspective. I wonder if there is a more standard term for that? (I don't know off the top)

kempsterrrr commented 1 year ago

These are great suggestions @elPiablo !

Having titles and descriptions is 🔥. To really make an impact on SEO, we want titles to match what users are searching for using the language, the terms they would use, and capturing the intent of their search (important to Google).

For example, it might be better to do the following: Build a Basic NFT --> How to build a basic NFT with Solidity

@briangershon is 100% right about consistency. It is asking yourselves questions like "What is the right/common nomenclature for what we're doing here?" - I'd never heard of TierNFT, so googled it, and the first thing that came up was "Multi-tiered NFTs" so that signals to me that might be a better name to use that people are more likely to search for and therefore more likely understand what they're getting from this lesson (Search popularity generally signals accepted wisdom of the crowd for what something should be called)

I don't have the time to do any research on this right now, but I'll circle back next week to make further suggestions. I'll explain the reasoning and how I come to conclusions so that others can follow along. SEO is simple once the basics make sense.

EDIT...

Didn't realise @briangershon had already asked this question... definitely the right type of question to be asking ourselves

I wonder if there is a more standard term for that? (I don't know off the top)

kempsterrrr commented 1 year ago

whoah - didn't really take in the descriptions and URL architecture changes. These are super nice to @elPiablo

Using learn-solidity/title-name is good. Also means the suggestion above of adding with solidity to the end of How to build a basic NFT is likely less important as Solidity has already been captured in the URL.

One really powerful thing here would be creating a dedicated page @ academy.developerdao.com/learn-solidity that includes an overview of the full suite of courses and links to each one. The goal here would be to get that page to rank on its own for the search term 'learn solidity' which would be a huge win if we can achieve it (very doable over time with good content and good SEO strategy - I can help on the latter)

I schedule some time in my diary to have a real think about this and drop some thoughts as mentioned above.

elPiablo commented 1 year ago

Hey @briangershon and @kempsterrrr

What I was thinking about in the use of both, was in each instance of a title, try and use key words that are really relevant to that particular lesson. e.g

lesson 4: Write Automated Tests Smart Contract lesson 5: Connect(ing) Smart Contract Frontend

and the other words your TierNFT are informal, the actual contract name and therefore in context of the learning track, what the author wrote and the tone/playfulness they intended - very important not to steamroll over that. We still need to look at the Fundamentals pieces. Just wanna say this up front, and out of experience in the Academy space.

But I'm only learning here and making lots of assumptions myself.

briangershon commented 1 year ago

Thanks @elPiablo! re: "TierNFT is informal"-- definitely! It's the name of the contract, so fine within the lesson. But not as meaningful as a title or SEO.

Thanks @kempsterrrr for going the extra step and finding Multi-tiered NFTs -- that's more descriptive.

7i7o commented 1 year ago

Hi guys! Im late to the party, but this is great work Piablo! I love the new structure and I'm sure it will help a lot with SEO 👏

Something I would add to the tier/multi-tier topic is that we are missing one important part of lesson 3 that might also help with SEO:

That could also be a common search term for NFTs.

kempsterrrr commented 1 year ago

Circling back here, folks, after a busy couple of weeks :)

I'm scheduling some time early next week to take a proper look at the SEO, here's what I plan to do:

1) Create a spreadsheet with all existing lessons titles, URLs, meta-descriptions, etc. 2) Research to propose some changes to titles and descriptions that can help improve SEO and UX (with reasons) 3) Consider the technical side of SEO. (Sitemap, images, meta-data etc.) and what changes can be easily implemented to make this work 4) Open a document as a guideline for SEO on Academy that can be completed collaboratively with everyone.

There are a lot of easy wins I can see here already, most of them mentioned above, some not. There are also some good things already in place for the site, like a decent number of backlinks (websites that link to the academy) from reputable domains.

With some care and love here, I'm confident we can realise some meaningful improvements in discoverable, sharability and user experience, without a huge amount of effort.

I'll join the meeting on Thursday too :)

To @elPiablo's point about informal language and not steamrolling over it there is always a balance. Regardless of where everyone lands on this topic would suggest we try to anchor decisions in what will have the biggest positive impact on our shared goals for the Academy.

elPiablo commented 1 year ago

Hey @okhaimie-dev this post from @kempsterrrr is defo a nice starting point for all the SEO convos! 😄

kempsterrrr commented 1 year ago

Hello folks - I've scheduled a few hours for a deep-dive/audit for the SEO on Tuesday morning.

Here's a google sheet for tracking the work :)

I will do my best to share context around what I'm doing so folks can follow along, and then it would be great to find a time to talk about it synchronously.

kempsterrrr commented 1 year ago

I opened a notion doc we can work off here @okhaimie-dev

Added some basic structure to it which we can look at tomorrow and fill in together :)