چگونه نمادهای Lighthouse را با عملکرد سفارشی در Google Sheets نشان دهیم

thumbnail

اتوماسیون و یادگیری ماشین ظرفیت فوق العاده ای برای کمک به همه ما در بازاریابی دارند. اما در حال حاضر بسیاری از این ابزارها برای افرادی که نمی توانند کدگذاری کنند یا کمی می توانند کدگذاری کنند اما با آنها راحت نیستند ، غیرقابل دسترسی هستند.

آنچه اغلب اتفاق می افتد این است که در نهایت یک یا دو نفر در دفتر هستند که از نوشتن و ویرایش کد راحت هستند و سپس این افراد اسکریپت ها و دفترچه هایی را تولید می کنند که دیگران اداره می کنند. گردش کار کمی شبیه این است:

من یک روش ساده برای ساده سازی این گردش کار به شما نشان خواهم داد تا مراحلی را که افراد برای اجرای اسکریپت و قالب بندی خروجی نیاز دارند حذف کنید. درعوض آنها می توانند اتوماسیون را مستقیماً از داخل Google Sheets اجرا کنند.

مثالی که به شما نشان خواهم داد مربوط به یک تابع سفارشی Sheets است که نمره Lighthouse را برای یک URL مانند این GIF برمی گرداند:

روشی که به شما نشان خواهم داد تنها روش انجام این کار نیست ، اما روش بسیار کلی تری را نشان می دهد که می تواند برای بسیاری از موارد از جمله الگوریتم های یادگیری ماشین استفاده شود.

دو قسمت وجود دارد:

  1. یک برنامه Google Cloud Run که کارهای پیچیده ای را انجام می دهد (در این مورد یک آزمایش Lighthouse را انجام دهید) و به درخواست های HTTP پاسخ می دهد.
  2. یک عملکرد سفارشی Appscript که درخواست های API شما را در مرحله 1 ایجاد می کند و نتایج را به Google Sheet باز می گرداند.

برنامه های ابری

Cloud Run یک سرویس Google است که یک تصویر docker ارائه می دهد و شما آن را از طریق HTTP در دسترس قرار می دهد. شما فقط در صورت درخواست HTTP پرداخت می کنید ، بنابراین برای سرویسی مانند این که 24/7 استفاده نمی شود بسیار ارزان است. هزینه واقعی به میزان استفاده شما بستگی دارد ، اما برای انجام هزاران آزمایش من کمتر از 1 دلار در ماه تخمین می زنم.

