Open elPiablo opened 1 year ago
cc @jamiebones @kempsterrrr we need to take your considerations on board here re: SEO
Happily to help :)
I haven't had a full review of the site from an SEO perspective but some initial points here:
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.
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.
--
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.
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!!!
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?
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.
@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:
title: Getting Started with Smart Contract Development description: Learn the basics of smart contract development with Remix. `learn-solidity/beginner-smart-contract'
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'
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'
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'
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
@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.
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)
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)
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.
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.
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.
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.
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.
Hey @okhaimie-dev this post from @kempsterrrr is defo a nice starting point for all the SEO convos! 😄
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.
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 :)
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.