Ce diaporama a bien été signalé.
Nous utilisons votre profil LinkedIn et vos données d’activité pour vous proposer des publicités personnalisées et pertinentes. Vous pouvez changer vos préférences de publicités à tout moment.
Building, hacking and killing a
bespoke CMS
Fabrizio Ballarini
@Pechnet
Link to slides
wi.se/self-driving-CMS
We started SEO program back in 2016 and built
@Pechnet
2 6 26 1712 3+M
Custom
CMS
Products People
strong
team
CountriesLan...
What if you could build a
CMS to answer specific
clusters of queries?
@Pechnet
An out of
the box
CSM with a
couple of
SEO
features is
not enough @Pechnet@Pechnet
A high
performing
CMS is still
driven by
humans
Check out:
wi.se/seo-friendly-cms
@Pechnet
What if you
could build a
self driving
CMS?
@Pechnet@Pechnet
Context on our challenge
Build a price comparison product
Our service covers 1300+ routes and
offers 49 currencies.
There are 71 countries you can send
money to and 43 countries yo...
~9M URLs
Adjust to existing organisation
Remove dependencies to increase
speed of execution
We had no acquisition built into our core product
@Pechnet
Built-in acquisitionNo acquisition
Whatever is your setup keep an eye on the SEO
“DevMometer”
@Pechnet
Fresh start or migration to
new platform with prospect...
Full stack SEO team
@Pechnet
Product
SEO Specialists
Full Stack Devs Frontend Devs Designers Copywriters
Editors
Translato...
Evalue growth levers
More unique pages is often the most effective
answer
0 links Wikipedia
Produce
more
content
Produce
content
hardcore
Build...
SEO Basic: Produce, Optimise and build links
Search
Volume
CustomersCTR Conversion
Rate
WhatSEOsDO?
Produce
more
content
O...
We growth at the speed at which we ship/optimise
pages
@Pechnet
3M INDEXED PAGES 🚀
Build your fastest route to MVPs
Remove dependencies
We decided to build “Lienzo”
@Pechnet
We initially invested as less as we could in tech
@Pechnet
We didn’t port the main
Angular JS calculator to
our CMS, simpl...
You can publish pages in minutes once you have
copy + creatives
@Pechnet
Added basic SEO features
Don't just give
developers
a list
of SEO features
Customize URLs
Meta data
Structured data
Canonicals and redirects
Indexi...
Define what is must to build and what you can hack:
Our first xml sitemap after launching 1M+ URLs!
@Pechnet
Lorem 3
Put KPI...
Focused on features that could help us scaling
internationally
@Pechnet
#1 Language/Country selector
#2 Unique page hreflan...
Users only select language/country + unique key,
Platforms does the mapping to URL locales
@Pechnet
Language/Country selec...
Built in monitoring
@Pechnet
Everytime you press update on any page
changes get stored in your database. You
don’t need to...
Optimal backend to achieve seamless workflow
@Pechnet
Easy access to brief &
draft from writers
Automatically track
keyword...
The Average Handling time (AHT) is normalizing. In average it takes around 15-18 days for each of the
production stages. O...
Publishing via CMS doesn’t scale, it’s constrained by number
of people in the team.
Copywriters
Editors
Translators
Publis...
We continue to grow linearly by publishing via
CMS
@Pechnet
The test page we quickly built proves to be successful,
time to scale it!
@Pechnet
Hack vs doing things properly
We used to hack our Database 🙈, with API it’s safer
and way more efficient
@Pechnet
1000+
new
pages
DONE!
Step 1: We plugge...
Leverage APIs
Know your CMS, your content & structure data
@Pechnet
Learn how to use APIs
@Pechnet
Understand how your CMS works:
database, data format and structure
Example: our CMS is runn...
Why would we do it? (Use cases)
@Pechnet
Creating and updating landing pages manually takes time and is
prone to errors.
C...
Scaling launches and MVPs
Use case: create 1000 new landing pages
@Pechnet
Imagine you want to create 1000 new templated landing pages - for
example...
#1: Create a template
@Pechnet
In JSON format, create template matching the API schema
and map templated fields to variable...
#2: We have prepared our list of variables
@Pechnet
Prepare the values for templated fields in a csv like this one:
#3: We wrote a simple script in python
@Pechnet
We wrote two simple python scripts:
1. To generate JSON files based on vari...
#4: Test locally & execute in production 🚀
@Pechnet
$ pipenv run python api-request.py csv-filename public
After first testi...
Invest in scalable widgets to achieve
feature parity with core product
Deeper integration with core product coupled
with ability to scale through CMS API 🚀
@Pechnet
🤖 APIs beat Humans
🤖
@Pechnet
👨‍🔬👩‍🔬
Kill CMS, autonomous product
We already know what we are going to build in 2 years time
2019 2020 2021 2022
Core products
Validated MVPs (waiting for d...
Automate acquisition
Master the relationship between search intents and
your product variables
@Pechnet
Product variables
{Source Currency}
{Ta...
3 main layers that communicate with each other
@Pechnet
Backend
APIs
Frontend
Widgets
Frontend
Apps
Core
product
Quote
ser...
Data Collection service guides creation of landing
pages
Comparison Widget
Price Comparison
Service
Data
Collection
Servic...
The product automatically generates thousand of
pages as soon as data is available
@Pechnet
Invest in product
2 years of testing….and still room for improvement!
@Pechnet
Data is the essential part of the product without
data we don’t have a product, not a 10x one.
@Pechnet
Build a 10x product that didn’t exist before
@Pechnet
Validate Acquisition Build scalable product
Launch MVP
via CMS
Scale via CMS
APIs
Launch
dedicated app
& scale via API
Imp...
2. Develop features for SEO and scale MVPs via
CMS
@Pechnet
Start with an empowered autonomous full-stack SE0 team…
1. Bui...
@Pechnet
Link to slides >>
wi.se/self-driving-cms
Money without borders >>
wi.se/borderless
Join us >>
wi.se/seo-jobs
Than...
Prochain SlideShare
Chargement dans…5
×

SearchLeeds 2019 - Fabrizio Ballarini - TransferWise - Building, hacking and killing a bespoke CMS

526 vues

Publié le

What if you could build a CMS with features that are made specifically to answer a specific cluster of search intents around a product. In Fabrizio's SearchLeeds talk he covers early technical learnings from building a SEO friendly CMS from ground up (how TransferWise designed ahreflang, indexing, picking the right tech stack, structured data features) but also how they now are able to scale our efforts by moving set of product pages into a dedicated service run by APIs and testing framework.

Publié dans : Marketing
  • Login to see the comments

  • Soyez le premier à aimer ceci

SearchLeeds 2019 - Fabrizio Ballarini - TransferWise - Building, hacking and killing a bespoke CMS

  1. 1. Building, hacking and killing a bespoke CMS Fabrizio Ballarini
  2. 2. @Pechnet Link to slides wi.se/self-driving-CMS
  3. 3. We started SEO program back in 2016 and built @Pechnet 2 6 26 1712 3+M Custom CMS Products People strong team CountriesLanguages Indexed Pages
  4. 4. What if you could build a CMS to answer specific clusters of queries? @Pechnet
  5. 5. An out of the box CSM with a couple of SEO features is not enough @Pechnet@Pechnet
  6. 6. A high performing CMS is still driven by humans Check out: wi.se/seo-friendly-cms @Pechnet
  7. 7. What if you could build a self driving CMS? @Pechnet@Pechnet
  8. 8. Context on our challenge
  9. 9. Build a price comparison product
  10. 10. Our service covers 1300+ routes and offers 49 currencies. There are 71 countries you can send money to and 43 countries you can send money from. 100+ competitors @Pechnet
  11. 11. ~9M URLs
  12. 12. Adjust to existing organisation Remove dependencies to increase speed of execution
  13. 13. We had no acquisition built into our core product @Pechnet Built-in acquisitionNo acquisition
  14. 14. Whatever is your setup keep an eye on the SEO “DevMometer” @Pechnet Fresh start or migration to new platform with prospect of healthy collaboration SEO team has no direct control on CMS choice and product but has to pitch changes to web/product team Cms is already in place & there is very little SEO team can change
  15. 15. Full stack SEO team @Pechnet Product SEO Specialists Full Stack Devs Frontend Devs Designers Copywriters Editors Translators Publishers Analysts **Credit for all the below actually goes to them, I simply do the talk :)
  16. 16. Evalue growth levers
  17. 17. More unique pages is often the most effective answer 0 links Wikipedia Produce more content Produce content hardcore Build links first (audit existing content) Produce content first 0 content Ton of content @Pechnet
  18. 18. SEO Basic: Produce, Optimise and build links Search Volume CustomersCTR Conversion Rate WhatSEOsDO? Produce more content Optimise existing content Build links Optimise existing content Easy to measure and scale Harder to measure and scale Optimise Existing content @Pechnet
  19. 19. We growth at the speed at which we ship/optimise pages @Pechnet 3M INDEXED PAGES 🚀
  20. 20. Build your fastest route to MVPs
  21. 21. Remove dependencies
  22. 22. We decided to build “Lienzo” @Pechnet
  23. 23. We initially invested as less as we could in tech @Pechnet We didn’t port the main Angular JS calculator to our CMS, simply used an iframe All widgets are simple text + images in a limited number of layouts We leverage bootstrap of the main product for styling and design
  24. 24. You can publish pages in minutes once you have copy + creatives @Pechnet
  25. 25. Added basic SEO features
  26. 26. Don't just give developers a list of SEO features Customize URLs Meta data Structured data Canonicals and redirects Indexing Sitemaps hreflang and geotargeting
  27. 27. Define what is must to build and what you can hack: Our first xml sitemap after launching 1M+ URLs! @Pechnet Lorem 3 Put KPIs against hacked process until we realised we were hitting scaling issues and couldn’t simply keep up. TIme for engineers to automate it. Lorem 1 To save dev time we worked harder on building a strong internal link structure that bots could crawl more efficiently. Lorem 2 Built manually by SEOs. >>Dump list of URLs from DB >> Build static XML sitemap >> Upload regularly Build itDo without Hack it
  28. 28. Focused on features that could help us scaling internationally @Pechnet #1 Language/Country selector #2 Unique page hreflang key #3 Locale-mapping
  29. 29. Users only select language/country + unique key, Platforms does the mapping to URL locales @Pechnet Language/Country selector Unique page hreflang key Locale-mapping
  30. 30. Built in monitoring @Pechnet Everytime you press update on any page changes get stored in your database. You don’t need to crawl your site to find out!
  31. 31. Optimal backend to achieve seamless workflow @Pechnet Easy access to brief & draft from writers Automatically track keywords via API
  32. 32. The Average Handling time (AHT) is normalizing. In average it takes around 15-18 days for each of the production stages. Overall it takes us 2 - 3 months to publish an article from the moment the brief for it is created. We got faster at producing content but not fast enough! Publishing Analyst @Pechnet
  33. 33. Publishing via CMS doesn’t scale, it’s constrained by number of people in the team. Copywriters Editors Translators Publishers Keyword Data Unique page @Pechnet
  34. 34. We continue to grow linearly by publishing via CMS @Pechnet
  35. 35. The test page we quickly built proves to be successful, time to scale it! @Pechnet
  36. 36. Hack vs doing things properly
  37. 37. We used to hack our Database 🙈, with API it’s safer and way more efficient @Pechnet 1000+ new pages DONE! Step 1: We plugged our CMS to Metabase Step 2: Understand template in JSON Step 3: Edit template, concatenate JSON Step 4: Inject data in in PosgreSQL ☢
  38. 38. Leverage APIs
  39. 39. Know your CMS, your content & structure data @Pechnet
  40. 40. Learn how to use APIs @Pechnet Understand how your CMS works: database, data format and structure Example: our CMS is running on a PostgreSQL database and each page is stored in a JSON format. Examples for other CMS: https://developer.wordpress.org/rest-api/
  41. 41. Why would we do it? (Use cases) @Pechnet Creating and updating landing pages manually takes time and is prone to errors. Create 1000s of scalable landing pages from scratch Update out-of-date content, or fix broken links in scale Delete obsolete pages Clone existing pages at scale
  42. 42. Scaling launches and MVPs
  43. 43. Use case: create 1000 new landing pages @Pechnet Imagine you want to create 1000 new templated landing pages - for example to sell different types of ice cream, in multiple languages. Each page should contain information about different aspects of ice cream: - Its flavour - Price - And list of allergens
  44. 44. #1: Create a template @Pechnet In JSON format, create template matching the API schema and map templated fields to variables.
  45. 45. #2: We have prepared our list of variables @Pechnet Prepare the values for templated fields in a csv like this one:
  46. 46. #3: We wrote a simple script in python @Pechnet We wrote two simple python scripts: 1. To generate JSON files based on variable values and template 2. To send JSON files as a POST request to our API
  47. 47. #4: Test locally & execute in production 🚀 @Pechnet $ pipenv run python api-request.py csv-filename public After first testing the changes in a local environment, we were ready to run the script in production: 1000+ new pages launched!
  48. 48. Invest in scalable widgets to achieve feature parity with core product
  49. 49. Deeper integration with core product coupled with ability to scale through CMS API 🚀 @Pechnet
  50. 50. 🤖 APIs beat Humans 🤖 @Pechnet 👨‍🔬👩‍🔬
  51. 51. Kill CMS, autonomous product
  52. 52. We already know what we are going to build in 2 years time 2019 2020 2021 2022 Core products Validated MVPs (waiting for dev resources) Launch new products @Pechnet
  53. 53. Automate acquisition
  54. 54. Master the relationship between search intents and your product variables @Pechnet Product variables {Source Currency} {Target Currency} Example of a cluster of queries: “Send money to {Target Currency}”
  55. 55. 3 main layers that communicate with each other @Pechnet Backend APIs Frontend Widgets Frontend Apps Core product Quote service Pricing Delivery Estimation Price Comparison Send money Calculator Price Comparison Lienzo (landing page CMS) Send Money Comparison
  56. 56. Data Collection service guides creation of landing pages Comparison Widget Price Comparison Service Data Collection Service Comparison Landing pages @Pechnet
  57. 57. The product automatically generates thousand of pages as soon as data is available @Pechnet
  58. 58. Invest in product
  59. 59. 2 years of testing….and still room for improvement! @Pechnet
  60. 60. Data is the essential part of the product without data we don’t have a product, not a 10x one. @Pechnet
  61. 61. Build a 10x product that didn’t exist before @Pechnet
  62. 62. Validate Acquisition Build scalable product Launch MVP via CMS Scale via CMS APIs Launch dedicated app & scale via API Improve product Improve Conversion Rate @Pechnet
  63. 63. 2. Develop features for SEO and scale MVPs via CMS @Pechnet Start with an empowered autonomous full-stack SE0 team… 1. Build/adopt a CMS trying to eliminate dependencies and lunch pages in seconds 3. Automate with APIs what’s successful by investing into stand alone products
  64. 64. @Pechnet Link to slides >> wi.se/self-driving-cms Money without borders >> wi.se/borderless Join us >> wi.se/seo-jobs Thank you

×