Cum se afișează scorurile Lighthouse în Foi de calcul Google cu o funcție personalizată
Publicat: 2020-11-19Automatizarea și învățarea automată au un potențial extraordinar de a ne ajuta pe toți în marketing. Dar, în acest moment, multe dintre aceste instrumente sunt inaccesibile persoanelor care nu pot codifica sau care pot codifica puțin, dar nu sunt chiar atât de confortabile cu el.
Ceea ce se întâmplă adesea este că ajung să fie una sau două persoane în birou care se simt confortabil cu scrierea și editarea codului și apoi acești oameni produc scripturi și caiete pe care toți ceilalți le conduc. Fluxul de lucru arată cam așa:

Vă voi arăta o modalitate simplă de a simplifica acest flux de lucru pentru a elimina pașii în care oamenii trebuie să ruleze un script și să formateze ieșirea. În schimb, pot rula automatizarea direct din Foi de calcul Google.
Exemplul pe care ți-l voi arăta este pentru o funcție personalizată Foi care returnează scorul Lighthouse pentru o adresă URL ca în acest gif:

Metoda pe care v-o voi arăta nu este singura modalitate de a face acest lucru, dar ilustrează o tehnică mult mai generală care poate fi utilizată pentru multe lucruri, inclusiv algoritmi de învățare automată.
Există două părți:
- O aplicație Google Cloud Run care va face lucrurile complicate (în acest caz, va rula un test Lighthouse) și care va răspunde solicitărilor HTTP.
- O funcție personalizată Appscript care va face cereri către API-ul pe care l-ați creat la pasul 1 și va returna rezultatele în Foaia Google.
Aplicații rulate în cloud
Cloud Run este un serviciu Google care preia o imagine de andocare pe care o furnizați și o face disponibilă prin HTTP. Plătiți numai atunci când se face o solicitare HTTP, deci pentru un serviciu de acest gen care nu este utilizat 24/7 este foarte ieftin. Costul real va depinde de cât îl utilizați, dar aș estima mai puțin de 1 USD pe lună pentru a rula mii de teste.
Primul lucru pe care trebuie să-l facem este să realizăm o imagine Docker care va efectua analiza Lighthouse atunci când îi vom solicita HTTP. Din fericire pentru noi există o documentație care arată cum să rulăm un audit Lighthouse programat pe Github. Codul conectat salvează analiza într-un fișier, mai degrabă decât să returneze răspunsul prin HTTP, dar acest lucru este ușor de remediat prin împachetarea întregului lucru într-o aplicație Express astfel:
const express = require('express'); const app = express(); const lighthouse = require('lighthouse'); const chromeLauncher = require('chrome-launcher'); app.get('/', async (req, res) => { // Check that the url query parameter exists if(req.query && req.query.url) { // decode the url const url = decodeURIComponent(req.query.url) const chrome = await chromeLauncher.launch({chromeFlags: ['--headless', '--no-sandbox','--disable-gpu']}); const options = {logLevel: 'info', output: 'html', port: chrome.port}; const runnerResult = await lighthouse(url, options); await chrome.kill(); res.json(runnerResult.lhr) } }); const port = process.env.PORT || 8080; app.listen(port, () => { console.log(`Listening on port ${port}`); });
Salvați acest cod ca index.js.
Apoi, veți avea nevoie și de un fișier numit package.json care descrie cum se instalează aplicația de mai sus și un fișier Docker, astfel încât să putem încheia totul în Docker. Toate fișierele de cod sunt disponibile pe Github.
package.json { "name": "lighthouse-sheets", "description": "Backend API for putting Lighthouse scores in Google sheets", "version": "1.0.0", "author": "Richard Fergie", "license": "MIT", "main": "index.js", "scripts": { "start": "node index.js" }, "dependencies": { "express": "^4.17.1", "lighthouse": "^6.3" }, "devDependencies": {} } Dockerfile # Use the official lightweight Node.js 10 image. # https://hub.docker.com/_/node FROM node:12-slim # Our container needs to have chrome installed to # run the lighthouse tests RUN apt-get update && apt-get install -y \ apt-transport-https \ ca-certificates \ curl \ gnupg \ --no-install-recommends \ && curl -sSL https://dl.google.com/linux/linux_signing_key.pub | apt-key add - \ && echo "deb https://dl.google.com/linux/chrome/deb/ stable main" > /etc/apt/sources.list.d/google-chrome.list \ && apt-get update && apt-get install -y \ google-chrome-stable \ fontconfig \ fonts-ipafont-gothic \ fonts-wqy-zenhei \ fonts-thai-tlwg \ fonts-kacst \ fonts-symbola \ fonts-noto \ fonts-freefont-ttf \ --no-install-recommends \ && apt-get purge --auto-remove -y curl gnupg \ && rm -rf /var/lib/apt/lists/* # Create and change to the app directory. WORKDIR /usr/src/app # Copy application dependency manifests to the container image. # A wildcard is used to ensure copying both package.json AND package-lock.json (when available). # Copying this first prevents re-running npm install on every code change. COPY package*.json ./ # Install production dependencies. # If you add a package-lock.json, speed your build by switching to 'npm ci'. # RUN npm ci --only=production RUN npm install --only=production # Copy local code to the container image. COPY . ./ # Run the web service on container startup. CMD [ "node", "--unhandled-rejections=strict","index.js" ]
Construiți imaginea de andocare și apoi puteți testa lucrurile la nivel local pe propriul computer astfel:
Mai întâi porniți imaginea:
docker run -p 8080:8080 lighthouse-sheets
Și apoi testați pentru a vedea dacă funcționează:
curl -v "localhost:8080?url=https%3A%2F%2Fwww.example.com"
Sau accesați localhost: 8080? Url = https% 3A% 2F% 2Fwww.example.com în browserul dvs. Ar trebui să vedeți o mulțime de JSON.
Următorul pas este să vă împingeți imaginea în registrul Google Container. Pentru mine, aceasta este o comandă simplă:

docker push gcr.io/MY_PROJECT_ID/lighthouse-sheets
Dar este posibil să fie necesar să configurați mai întâi autentificarea docker înainte de a putea face acest lucru. O metodă alternativă este utilizarea Google Cloud Build pentru a realiza imaginea; acest lucru ar putea funcționa mai bine pentru dvs. dacă nu puteți face autentificarea funcțională.
Apoi, trebuie să creați un serviciu Cloud Run cu această imagine de andocare.
Deschideți Cloud Run și faceți clic pe „Creați serviciu”

Denumiți și reglați setările. Trebuie să dați serviciului un nume și să configurați alte câteva setări:

Cel mai bine este să alegeți o regiune care este aproape de locul în care locuiește cea mai mare parte a publicului pentru site-urile dvs. Verificarea vitezei site-ului pentru un site din Marea Britanie din Tokyo nu vă va oferi aceleași rezultate ca și obținerea publicului dvs.
Pentru a putea apela acest serviciu din Foi de calcul Google, acesta trebuie să permită invocații neautentificate. Dacă sunteți îngrijorat de blocarea și securizarea serviciului pentru a împiedica alte persoane să îl folosească, va trebui să faceți acest lucru (de exemplu) verificând dintr-un secret API în cererea HTTP sau ceva de genul acesta.
Apoi trebuie să selectați containerul pe care l-ați făcut mai devreme. Puteți introduce numele dacă îl amintiți sau faceți clic pe „Selectați” și alegeți-l din meniu.

Apoi faceți clic pe „Afișați setările avansate”, deoarece există o configurare suplimentară de făcut.

Trebuie să măriți alocarea memoriei, deoarece testele Lighthouse necesită mai mult de 256 MB pentru a rula. Am ales 1GiB aici, dar este posibil să aveți nevoie de alocația maximă de 2GiB pentru unele site-uri.
Am constatat că reducerea concurenței la 1 îmbunătățește fiabilitatea serviciului. Aceasta înseamnă că Google va porni automat un container nou pentru fiecare solicitare HTTP. Dezavantajul este că acest lucru costă ceva mai mulți bani.
Faceți clic pe „Creați” și serviciul dvs. Cloud Run va fi gata în curând.

Puteți face un test rapid folosind adresa URL. De exemplu:
curl -v "https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app?url=https%3A%2F%2Fwww.example.com"
Sau accesați https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app?url=https%3A%2F%2Fwww.example.com în browserul dvs.
Următorul pas este să scrieți niște Appscript, astfel încât să puteți utiliza noul dvs. API din Foi de calcul Google.
Deschideți o nouă foaie Google și deschideți editorul Appscript.

Se va deschide o filă nouă în care vă puteți codifica funcția personalizată Foi de calcul Google.
Ideea cheie aici este să utilizați funcția Appscript UrlFetchApp pentru a efectua cererea HTTP către API-ul dvs. Unele coduri de bază pentru a face acest lucru arată astfel:
function LIGHTHOUSE(url) { const BASE_URL = "https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app" var request_url = BASE_URL+"?url="+encodeURIComponent(url) var response = UrlFetchApp.fetch(request_url) var result = JSON.parse(response.getContentText()) return(result.categories.performance.score * 100) }
Ultima linie returnează scorul general de performanță în foaie. Puteți să-l editați pentru a returna altceva. De exemplu, pentru a obține scorul SEO, folosiți result.categories.seo.score în schimb.
Sau puteți returna mai multe coloane de rezultate returnând o listă ca aceasta:
[result.categories.performance.score, result.categories.seo.score]
Salvați fișierul și apoi veți avea o funcție personalizată disponibilă în Foaia dvs. Google numită LIGHTTHOUSE.
Cel mai simplu mod de a începe cu acest lucru este să copiați exemplul meu Google Sheet și apoi să actualizați singur codul pentru a indica propriul API și pentru a returna rezultatele Lighthouse care vă interesează cel mai mult.
Îmbunătățiți-vă cunoștințele privind foaia de calcul
Lucrul minunat al acestei metode este că poate funcționa pentru orice poate fi înfășurat într-un container Docker și poate returna un rezultat în termen de 30 de secunde. Din păcate, funcțiile personalizate Foi de calcul Google au un timp de expirare, astfel încât nu veți avea suficient timp pentru a instrui un algoritm masiv de învățare profundă, dar asta vă lasă totuși multe lucruri pe care le puteți face.
Folosesc un proces foarte asemănător pentru Forumul meu de prognoză Google Sheets, dar în loc să returnez un scor Lighthouse, returnează o prognoză automată de învățare automată pentru orice număr ați introdus.
Posibilitățile pentru acest tip de lucruri sunt cu adevărat interesante, deoarece în Search Marketing avem o mulțime de oameni care sunt foarte buni cu foile de calcul. Vreau să văd ce pot face atunci când își pot folosi toate cunoștințele despre foaia de calcul și le pot îmbunătăți prin învățarea automată.
Opiniile exprimate în acest articol sunt cele ale autorului invitat și nu neapărat motorul de căutare. Autorii personalului sunt enumerați aici.