اولین کاری که باید انجام دهیم ساخت تصویر Docker است که در صورت درخواست HTTP از آن ، تجزیه و تحلیل Lighthouse را انجام می دهد. خوشبختانه برای ما برخی اسناد و مدارک وجود دارد که نشان می دهد چگونه می توان ممیزی Lighthouse را به طور برنامه ای در Github انجام داد. کد پیوندی به جای اینکه پاسخ را از طریق HTTP برگرداند ، تجزیه و تحلیل را در یک فایل ذخیره می کند ، اما با جمع بندی کامل موارد در یک برنامه Express مانند این ، حل این مشکل آسان است:

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}`);
});

این کد را به عنوان index.js ذخیره کنید.

سپس شما همچنین به فایلی به نام package.json نیاز دارید که نحوه نصب برنامه فوق و یک Dockerfile را توصیف می کند تا بتوانیم همه چیز را در Docker جمع کنیم. تمام پرونده های کد در 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" ]

تصویر docker را بسازید و سپس می توانید موارد را به صورت محلی روی رایانه خود آزمایش کنید مانند این:

مطالب مرتبط  پیش بینی هزینه و درآمد جستجوی پرداخت شده

ابتدا تصویر را شروع کنید:

docker run -p 8080:8080 lighthouse-sheets

و سپس آزمایش کنید که آیا کار می کند:

curl -v "localhost:8080?url=https%3A%2F%2Fwww.example.com"

یا از localhost: 8080؟ url = https٪ 3A٪ 2F٪ 2Fwww.example.com در مرورگر خود بازدید کنید. شما باید JSON زیادی ببینید.

مرحله بعدی انتقال تصویر خود به رجیستری Google Container است. برای من ، این یک دستور ساده است:

docker push gcr.io/MY_PROJECT_ID/lighthouse-sheets

اما ممکن است لازم باشد قبل از انجام این کار ابتدا احراز هویت داکر را تنظیم کنید. یک روش جایگزین استفاده از Google Cloud Build برای ساختن تصویر است. اگر نتوانید تأیید اعتبار را انجام دهید ، این ممکن است برای شما بهتر باشد.

در مرحله بعدی شما باید یک سرویس Cloud Run را با این تصویر docker ایجاد کنید.

Cloud Run را باز کنید و روی “ایجاد سرویس” کلیک کنید

تنظیمات را نامگذاری و تنظیم کنید. شما باید نام سرویس خود را بگذارید و چند تنظیم دیگر را پیکربندی کنید:

بهتر است منطقه ای را انتخاب کنید که نزدیک به محل زندگی بیشتر مخاطبان سایت های شما باشد. بررسی سرعت سایت برای یک سایت بریتانیایی از توکیو نتایج مشابهی را که مخاطبان شما می گیرند به شما نمی رساند.

برای اینکه شما از طریق Google Sheets با این سرویس تماس بگیرید ، باید فراخوانی های غیرمجاز را مجاز کنید. اگر نگران قفل شدن و ایمن کردن سرویس برای جلوگیری از استفاده افراد دیگر هستید ، مجبورید این کار را با (به عنوان مثال) بررسی از یک راز API در درخواست HTTP یا مواردی از این دست انجام دهید.

بعد باید ظرفی را که قبلاً درست کرده اید انتخاب کنید. اگر نام آن را به یاد بیاورید می توانید تایپ کنید یا “انتخاب” را کلیک کنید و آن را از فهرست انتخاب کنید.

سپس روی “نمایش تنظیمات پیشرفته” کلیک کنید زیرا پیکربندی دیگری برای انجام وجود دارد.

شما باید تخصیص حافظه را افزایش دهید زیرا آزمایشهای Lighthouse برای اجرا به بیش از 256 مگابایت نیاز دارند. من در اینجا 1GiB را انتخاب کرده ام اما ممکن است برای برخی سایت ها به حداکثر میزان 2GiB نیاز داشته باشید.

مطالب مرتبط  گزارش وب Google Spam: عملکردهای مرتبط با renegade ، محتوای تولید شده توسط خودکار را کاهش می دهد

من دریافتم که کاهش همزمانی به 1 قابلیت اطمینان سرویس را بهبود می بخشد. این بدان معناست که Google به طور خودکار ظرف جدیدی را برای هر درخواست HTTP راه اندازی می کند. نکته منفی این است که این هزینه کمی بیشتر است.

روی “ایجاد” کلیک کنید و سرویس Cloud Run شما به زودی آماده می شود.

با استفاده از URL می توانید تست سریع آن را انجام دهید. مثلا:

curl -v "https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app?url=https%3A%2F%2Fwww.example.com"

یا از https://lighthouse-sheets-public-v4e5t2rofa-nw.a.run.app؟url=https٪3A٪2F٪2Fwww.example.com در مرورگر خود بازدید کنید.

مرحله بعدی نوشتن برخی از Appscript است تا بتوانید از API جدید خود از Google Sheets استفاده کنید.

Google Sheet جدیدی را باز کنید و ویرایشگر Appscript را باز کنید.

با این کار یک برگه جدید باز می شود که در آن می توانید عملکرد سفارشی Google Sheets خود را کد کنید.

ایده اصلی در اینجا استفاده از عملکرد Appscript UrlFetchApp برای انجام درخواست HTTP به API شما است. برخی از کد های اساسی برای انجام این کار به صورت زیر است:

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)
}

آخرین خط ، امتیاز عملکرد کلی را به برگه برمی گرداند. می توانید برای برگرداندن چیز دیگری ویرایش کنید. به عنوان مثال برای گرفتن نمره SEO به جای آن از result.categories.seo.score استفاده کنید.

یا می توانید چندین ستون از نتایج را با برگرداندن لیستی مانند این برگردانید:

[result.categories.performance.score, result.categoryies.seo.score]

فایل را ذخیره کنید و سپس عملکرد سفارشی در Google Sheet خود با نام LIGHTHOUSE در دسترس خواهید داشت.

ساده ترین راه برای شروع با این کار کپی کردن مثال من از Google Sheet و سپس به روزرسانی کد برای نشان دادن به API خود و بازگرداندن نتایج Lighthouse است که بیشتر به آن علاقه دارید.

دانش فنی صفحه گسترده خود را افزایش دهید

نکته قابل توجه در مورد این روش این است که این روش می تواند برای هر چیزی که می تواند در یک ظرف Docker بسته بندی شود مفید باشد و نتیجه را در عرض 30 ثانیه برگرداند. متأسفانه توابع سفارشی Google Sheets مهلت زمانی دارند بنابراین شما مدت کافی برای آموزش برخی الگوریتم های یادگیری عمیق را نخواهید داشت ، اما با این وجود کارهای زیادی می توانید انجام دهید.

من از فرایند بسیار مشابهی برای Google Sheets addon Forecast Forge استفاده می کنم ، اما به جای بازگرداندن نمره Lighthouse ، آن را برای هر شماره ای که قرار می دهید پیش بینی یادگیری ماشین را برمی گرداند.

امکان این نوع کارها وجود دارد واقعاً هیجان انگیز است زیرا در جستجوی بازاریابی افراد زیادی داریم که با صفحات گسترده بسیار خوب هستند. من می خواهم ببینم وقتی آنها می توانند از تمام دانش صفحه گسترده خود استفاده کرده و آن را با یادگیری ماشین افزایش دهند ، چه کاری می توانند انجام دهند.

پست نحوه نشان دادن امتیازات فانوس دریایی در Google Sheets با عملکرد سفارشی اولین بار در Search Engine Land ظاهر شد.

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

Back To Top