Jump to content


ResidentialBusiness

Administrators
  • Posts

    7,111
  • Joined

  • Last visited

Everything posted by ResidentialBusiness

  1. American Airlines passenger jet collided with army helicopter over Potomac RiverView the full article
  2. We may earn a commission from links on this page. Deal pricing and availability subject to change after time of publication. For those looking for affordable smart security without monthly fees, the TP-Link Tapo D225 Video Doorbell is now $79.99 (down from $99.99). It covers all the basics, plus a few features that even pricier models skip, earning itself an Editors’ Choice award from PCMag. At about 6 inches tall, the Tapo D225 isn’t the slimmest doorbell out there, but it’s built to handle the elements with an IP66 water-resistant rating. And should someone try to steal your doorbell, its built-in 98dB siren is loud enough to scare off intruders. Tapo TP-Link Smart Video Doorbell Camera with Chime, Battery or Wired, 2K QHD Color Night Vison, 180° Ultra-Wide Head-to-Toe View, Ring Call, Smart AI Detection, 2-Way Audio, Up to 512 GB SD, D225 $79.99 at Amazon /images/amazon-prime.svg $99.99 Save $20.00 Get Deal Get Deal $79.99 at Amazon /images/amazon-prime.svg $99.99 Save $20.00 Power options are flexible. You can either go battery-powered (with up to eight months per charge) or hardwire it with your existing wiring (8-24V) and record 24/7 footage. During the day, colors look sharp and well-saturated. At night, the black-and-white vision holds up well, though the color night vision isn’t as vibrant as daytime footage (but that’s typical for many cameras in this range), notes this PCMag review. Its 2K camera (20fps) with a 180-degree field of view gives you a full head-to-toe image of whoever’s at your door—its intelligent motion alerts accurately distinguish between people, vehicles, pets, and packages, helping to cut down on unnecessary pings. Plus, it comes with a plug-in chime, so you don’t have to rely on phone notifications alone. Unlike many video doorbells at this price, the Tapo D225 supports local storage with a microSD slot (up to 512GB, sold separately), letting you save footage without a cloud subscription. If you prefer cloud storage, subscribing to Tapo Care Premium ($3.49/month) gives you 30 days of video history for one camera. The doorbell connects via 2.4GHz wifi and works with Alexa and Google Assistant, though it doesn’t support Apple HomeKit. However, if you use IFTTT, it can integrate with other smart home devices for added automation. You can manage and control the D225 using the TP-Link Tapo mobile app, including streaming live video, recording manually, setting motion zones, using two-way audio, enabling motion tagging, and more. View the full article
  3. SEO analysis can be time-consuming, but automating the process helps eliminate repetitive tasks and speeds up important website optimizations. This guide will show you how to build a custom tool using Google Sheets, Google Search Console (GSC), and the ChatGPT API to streamline SEO audits and gain AI-powered insights. With this tool, you’ll be able to: Automate GSC data retrieval for faster analysis. Use AI to generate actionable SEO recommendations. The plan? You’ll select a URL from a GSC-connected domain, enter your ChatGPT API key, inspect the page, and run an AI-driven analysis – all within Google Sheets. What SEO analysis are we automating? Once set up, this tool will allow you to quickly access key SEO data from GSC, including keyword rankings, referring URLs, last crawl date, and indexing status in robots.txt. ChatGPT enhances the process by analyzing and providing recommendations for: Title tags. Meta descriptions. Heading tags. Content. Keyword placement. Internal linking. Mobile optimization. Local SEO. Schema markup. While this script won’t cover everything, it delivers detailed page insights in seconds, saving you hours of manual work. You can then review the recommendations and decide which optimizations to implement. 8 steps to set up your own GSC custom tool + script Setting up your script may initially feel overwhelming, but follow each step carefully and copy the script to ensure everything works. You’ll need a few things to get started: ChatGPT API key. Google Sheets. Google Search Console (with linked properties). Google Cloud Console data project. Next, I’ll guide you through my eight-step process to get this “tool” up and running. Step 1: Create the Google Sheet for your tool If you have a Google account, this is as simple as following these steps: Open Google Drive. Go to the folder where you want to place your tool. Right-click on the background. Choose Google Sheets > Blank spreadsheet. You can rename the Sheet to anything you like, but I chose the following: GSC Custom Tool. Step 2: Populate your sheet Populate the sheet by following these steps carefully: Add the words “Select GSC property” to A1. Add the words “Select a URL” to A2. Move to A15 and add “Inspection Results.” Underneath this, in order from A15 to A25, add the following: URL: Coverage: Robots.txt: Indexing State: Last Crawled: Google Canonical: User Canonical: Mobile Usability: Rich Results Eligibility: Referring URLs: In D1, you’ll paste your ChatGPT API key. If you don’t have this key, please go to the link above and be sure to get one for this tool to work. Add “AI Analysis Result” to F1 and “Prompt Sent to ChatGPT” to G1. Now, we need to merge a few rows in both of these columns. You’ll merge F2 – F30 and G2 – G30 separately, by following these steps: Select the rows to merge. Go to Format > Merge cells > Merge vertically. Repeat this step for the F and G rows you need to merge. Step 3: Create a Google Cloud project Create a Google Cloud Console data project for the tool. Once set up, create a new project named “GSC Custom Tool.” You can do this by going to Select Project > New Project and filling in the information just like in the screenshot above. Click Create when you’re done naming the project. Now, let’s connect the Google Search Console API to your project. Go to the search bar and type “Google Search Console API,” select it, and then hit Enable on the next screen. We still have a lot to do and will revisit this project shortly. Step 4: Create an App Script Integrate Apps Script into your newly created Google Sheets file. To do so, open your file, then go to Extensions > Apps Script. Copy and paste the code I’ve created below. (You can do this by selecting the code inside the window and hitting CTRL + C. Go back into your Apps Script and hit CTRL + V to paste the code in.) Hit OK > Save project > Run. Google will prompt you to review all permissions and select the corresponding account with all your Google Search Console data linked. Dig deeper: 5 Python scripts for automating SEO tasks Get the newsletter search marketers rely on. Business email address Sign me up! Processing... See terms. Step 5: Add access credentials Return to your Google Cloud Console to make further adjustments. Click on Credentials on the left side of the screen: Click on + Create Credentials at the top of the screen and select OAuth client ID. Go to Configure Consent Screen and select External. Create the screen and then enter your: App name. Support email (linked to the GSC account). Developer contact information. Save and continue to the next screen, which says Add or Remove Scopes. Select Google Search Console API scopes and update. Then, Save and continue. Add the users you want to grant access to, then click Save and continue. Step 6: Change to a Google Cloud project for GSC data Click the hamburger icon and go to Cloud overview > Dashboard. You want to copy over your Project number, which is on the page. Navigate to the Project number, select it and copy it using CTRL + C. Head over to your Google Sheet file and click on the gear icon that says Project Settings. Paste your project number into the text box and click Set project. Step 7: Name your Google Apps Script Add a name for your script to keep things organized. To do this, go to Project History, click on the Untitled project toward the top of the screen, and enter “GSC Custom Tool.” Step 8: Edit the manifest file You’ll now return to your Project Settings and click Show “appsscript.json” in the editor. Inside the Editor, go to appsscript.json and replace everything in the file with the code below: { "timeZone": "America/New_York", "dependencies": {}, "exceptionLogging": "STACKDRIVER", "oauthScopes": [ "https://www.googleapis.com/auth/webmasters", "https://www.googleapis.com/auth/webmasters.readonly", "https://www.googleapis.com/auth/script.external_request", "https://www.googleapis.com/auth/spreadsheets", "https://www.googleapis.com/auth/spreadsheets.currentonly" ], "runtimeVersion": "V8" } Once you’ve pasted everything in, you’ll go to the Code.js file and paste this code: // Store the OAuth token and logs in script properties const scriptProperties = PropertiesService.getScriptProperties(); const OPENAI_URL = "https://api.openai.com/v1/chat/completions"; const SYSTEM_MESSAGE = { role: "system", content: "You are a helpful SEO expert." }; function log(message) { Logger.log(message); // Regular Apps Script logging const logs = scriptProperties.getProperty('customLogs') || ''; scriptProperties.setProperty('customLogs', logs + '\n' + message); // Append message to logs } function resetLogs() { scriptProperties.deleteProperty('customLogs'); // Clear logs for a new execution } function getLogs() { return scriptProperties.getProperty('customLogs') || 'No logs available.'; } function fetchOAuthToken() { let token = scriptProperties.getProperty('oauthToken'); if (!token) { token = ScriptApp.getOAuthToken(); scriptProperties.setProperty('oauthToken', token); log('OAuth token fetched and stored.'); } return token; } function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('Search Console') .addItem('Authorize GSC', 'promptReauthorization') .addItem('Fetch GSC Properties', 'fetchGSCProperties') .addItem('Inspect URL', 'inspectUrl') // Add the Inspect URL button .addItem('AI Analyze', 'aiAnalyze') // Add the AI Analyze button .addToUi(); } function promptReauthorization() { const ui = SpreadsheetApp.getUi(); const response = ui.alert( 'Re-authorize Script', 'Re-authorizing will revoke current permissions and require you to authorize again. Do you want to continue?', ui.ButtonSet.YES_NO ); if (response === ui.Button.YES) { try { scriptProperties.deleteProperty('oauthToken'); // Clear old token const token = fetchOAuthToken(); // Fetch and store new token log("OAuth Token: " + token); ui.alert('Authorization successful. No further action is required.'); } catch (e) { ui.alert('Authorization failed: ' + e.toString()); } } else { ui.alert('Re-authorization canceled.'); } } function fetchGSCProperties() { resetLogs(); const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const oauthToken = fetchOAuthToken(); const sites = getSitesListFromGSC(oauthToken); if (!sites || sites.length === 0) { SpreadsheetApp.getUi().alert('No GSC properties found. Please ensure you have access to GSC properties.'); return; } const siteUrls = ['Select a property'].concat( sites.map(site => site.siteUrl).sort() ); sheet.getRange('A1').setValue('Select GSC property').setFontWeight('bold'); sheet.getRange('B1').setDataValidation( SpreadsheetApp.newDataValidation() .requireValueInList(siteUrls, true) .build() ); sheet.getRange('B1').setValue('Select a property').setFontWeight('bold'); sheet.setColumnWidth(1, 150); sheet.setColumnWidth(2, 350); } let isProcessing = false; // Global flag to prevent recursive triggering function onEdit(e) { if (isProcessing) return; // Prevent re-entry during execution isProcessing = true; // Set flag to true try { resetLogs(); const sheet = e.source.getActiveSheet(); const range = e.range; // Always clear A3:D30 on edits to B1 or B2 if (range.getA1Notation() === 'B1' || range.getA1Notation() === 'B2') { sheet.getRange('A3:D30').clearContent(); sheet.getRange('F1:G30').clearContent(); if (range.getA1Notation() === 'B1') { const selectedProperty = range.getValue(); // Clear A2 and set loading state sheet.getRange('A2').setValue('Loading results...').setFontWeight('bold'); sheet.getRange('B2').clearContent(); if (selectedProperty === 'Select a property') { sheet.getRange('A2').clearContent(); sheet.getRange('B2').clearContent(); return; } const oauthToken = fetchOAuthToken(); const urls = getUrlsForProperty(selectedProperty, oauthToken); if (!urls || urls.length === 0) { sheet.getRange('A2').setValue('No URLs found').setFontWeight('bold'); sheet.getRange('B2').clearContent(); log(`No URLs found for property ${selectedProperty}`); return; } sheet.getRange('A2').setValue('Select a URL').setFontWeight('bold'); sheet.getRange('B2').setDataValidation( SpreadsheetApp.newDataValidation() .requireValueInList(['Select a URL'].concat(urls), true) .build() ); sheet.getRange('B2').setValue('Select a URL').setFontWeight('bold'); } if (range.getA1Notation() === 'B2') { const selectedProperty = sheet.getRange('B1').getValue(); const selectedUrl = range.getValue(); if (selectedUrl === 'Select a URL') { return; } sheet.getRange('A3').setValue('Loading keywords...').setFontWeight('bold'); const oauthToken = fetchOAuthToken(); const keywords = getTopKeywordsForUrl(selectedProperty, selectedUrl, oauthToken); if (!keywords || keywords.length === 0) { sheet.getRange('A3').setValue('No keywords found').setFontWeight('bold'); log(`No keywords found for URL ${selectedUrl}`); return; } // Populate keywords and metrics sheet.getRange('A3:D12').clearContent(); // Clear any loading message keywords.forEach((keyword, index) => { if (index < 10) { sheet.getRange(`A${3 + index}`).setValue(keyword.query).setFontWeight('bold'); sheet.getRange(`B${3 + index}`).setValue(keyword.clicks); sheet.getRange(`C${3 + index}`).setValue(keyword.impressions); sheet.getRange(`D${3 + index}`).setValue(keyword.ctr); } }); } } } catch (error) { log(`Error in onEdit: ${error}`); } finally { isProcessing = false; // Reset the flag after execution } } function getApiRequestDetails(selectedProperty) { const payload = { startDate: getThreeMonthsAgo(), endDate: getToday(), dimensions: ["page"], rowLimit: 100, orderBy: [{ fieldName: "clicks", sortOrder: "DESCENDING" }] }; const apiUrl = `https://www.googleapis.com/webmasters/v3/sites/${encodeURIComponent(selectedProperty)}/searchAnalytics/query`; return { url: apiUrl, payload: payload }; } function getSitesListFromGSC(oauthToken) { try { const url = 'https://www.googleapis.com/webmasters/v3/sites'; const headers = { 'Authorization': 'Bearer ' + oauthToken, 'Content-Type': 'application/json' }; const options = { method: 'get', headers: headers, muteHttpExceptions: true }; const response = UrlFetchApp.fetch(url, options); log(`Response Code: ${response.getResponseCode()}`); log(`Response Content: ${response.getContentText()}`); if (response.getResponseCode() === 200) { const json = JSON.parse(response.getContentText()); return json.siteEntry || []; } else { throw new Error(`Error fetching data: ${response.getResponseCode()} - ${response.getContentText()}`); } } catch (e) { log(`Error: ${e.toString()}`); return []; } } function getUrlsForProperty(property, oauthToken) { try { const apiUrl = `https://www.googleapis.com/webmasters/v3/sites/${encodeURIComponent(property)}/searchAnalytics/query`; log(`API URL: ${apiUrl}`); log(`OAuth Token: ${oauthToken}`); const payload = { startDate: getThreeMonthsAgo(), endDate: getToday(), dimensions: ["page"], rowLimit: 100, orderBy: [{ fieldName: "clicks", sortOrder: "DESCENDING" }] }; log(`Payload: ${JSON.stringify(payload)}`); const headers = { Authorization: `Bearer ${oauthToken}`, "Content-Type": "application/json" }; const options = { method: "post", contentType: "application/json", headers: headers, payload: JSON.stringify(payload), muteHttpExceptions: true }; const response = UrlFetchApp.fetch(apiUrl, options); log(`Response Code: ${response.getResponseCode()}`); log(`Response: ${response.getContentText()}`); if (response.getResponseCode() === 200) { const json = JSON.parse(response.getContentText()); return json.rows ? json.rows.map(row => row.keys[0]) : []; } else { throw new Error(`Failed to fetch data: ${response.getResponseCode()} - ${response.getContentText()}`); } } catch (e) { log(`Error: ${e.toString()}`); return []; } } function getTopKeywordsForUrl(property, url, oauthToken) { try { const apiUrl = `https://www.googleapis.com/webmasters/v3/sites/${encodeURIComponent(property)}/searchAnalytics/query`; log(`API URL: ${apiUrl}`); log(`OAuth Token: ${oauthToken}`); const payload = { startDate: getThreeMonthsAgo(), endDate: getToday(), dimensions: ["query"], dimensionFilterGroups: [ { filters: [ { dimension: "page", operator: "equals", expression: url } ] } ], rowLimit: 10, orderBy: [{ fieldName: "clicks", sortOrder: "DESCENDING" }] }; log(`Payload: ${JSON.stringify(payload)}`); const headers = { Authorization: `Bearer ${oauthToken}`, "Content-Type": "application/json" }; const options = { method: "post", contentType: "application/json", headers: headers, payload: JSON.stringify(payload), muteHttpExceptions: true }; const response = UrlFetchApp.fetch(apiUrl, options); log(`Response Code: ${response.getResponseCode()}`); log(`Response: ${response.getContentText()}`); if (response.getResponseCode() === 200) { const json = JSON.parse(response.getContentText()); return json.rows ? json.rows.map(row => ({ query: row.keys[0], clicks: row.clicks, impressions: row.impressions, ctr: row.ctr })) : []; } else { throw new Error(`Failed to fetch data: ${response.getResponseCode()} - ${response.getContentText()}`); } } catch (e) { log(`Error: ${e.toString()}`); return []; } } function getToday() { const today = new Date(); return today.toISOString().split("T")[0]; } function getThreeMonthsAgo() { const date = new Date(); date.setMonth(date.getMonth() - 3); return date.toISOString().split("T")[0]; } function inspectUrl() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const url = sheet.getRange('B2').getValue(); const property = sheet.getRange('B1').getValue(); // Clear previous inspection results in A15:D30 sheet.getRange('A15:D30').clearContent(); sheet.getRange('A15').setValue('Inspecting...').setFontWeight('bold'); if (!url || url === 'Select a URL') { SpreadsheetApp.getUi().alert('Please select a valid URL in cell B2 before inspecting.'); sheet.getRange('A15').setValue('No URL selected').setFontWeight('bold'); return; } const oauthToken = fetchOAuthToken(); try { const result = callUrlInspectionApi(property, url, oauthToken); // Extract fields from the response const indexStatus = result.indexStatusResult || {}; const mobileUsability = result.mobileUsabilityResult || {}; const richResults = result.richResultsInfo || {}; const referringUrls = indexStatus.referringUrls?.join(', ') || 'None'; // Populate inspection results in the sheet sheet.getRange('A15').setValue(`Inspection Results`).setFontWeight('bold'); sheet.getRange('A16').setValue(`URL:`).setFontWeight('bold'); sheet.getRange('B16').setValue(url); sheet.getRange('A17').setValue(`Coverage:`).setFontWeight('bold'); sheet.getRange('B17').setValue(indexStatus.coverageState || 'Unknown'); sheet.getRange('A18').setValue(`Robots.txt:`).setFontWeight('bold'); sheet.getRange('B18').setValue(indexStatus.robotsTxtState || 'Unknown'); sheet.getRange('A19').setValue(`Indexing State:`).setFontWeight('bold'); sheet.getRange('B19').setValue(indexStatus.indexingState || 'Unknown'); sheet.getRange('A20').setValue(`Last Crawled:`).setFontWeight('bold'); sheet.getRange('B20').setValue(indexStatus.lastCrawlTime || 'Not Available'); sheet.getRange('A21').setValue(`Google Canonical:`).setFontWeight('bold'); sheet.getRange('B21').setValue(indexStatus.googleCanonical || 'Unknown'); sheet.getRange('A22').setValue(`User Canonical:`).setFontWeight('bold'); sheet.getRange('B22').setValue(indexStatus.userCanonical || 'Unknown'); sheet.getRange('A23').setValue(`Mobile Usability:`).setFontWeight('bold'); sheet.getRange('B23').setValue(mobileUsability.verdict || 'Unknown'); sheet.getRange('A24').setValue(`Rich Results Eligibility:`).setFontWeight('bold'); sheet.getRange('B24').setValue(richResults.verdict || 'Unknown'); sheet.getRange('A25').setValue(`Referring URLs:`).setFontWeight('bold'); sheet.getRange('B25').setValue(referringUrls); // Log and alert full response for debugging const fullResponse = JSON.stringify(result, null, 2); log(`Full Inspection Result: ${fullResponse}`); //SpreadsheetApp.getUi().alert(`Inspection Completed. Full Response:\n\n${fullResponse}`); } catch (error) { sheet.getRange('A15').setValue('Inspection Failed').setFontWeight('bold'); log(`Error inspecting URL: ${error.message}`); SpreadsheetApp.getUi().alert(`Error inspecting URL: ${error.message}\n\nLogs:\n${getLogs()}`); } } function callUrlInspectionApi(property, url, oauthToken) { const apiUrl = 'https://searchconsole.googleapis.com/v1/urlInspection/index:inspect'; const payload = { siteUrl: property, inspectionUrl: url, languageCode: 'en-US' }; const headers = { Authorization: `Bearer ${oauthToken}`, 'Content-Type': 'application/json' }; const options = { method: 'post', contentType: 'application/json', headers: headers, payload: JSON.stringify(payload), muteHttpExceptions: true }; log(`API URL: ${apiUrl}`); log(`Payload: ${JSON.stringify(payload)}`); try { const response = UrlFetchApp.fetch(apiUrl, options); const responseCode = response.getResponseCode(); const responseText = response.getContentText(); log(`Response Code: ${responseCode}`); log(`Response Content: ${responseText}`); if (responseCode === 200) { const jsonResponse = JSON.parse(responseText); if (jsonResponse && jsonResponse.inspectionResult) { return jsonResponse.inspectionResult; } else { log(`Unexpected API Response Structure: ${responseText}`); throw new Error('Unexpected API response format. "inspectionResult" field is missing.'); } } else { log(`Failed API Call: ${responseText}`); throw new Error(`Failed to inspect URL. Response Code: ${responseCode}. Response: ${responseText}`); } } catch (error) { log(`Error during API call: ${error}`); throw new Error(`Error inspecting URL: ${error.message}`); } } function callChatGPT(prompt, temperature = 0.9, maxTokens = 800, model = "gpt-3.5-turbo") { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const secretKey = sheet.getRange('D1').getValue().trim(); // Retrieve the OpenAI API key from D1 if (!secretKey) { throw new Error("API Key is missing in cell D1. Please provide a valid OpenAI API key."); } const payload = { model: model, messages: [ SYSTEM_MESSAGE, { role: "user", content: prompt } ], temperature: temperature, max_tokens: maxTokens }; const options = { method: "POST", headers: { "Content-Type": "application/json", "Authorization": "Bearer " + secretKey }, payload: JSON.stringify(payload) }; try { const response = UrlFetchApp.fetch(OPENAI_URL, options); const responseData = JSON.parse(response.getContentText()); if (responseData.choices && responseData.choices[0] && responseData.choices[0].message) { return responseData.choices[0].message.content.trim(); } else { log("Unexpected response format from OpenAI: " + JSON.stringify(responseData)); return "Sorry, I couldn't process the request."; } } catch (error) { log("Error calling OpenAI API: " + error); return "Sorry, there was an error processing your request."; } } function aiAnalyze() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const url = sheet.getRange('B2').getValue(); const keywords = sheet.getRange('A3:A12').getValues().flat().filter(Boolean); // Get non-empty keywords const inspectionData = sheet.getRange('A16:B20').getValues(); // Validate input fields if (!url || keywords.length === 0 || inspectionData.some(row => row.length < 2 || !row[0].trim() || !row[1].trim())) { SpreadsheetApp.getUi().alert("Ensure the following are filled before running AI Analyze:\n- URL in B2\n- Keywords in A3:A12\n- Inspection data in A16:B20"); return; } // Prepare the prompt for ChatGPT const prompt = ` Analyze this URL: ${url} Also the view-source version from: ${url} against these keywords: ${keywords.join(", ")} Considering the URL inspection data from Google Search Console: ${inspectionData.map(row => `${row[0]}: ${row[1]}`).join("\n")} Suggest a short list of specific recommendations on how I can improve the page's SEO. Make sure the recommendations include details such as change this to that, or add something, etc... Be concrete with SEO recommendations. `; // Display the prompt in G1 sheet.getRange('G1').setValue("Prompt Sent to ChatGPT").setFontWeight("bold"); sheet.getRange('G2:G30').clearContent(); // Clear previous content in column G sheet.getRange('G2:G30').merge(); // Merge cells G2:G30 sheet.getRange('G2').setValue(prompt).setVerticalAlignment("top"); // Add the prompt and align to top sheet.setColumnWidth(7, 400); // Set column G width to 400px // Call ChatGPT API const analysisResult = callChatGPT(prompt); // Display the result in the spreadsheet (Column F) sheet.getRange('F1').setValue("AI Analysis Result").setFontWeight("bold"); sheet.getRange('F2:F30').clearContent(); // Clear previous content sheet.getRange('F2:F30').merge(); // Merge the cells sheet.getRange('F2').setValue(analysisResult).setVerticalAlignment("top"); // Add the AI result and align to top sheet.setColumnWidth(6, 400); // Set column F width to 400px // Log the response log("AI Analysis Completed: " + analysisResult); } Once done, go back to your sheets, refresh and use the new Search Console > Fetch GSC Properties. Follow the prompts until it asks you to select the account you’re using and to ultimately select the app you plan on using. If everything goes well, you can move on to the exciting part of putting it together and running your first SEO analysis using your new script. Putting our Sheets, GSC and ChatGPT tool together You’ve done a lot until now, but it’s time to see the tool in action. Here’s how it works: Go to Search Console > Authorize GSC. Be sure that you’re using the account to which the domain’s GSC is connected; otherwise, it will not work. Go to Search Console > Fetch GSC properties. You’ll now notice that the Select GSC property at B1 on the Sheet is populated. Select the domain you want to analyze and then select the URL from B1 on the Sheet. Go to Search Console > Inspect URL. The Inspection Results on the Sheet will populate and offer you a wealth of information about the page, such as the coverage, last crawl date, and more. Finally, we’ll go back one last time and do the following: Go to Search Console > AI Analyze. All of the information in the “AI Analysis Result” will now populate, offering you insights into the page’s key elements and telling you the exact steps that you can take to improve the page. I don’t recommend following the directions blindly, but they do offer actionable steps that you can follow to strengthen the page. If you want to change the ChatGPT prompt to add your own custom data, go to cell G2, right underneath the heading that says “Prompt Sent to ChatGPT.” Bravo! You have a working script that can speed up your SEO analysis and make your day more actionable. Combining Sheets, GSC and ChatGPT has helped me become more efficient and allows me to spend more time optimizing and less analyzing thousands of pages. Experiment with the script and find new ways to make it your own. Dig deeper: 15 AI tools you should use for SEO View the full article
  4. Lender’s statement highlights issues with predictability that help explain its lingering valuation discountView the full article
  5. Eurosceptic junior coalition partner quits after PM’s push to implement energy directives from BrusselsView the full article
  6. A jet with 60 passengers and four crew members collided with an Army helicopter Wednesday while approaching the Ronald Reagan National Airport near Washington. The aircraft plummeted into the Potomac River, and multiple people were killed. The crash occurred in some of the most tightly controlled and monitored airspace in the world, just over 3 miles (5 kilometers) south of the White House and the U.S. Capitol. Here are some things to know about the collision: The crash The midair crash happened around 9 p.m. when a regional jet at the end of a flight from Wichita, Kansas, collided with a military helicopter on a training exercise, according to the Federal Aviation Administration. A few minutes before the jet was to land, air traffic controllers asked American Airlines Flight 5342 if it could land on a shorter runway, and the pilots agreed. Controllers cleared the jet to land and flight tracking sites showed the plane adjust its approach to the new runway. Less than 30 seconds before the crash, an air traffic controller asked a helicopter if it had the arriving plane in sight. The controller made another radio call to the helicopter moments later: “PAT 25 pass behind the CRJ.” There was no reply. Seconds after that, the two aircraft collided. The plane’s radio transponder stopped transmitting about 2,400 feet short of the runway, roughly over the middle of the Potomac. Emergency response Authorities were conducting a massive search-and-rescue operation. Inflatable boats were launched into the river and first responders set up light towers from the shore to illuminate the area. Helicopters from law enforcement agencies across the region also flew over the scene in a methodical search for bodies and survivors. Passengers and fatalities There was no official death toll announced at an early Thursday news conference, but a person familiar with the matter told The Associated Press there were multiple fatalities. The person was not authorized to publicly discuss details of the investigation and spoke on condition of anonymity. Sen. Roger Marshall of Kansas hinted that the number killed will be high. “When one person dies it’s a tragedy, but when many, many, many people die it’s an unbearable sorrow,” he said. Russian figure skaters Evgenia Shishkova and Vadim Naumov were aboard the plane, along with other Russian nationals, according to the Kremlin. Coaches, skaters and others had been in Wichita for the 2025 U.S. Figure Skating Championships, which concluded Sunday, and a development camp. Shishkova and Naumov were married and won a 1994 world championship in pairs figure skating. Airport Located along the Potomac River, just southwest of Washington, Reagan National is a popular choice because it’s much closer to the city than the larger Dulles International Airport. All takeoffs and landings from Reagan Airport were halted. It will reopen at 11 a.m. Thursday, the Federal Aviation Administration announced. Investigation Investigators will try to piece together the aircraft’s final moments before their collision, including contact with air traffic controllers as well as a loss of altitude by the passenger jet. Aircraft involved The helicopter was a UH-60 Blackhawk based at Fort Belvoir in Virginia, according to the U.S. Army. A crew of three soldiers were on board the helicopter, an Army official said. The other aircraft was a Canadian-made Bombardier CRJ-701 twin-engine jet and was manufactured in 2004. It can be configured to carry up to 70 passengers. History of fatal aircraft crashes Fatal crashes of commercial aircraft in the U.S. have become a rarity. The last was in 2009 near Buffalo, New York. All 45 passengers and the four crew members were killed when the Bombardier DHC-8 propeller plane crashed into a house. One person on the ground also was killed. The incident Wednesday recalled the crash of an Air Florida flight that plummeted into the Potomac on January 13, 1982, killing 78 people. That crash was attributed to bad weather. —Hallie Golden, Associated Press View the full article
  7. It should be as easy to cancel a service as it is to subscribe to it, and at long last, it's about to be. For anyone who's ever found themselves trapped in an endless maze of customer service calls trying to cancel a subscription—especially when the company doesn't want you to—relief is finally on the way. The Federal Trade Commission (FTC) has introduced a new rule that will require companies to make canceling subscriptions as simple as signing up for them. Here's what you need to know. The "Click to Cancel" ruleUnder the new FTC regulation, if you can sign up for a service online with a single click, companies must provide an equally straightforward cancellation process. No more lengthy phone calls, buried cancellation links, or complicated multi-step procedures. This consumer-friendly rule aims to eliminate what's known as "dark patterns," aka deceptive design practices that make it unnecessarily difficult to cancel subscriptions. What this means for youWhen the rule fully takes effect later this year on March 31, subscribers will have the right to: Cancel their subscriptions through the same method they used to sign up Access a simple cancellation mechanism that's easy to find and use Avoid mandatory conversations with retention specialists Receive clear confirmation when their subscription has been canceled While waiting for the new rule to be enforced, let's take a look at some strategies for managing and canceling unwanted subscriptions. Manage your subscriptions nowStart by reviewing your credit card and bank statements to identify all active subscriptions. You may be surprised to discover you're paying for services you rarely or never use. Create a spreadsheet or use a subscription tracking app to maintain an overview of your recurring payments. Here's our round-up of the best subscription managers for canceling services you aren’t actually using anymore. For immediate action, try these methods: Check your account settings on the service's website for cancellation options Search for "[Company Name] + cancel subscription" to find direct links Use the company's mobile app, which sometimes offers easier cancellation processes Email customer service with a clear, direct cancellation request Document all cancellation attempts, including screenshots and email correspondence Additionally, your bank or credit card company can be a powerful ally. Use your card issuer's subscription management tools, or contact your bank to stop automatic payments. Going forward, consider using virtual credit card numbers for new subscriptions, which allow you to control payment permissions. The bottom lineThe FTC's new rule is a major relief. While companies adjust to comply with these regulations, staying vigilant about your subscriptions and knowing your rights as a consumer remains essential. The days of frustrating cancellation experiences may be numbered, but until then, being proactive about managing your subscriptions is your best defense against unwanted charges. Protect yourself going forward by reading cancellation terms while signing up for new subscriptions, setting calendar reminders before free trials end, and keeping records of all cancellation confirmations. Remember that the most effective approach to subscription management is prevention: Before signing up for any new service, make sure you understand not just how to start it, but how to end it as well. View the full article
  8. The employees of bankrupt retailer Big Lots have had to live with a lot of uncertainty ever since the company announced in mid-December that it was going out of business and closing all its stores. Just over a week later, Big Lots announced that it had struck a deal with Gordon Brothers Retail Partners to transfer some Big Lots assets to Variety Wholesalers and other retailers. According to the announcement, that meant some Big Lots locations, between 200 and 400 stores, would stay open and operating, potentially saving thousands of jobs. Unfortunately, there’s yet no word on which Big Lots locations will continue to operate, leaving many Big Lots workers uncertain about their future employment. In mid-January, Gordon Brothers published a list of Big Lots leases that it was putting up for sale, suggesting that the stores on that list wouldn’t be among those saved. Now, Gordon Brothers has updated that list to include more stores, giving a little more insight into which locations are closed or going to close for good. Phase 2 of Big Lots lease sales A few weeks ago, Gordon Brothers published a list titled “New Market Locations Phase 1.” That list included hundreds of Big Lots locations with leases for sale. When a store’s lease is sold, the owner is looking for a buyer to move into the store’s location, freeing it from its rental obligations. The list included locations in 47 states, with Florida, New York, and Texas among the states with the most leases for sale. Now Gordon Brothers has released an updated list, titled “New Market Locations Phase 2.” The Phase 2 list includes many of the stores from the Phase 1 list but adds nearly 150 new locations, suggesting that these locations, too, will not be among the locations saved via the deal with Variety Wholesalers and other retailers. Among the states with the most additional stores marked for sale of their leases include Kentucky, Ohio, Pennsylvania, and Tennessee. When will the saved Big Lots stores be revealed? While the Phase 1 and Phase 2 lists give us a good indication that the stores on them will not be among those that are saved, many Big Lots employees and customers are anxiously awaiting information on which stores will pull through. Unfortunately, we may not have a definitive list for some time yet. As Fast Company previously reported, in a January bankruptcy court filing, Big Lots revealed that all parties were “working expeditiously to determine which [locations] can drive additional value to the estates or comprise the group of continuing Big Lots stores. However, the parties understandably require additional time to complete this analysis.” Big Lots asked the court to give it until April 7 to develop a list of stores that will continue to operate. View the full article
  9. Hackers use clickjacking to fool people into downloading malware or revealing confidential information. There’s usually a hidden frame over an innocuous web page. The malicious invisible frame gets activated when users click on the web page. Sensitive data can be stolen and accessed, resulting in reputational and financial harm for small businesses. Additionally, there are penalties associated with data protection laws such as The General Data Protection Regulation (GDPR). Implementing a content security policy frame offers some effective safeguards. What is Clickjacking? One common clickjacking technique includes the use of a decoy button or link. The user thinks they are clicking on a visible element, but they are actually interacting with a concealed malicious iframe. This could lead to the sharing of sensitive information or the activation of a hidden webcam without their knowledge. Common Types of Clickjacking Attacks Here are some clickjacking attack tactics. In the classic version of clickjacking attacks, a hacker places a transparent iframe over a web page. Some iframes that get used are barely noticeable because hackers can set the opacity to zero on the target website. Some clickjacking attacks can manipulate a cursor. Some attackers present a video or survey featuring a concealed malicious video player disguised beneath an innocent-looking user interface. A notable instance of this is observed in situations where Google publishers use clickjacking. How Clickjacking Can Affect Your Business This can lead to hackers getting access to sensitive business data. Stolen information can be used for identity theft or sold on the dark web. Understanding more about cybersecurity terms can be beneficial in recognizing and preventing such threats. Severe Breaches Other impacts on businesses include clickjacking, which can serve as an entry point for more serious breaches. Hackers can leverage clickjacking vulnerabilities to infiltrate business systems and redirect users to harmful pages. ErodeTrust Clickjacking can undermine trust in a small business, potentially leading to decreased revenue, increased customer churn, and damage to its reputation. Recognizing Clickjacking Here are a few things you should be looking for to recognize an attack. If clicking on a landing page redirects you to a different site, triggers downloads, or opens new tabs, you could be the victim of an attack. Frequent pop-ups on a website could be another clear indicator. It’s another red flag if your cursor is acting strangely, like it’s misaligned. Poor website performance is another element you should be looking at. Unresponsiveness and slower load times can be the result. Clickjacking Prevention Strategies Here are a few proven methods to prevent this problem. Don’t forget the security policy frame enhances security. The CSP is a security standard. Website owners who use it can tell which content is legitimate. It’s a great way to prevent an attack. Software updates are essential. That’s particularly true for plugins and web browsers. Remember to include patches for any security vulnerabilities that could be exploited. Remember to enable any built-in browser security features to protect against this issue. Utilizing the X-Frame-Options Header Frame-Ancestors Directive This controls which websites can embed content. Frame ancestors can list different domains that are allowed. It allows the resources that a browser can load for any given page. X-Frame-Options Header This tool can prevent click-jacking attacks by ensuring a page is not embedded into other websites. Developers can set it in their service configuration and or web application framework. Updating and Patching Web Applications Closing security gaps so you don’t visit malicious web pages through click-jacking is essential. Regularly updating modern web applications and browsers to ensure security policy features are current is necessary. Take advantage of software updates that include patches and update these regularly. Conducting a Clickjacking Test Performing a test to access a website’s vulnerability against attacks from invisible iframes means taking advantage of the following guide: You’ll need to understand the invisible iframe, which is one of the standard methods used. You can choose from several different test tools like OWASP. Next, create a test page that includes an embedded iframe. You can utilize automated scanners such as OWASP ZAP to assist you. Documenting all of your testing processes, findings, and vulnerabilities is essential. Consider tweaking your x frame options. Remember to schedule regular tests. New vulnerabilities are constantly emerging with time. AspectDescriptionPrevention StrategiesTools/Methods DefinitionClickjacking is a deceptive technique where a user is tricked into clicking on something different from what the user perceives.Be aware of the nature of clickjacking and educate employees.Security Awareness Training Common TargetsOften targets buttons, links on websites, and social media platforms.Regularly update and patch website and applications.Software Updates, Patches TechniqueInvolves layering a transparent iframe over a legitimate button or link.Implement a Content Security Policy (CSP) to control what content can be loaded on a page.Content Security Policy (CSP) Impact on BusinessCan lead to data theft, unauthorized actions, and security breaches.Conduct regular security audits and assessments.Security Audits, Risk Assessments Signs of ClickjackingUnexpected redirects, strange cursor behavior, unresponsive or slow website performance.Monitor web traffic and user activity for anomalies.Traffic Monitoring Tools Legal ConsequencesPossible non-compliance with data protection laws like GDPR due to data breaches.Ensure compliance with relevant data protection laws.Compliance Management Software Clickjacking VarietiesIncludes cursorjacking, likejacking (on social media), and filejacking (file download manipulation).Deploy anti-clickjacking measures like X-Frame-Options header.X-Frame-Options Header, Anti-Clickjacking Tools User Interface DefenseSecure the UI against unauthorized iframe overlays.Use frame busting scripts and ensure secure UI design.Frame Busting Scripts, Secure UI Design Response to IncidentsQuick identification and isolation of affected systems.Have an incident response plan in place.Incident Response Plan Long-term MitigationRegular updates to security policies and practices.Build a culture of cybersecurity awareness within the organization.Ongoing Employee Training, Policy Updates Best Practices in Web Page Design to Prevent Clickjacking Designing a landing page involves using X-frame options. There are three values you can set for this header. The value ‘Deny’ prevents your website’s pages from being displayed in an iframe, which is an effective way to safeguard against a clickjacking attack. The Content Security Policy (CSP) enables you to create a whitelist of sources from which you can download content, such as images, style sheets, and scripts. Responding to a Clickjacking Incident Here are the steps to take if your business is attacked. An immediate response is essential where you identify and isolate what systems are affected. You need to disable and remove any malicious code and identify involved parties. Reset session tokens and change passwords. Patch up any vulnerabilities and implement updates to your web platform and software. Over the long term, you need to update and implement a Content Security Policy and other headers like X-frame options. Building a Culture of Cybersecurity Awareness https://youtube.com/watch?v=_tz0O5-cndE%3Fsi%3DRO8tsQSMplZMDLdh Interactive training sessions are an excellent way to educate employees to prevent a clickjacking attack. Incorporate these sessions and others about cyber security threats into onboarding. FAQs: Clickjacking Here are some answers to frequently asked questions. What is a likejacking attack? This is a form of clickjacking where people are tricked into clicking the ‘Like’ button on Facebook or other social media platforms. Is clickjacking serious? This is serious because it can trick people into turning over confidential data or allowing access to their devices. Can clickjacking affect all types of websites? In technical terms, this type of attack can impact any website. Nevertheless, websites that use content security policy headers, x-frame options headers, and frame-busting scripts are more resilient to such threats. How do you avoid visiting a malicious page? Verify the URL before you click on it. Look for common tricks like misspellings or unusual domain extensions like .net instead of .com. Type the website address you want to visit in the address bar directly. How do security policy frame ancestors help in clickjacking defense? Content Security Policy has a frame-ancestors directive that controls the websites that can frame the content. It prevents hackers from using an iframe to mislead users. Image: Envato Elements, Depositphotos This article, "What is Clickjacking? How to Protect Your Business" was first published on Small Business Trends View the full article
  10. Hackers use clickjacking to fool people into downloading malware or revealing confidential information. There’s usually a hidden frame over an innocuous web page. The malicious invisible frame gets activated when users click on the web page. Sensitive data can be stolen and accessed, resulting in reputational and financial harm for small businesses. Additionally, there are penalties associated with data protection laws such as The General Data Protection Regulation (GDPR). Implementing a content security policy frame offers some effective safeguards. What is Clickjacking? One common clickjacking technique includes the use of a decoy button or link. The user thinks they are clicking on a visible element, but they are actually interacting with a concealed malicious iframe. This could lead to the sharing of sensitive information or the activation of a hidden webcam without their knowledge. Common Types of Clickjacking Attacks Here are some clickjacking attack tactics. In the classic version of clickjacking attacks, a hacker places a transparent iframe over a web page. Some iframes that get used are barely noticeable because hackers can set the opacity to zero on the target website. Some clickjacking attacks can manipulate a cursor. Some attackers present a video or survey featuring a concealed malicious video player disguised beneath an innocent-looking user interface. A notable instance of this is observed in situations where Google publishers use clickjacking. How Clickjacking Can Affect Your Business This can lead to hackers getting access to sensitive business data. Stolen information can be used for identity theft or sold on the dark web. Understanding more about cybersecurity terms can be beneficial in recognizing and preventing such threats. Severe Breaches Other impacts on businesses include clickjacking, which can serve as an entry point for more serious breaches. Hackers can leverage clickjacking vulnerabilities to infiltrate business systems and redirect users to harmful pages. ErodeTrust Clickjacking can undermine trust in a small business, potentially leading to decreased revenue, increased customer churn, and damage to its reputation. Recognizing Clickjacking Here are a few things you should be looking for to recognize an attack. If clicking on a landing page redirects you to a different site, triggers downloads, or opens new tabs, you could be the victim of an attack. Frequent pop-ups on a website could be another clear indicator. It’s another red flag if your cursor is acting strangely, like it’s misaligned. Poor website performance is another element you should be looking at. Unresponsiveness and slower load times can be the result. Clickjacking Prevention Strategies Here are a few proven methods to prevent this problem. Don’t forget the security policy frame enhances security. The CSP is a security standard. Website owners who use it can tell which content is legitimate. It’s a great way to prevent an attack. Software updates are essential. That’s particularly true for plugins and web browsers. Remember to include patches for any security vulnerabilities that could be exploited. Remember to enable any built-in browser security features to protect against this issue. Utilizing the X-Frame-Options Header Frame-Ancestors Directive This controls which websites can embed content. Frame ancestors can list different domains that are allowed. It allows the resources that a browser can load for any given page. X-Frame-Options Header This tool can prevent click-jacking attacks by ensuring a page is not embedded into other websites. Developers can set it in their service configuration and or web application framework. Updating and Patching Web Applications Closing security gaps so you don’t visit malicious web pages through click-jacking is essential. Regularly updating modern web applications and browsers to ensure security policy features are current is necessary. Take advantage of software updates that include patches and update these regularly. Conducting a Clickjacking Test Performing a test to access a website’s vulnerability against attacks from invisible iframes means taking advantage of the following guide: You’ll need to understand the invisible iframe, which is one of the standard methods used. You can choose from several different test tools like OWASP. Next, create a test page that includes an embedded iframe. You can utilize automated scanners such as OWASP ZAP to assist you. Documenting all of your testing processes, findings, and vulnerabilities is essential. Consider tweaking your x frame options. Remember to schedule regular tests. New vulnerabilities are constantly emerging with time. AspectDescriptionPrevention StrategiesTools/Methods DefinitionClickjacking is a deceptive technique where a user is tricked into clicking on something different from what the user perceives.Be aware of the nature of clickjacking and educate employees.Security Awareness Training Common TargetsOften targets buttons, links on websites, and social media platforms.Regularly update and patch website and applications.Software Updates, Patches TechniqueInvolves layering a transparent iframe over a legitimate button or link.Implement a Content Security Policy (CSP) to control what content can be loaded on a page.Content Security Policy (CSP) Impact on BusinessCan lead to data theft, unauthorized actions, and security breaches.Conduct regular security audits and assessments.Security Audits, Risk Assessments Signs of ClickjackingUnexpected redirects, strange cursor behavior, unresponsive or slow website performance.Monitor web traffic and user activity for anomalies.Traffic Monitoring Tools Legal ConsequencesPossible non-compliance with data protection laws like GDPR due to data breaches.Ensure compliance with relevant data protection laws.Compliance Management Software Clickjacking VarietiesIncludes cursorjacking, likejacking (on social media), and filejacking (file download manipulation).Deploy anti-clickjacking measures like X-Frame-Options header.X-Frame-Options Header, Anti-Clickjacking Tools User Interface DefenseSecure the UI against unauthorized iframe overlays.Use frame busting scripts and ensure secure UI design.Frame Busting Scripts, Secure UI Design Response to IncidentsQuick identification and isolation of affected systems.Have an incident response plan in place.Incident Response Plan Long-term MitigationRegular updates to security policies and practices.Build a culture of cybersecurity awareness within the organization.Ongoing Employee Training, Policy Updates Best Practices in Web Page Design to Prevent Clickjacking Designing a landing page involves using X-frame options. There are three values you can set for this header. The value ‘Deny’ prevents your website’s pages from being displayed in an iframe, which is an effective way to safeguard against a clickjacking attack. The Content Security Policy (CSP) enables you to create a whitelist of sources from which you can download content, such as images, style sheets, and scripts. Responding to a Clickjacking Incident Here are the steps to take if your business is attacked. An immediate response is essential where you identify and isolate what systems are affected. You need to disable and remove any malicious code and identify involved parties. Reset session tokens and change passwords. Patch up any vulnerabilities and implement updates to your web platform and software. Over the long term, you need to update and implement a Content Security Policy and other headers like X-frame options. Building a Culture of Cybersecurity Awareness https://youtube.com/watch?v=_tz0O5-cndE%3Fsi%3DRO8tsQSMplZMDLdh Interactive training sessions are an excellent way to educate employees to prevent a clickjacking attack. Incorporate these sessions and others about cyber security threats into onboarding. FAQs: Clickjacking Here are some answers to frequently asked questions. What is a likejacking attack? This is a form of clickjacking where people are tricked into clicking the ‘Like’ button on Facebook or other social media platforms. Is clickjacking serious? This is serious because it can trick people into turning over confidential data or allowing access to their devices. Can clickjacking affect all types of websites? In technical terms, this type of attack can impact any website. Nevertheless, websites that use content security policy headers, x-frame options headers, and frame-busting scripts are more resilient to such threats. How do you avoid visiting a malicious page? Verify the URL before you click on it. Look for common tricks like misspellings or unusual domain extensions like .net instead of .com. Type the website address you want to visit in the address bar directly. How do security policy frame ancestors help in clickjacking defense? Content Security Policy has a frame-ancestors directive that controls the websites that can frame the content. It prevents hackers from using an iframe to mislead users. Image: Envato Elements, Depositphotos This article, "What is Clickjacking? How to Protect Your Business" was first published on Small Business Trends View the full article
  11. U.S. President Donald Trump said on Wednesday he will order the Pentagon and the Department of Homeland Security to prepare a migrant detention facility at Guantanamo Bay for as many as 30,000 migrants. The U.S. naval base in Guantanamo Bay, Cuba, already houses a migrant facility — separate from the high-security U.S. prison for foreign terrorism suspects — that has been used on occasion for decades, including to hold Haitians and Cubans picked up at sea. Trump’s border czar Tom Homan said later on Wednesday that the administration would expand the already existing facility and that the Immigration and Customs Enforcement agency would run it. “Today I’m also signing an executive order to instruct the Departments of Defense and Homeland Security to begin preparing the 30,000 person migrant facility at Guantanamo Bay,” Trump said at the White House. He said the facility would be used to “detain the worst criminal illegal aliens threatening the American people. Some of them are so bad we don’t even trust the countries to hold them because we don’t want them coming back, so we’re going to send them out to Guantanamo. This will double our capacity immediately, right? And, tough.” Soon after, Trump signed a memorandum, which did not have a number of migrants in it but called for “additional detention space” at the expanded facility. Speaking with reporters on Wednesday, Homan said the center would be used for the “worst of the worst.” Homeland Security Secretary Kristi Noem, asked how much money would be required for the facility, said the administration was working on it with reconciliation and appropriators in Congress. ‘ACT OF BRUTALITY’ The detention facility at Guantanamo Bay was set up in 2002 by then-U.S. President George W. Bush to detain foreign militant suspects following the Sept. 11, 2001, attacks on the United States. There are 15 detainees left in the prison. Trump’s two Democratic predecessors, Barack Obama and Joe Biden, sought to shut down the Guantanamo prison and were only able to reduce its inmate population, but Trump has vowed to keep it open. The jail has long been condemned by human rights groups for indefinite detention and came to symbolize the early excesses the U.S. “war on terror” because of harsh interrogation methods that critics say amounted to torture. The facility for migrants is separate from the detention center on the base. Cuban President Miguel Diaz-Canel called Trump’s plan “an act of brutality.” Pro-refugee groups have called for the Guantanamo migrant facility to be closed and for Congress to investigate alleged abuses there. The International Refugee Assistance Project said in a 2024 report that detainees described unsanitary conditions, families with young children housed together with single adults, a lack of access to confidential phone calls, and the absence of educational services for children. On Tuesday, the U.S. military said that it would allow Immigration and Customs Enforcement to detain migrants at Buckley Space Force Base in Colorado. The decision comes on top of U.S. military deportation flights of migrants out of the country and the deployment of just over 1,600 active-duty troops to the U.S. border with Mexico following Trump’s emergency declaration on immigration last week. —Jeff Mason, Idrees Ali and Ted Hesson, Reuters View the full article
  12. As AI writing tools abound, it‘s critical to vet your content & make sure it‘s authentic, trustworthy, and plagiarism-free. View the full article
  13. This time around, the Trump victory comes as the UK is vulnerable to potent arguments from the rightView the full article
  14. Website architecture refers to the structure of websites. Learn best practices for organizing your site for SEO. View the full article
  15. SEO is essential for improving a website’s visibility on search engines like Google, both globally and locally. However, a one-size-fits-all approach won’t effectively attract customers in specific regions. To stand out in a particular geographic area, you must implement localized SEO strategies tailored to local search behavior, competition, and cultural preferences. This article explores key actions to enhance your website’s visibility within a specific region. From global to local strategies: Understanding your potential local market To increase visibility in a specific region, start with market research to understand your potential users in the area. Analyze the following areas: User search behavior Investigate how people use Google in the region. Which search terms are prioritized? Use SEO tools to identify location-specific search trends and assess demand for your products or services. Language preferences Determine if the region requires content in multiple languages or dialects. What is the most spoken language, and does it align with how users search online? Google SERPs Examine how Google displays results in your target area to refine and guide your SEO strategy. For example, searching for “best hotels in New York” will display the following SERPs: Searching “mejores hoteles en Barcelona” will yield the following results. Notice how the SERP features for the two queries differ. Local competitors Analyze SERPs to pinpoint the main online competitors in each location. This helps uncover opportunities to refine and focus your SEO strategy. Cultural context Consider cultural elements like holidays, traditions, and purchasing habits that influence how users interact with your content. Once you understand the market and how users search for your products or services, you can implement SEO actions to boost visibility in the region. Defining the optimal website structure In-depth market research helps determine the best website structure to enhance user experience and ensure search engines can efficiently interpret the site. A website can be organized based on different groupings, mainly: Multilingual website: Offers content in two or more languages. Google will display pages to users based on the language they use in their search. Multiregional website: Provides different content depending on the country or region of the user conducting the search. A website can be multilingual, multiregional, or both. This means you can tailor content to specific countries and make it available in multiple languages. Dig deeper: Multinational SEO vs. multilingual SEO: What’s the difference? How to organize content by geographic segmentation To maximize a website’s visibility in a specific region, analyze the market and competition to structure the site’s architecture effectively. Google enables geotargeting through locale-specific URLs, offering the following options: Country-code top-level domain names (ccTLDs) These country-specific domains (e.g., .es for Spain, .fr for France) send clear signals to users and search engines about regional targeting. While effective, they require more infrastructure and resources and focus on a single country. Subdomains with gTLD Subdomains (e.g., es.website.com) are easy to set up, support hosting on different servers, and clearly separate sites. However, SEO efforts don’t transfer across subdomains, requiring unique content and separate authority building. Subdirectories with gTLD Subfolders (e.g., www.website.com/es/) share SEO benefits with the main domain, making them low-maintenance and easy to implement. Although they rely on a single server and don’t always signal geotargeting clearly, they work well for targeting multiple regions and languages. Choosing the right approach The site structure should align with its focus. Targeting a single region or language may require one strategy, while covering multiple regions and languages might need another. Consider resources, objectives, and target audiences to determine the most effective approach. Dig deeper: How to craft an international SEO approach that balances tech, translation and trust Get the newsletter search marketers rely on. Business email address Sign me up! Processing... See terms. Content: A key factor in boosting visibility in specific areas A well-structured website architecture improves visibility in specific geographic areas, but the content you create plays a critical role in achieving this goal. To boost visibility in a particular region, follow these practices. Conduct in-depth geolocated keyword research Identify commonly used search terms in the region and strategically incorporate them into your SEO and content strategy to align with local search intent. Create content for the local audience Use geolocated keyword research, trend analysis, and market studies to develop text, image, and video content tailored to local interests. Incorporate cultural references, local events, unique expressions, and regional examples to connect with the audience. Develop location-specific content Build landing pages for each target region and include: Regionally relevant information: Highlight local services, cultural events, or resources. Emphasize different locations or phone numbers to convey proximity. Local testimonials: Feature reviews or stories from customers in the region to enhance trust and relevance. Location-based case studies: Share success stories specific to the area to boost credibility and visibility. Include regional media content Add images and videos that resonate with your target audience, such as: Photos of local landmarks to create familiarity. Videos of cultural events or festivals to engage users. Features of well-known local personalities to connect with the audience. Transcribe, do not translate When targeting regions with different languages or dialects, adapt your content instead of simply translating it. Include the elements above to ensure better engagement with local users. Dig deeper: 15 SEO localization dos and don’ts: Navigating cultural sensitivity Technical SEO for enhancing regional visibility Technical SEO is essential for ensuring your website’s visibility in specific regions or countries. By addressing key technical elements, you help search engines understand your site’s regional focus and improve its local search rankings. Here are critical technical considerations to boost visibility. Hreflang implementation Use hreflang tags to guide Google in selecting the correct page for each country or region. Google Search Console If your site uses a gTLD, set a preferred geographic target in Google Search Console to clarify your regional focus to search engines. Hosting and server location Host your site on servers near your target region to improve speed and user experience, which may enhance visibility. For international websites targeting multiple countries, consider using a CDN network. Automatic language redirects Don’t automatically redirect users from one language version of the site to another based on their location unless necessary. This may negatively affect user experience. Focus on content and proper technical settings to ensure the site displays in the user’s preferred language. Building authority within a specific geographic area Authoritativeness, as defined by Google, reflects how trusted a content creator or website is on a particular topic. Establishing authority in a specific region can greatly improve your website’s visibility. A trusted site is more likely to be referenced by industry magazines, websites, blogs, social media, and experts as a go-to source. Here are actionable steps to build authority in a specific region. Optimize your Google Business Profile listing Include accurate details such as your address, phone number, and business hours. This builds trust and brand reputation, particularly for users who cannot verify this information in person while boosting local visibility. Develop a detailed About Us page with content creator information Use your About Us page to highlight your business with detailed descriptions, contact information, live communication options (e.g., live chat or WhatsApp), and complete author bios to showcase your team’s expertise. Boost your local visibility through directory listings and media features Getting featured in local magazines can help you acquire local backlinks and improve visibility and authority. List your business in relevant local directories and secure features in local news outlets or magazines. Use keyword research, SERP analysis, and competitor analysis to identify opportunities for content collaboration with influential voices in the region. Create valuable resources like guides, case studies, tutorials, and how-to articles that people will find useful and share. Dig deeper: How to use location-specific authority content for SEO Combining localized content efforts, technical SEO strategies, and a deep understanding of the market will help significantly improve your visibility in your target regions. View the full article
  16. In a world where work-life boundaries are increasingly blurred, the well-being of employees has emerged as a pivotal issue. Despite leaders’ good intentions, a stark reality persists: While a staggering 91% of executives believe they prioritize employee well-being, only 56% of employees share that sentiment. This disconnect, revealed in a recent Deloitte study, underscores a critical gap that companies must bridge if they are to thrive in today’s competitive landscape. As businesses grapple with the complexities of modern work, a framework is emerging to guide leaders: The Four Pillars of Worker Well-Being. These pillars offer a comprehensive approach to fostering a healthier, more productive workforce. 1. Predictability Meets Flexibility In an era where change is the only constant, employees crave a sense of predictability. Structured environments where expectations are clear can significantly reduce workplace anxiety, providing a stable foundation for productivity. Yet, the need for flexibility is equally crucial. The ability to adapt to personal and professional demands empowers employees, creating a harmonious balance that enhances overall productivity and satisfaction. Imagine a tech company where employees know their project deadlines well in advance but have the freedom to choose their working hours. This blend of predictability and flexibility not only boosts morale but also drives efficiency. Employees can better manage their work-life integration, reducing stress and increasing their commitment to the organization. By fostering both stability and adaptability, companies can create an environment where employees feel secure yet empowered to manage their responsibilities effectively. 2. Mental Health Takes Center Stage Mental health is no longer a sidebar in corporate discussions, it’s the headline. With half of the global population likely to encounter a mental health disorder, the urgency for comprehensive mental health resources is undeniable. Forward-thinking companies are stepping up, offering counseling services, mental health apps, and wellness programs that are accessible and effective. Take, for instance, a multinational firm that has partnered with mental health platforms like BetterUp. Employees have access to on-demand counseling, fostering a culture where mental well-being is prioritized, and stigma is shattered. 3. Leaders Who Walk the Talk The saying “actions speak louder than words” has never been more relevant. Leaders who visibly prioritize their well-being set a powerful precedent. When the CEO openly takes mental health days or regularly disconnects from work, it sends a clear message: It’s okay to prioritize yourself. This visible commitment from the top fosters a culture of acceptance and support, encouraging employees to follow suit without fear of judgment. Consider a scenario where a company’s leadership team practices what they preach. They take breaks, use their vacation days, and discuss their mental health journeys. This not only humanizes them but also encourages employees to follow suit, fostering a supportive and understanding workplace culture. When leaders lead by example, they create an environment where well-being is integrated into the very fabric of the organization. Employees feel more connected and motivated, knowing that their leaders genuinely care about their health and well-being. 4. Building Bridges Through Relationships In the digital age, genuine connections can often feel like a relic of the past. Yet, building strong relationships within teams remains essential. Whether it’s through virtual coffee chats, team-building exercises, or regular check-ins, fostering a sense of belonging is key. What if your remote team makes time for weekly virtual gatherings where work talk is off-limits? These sessions, focused on personal stories and shared interests, build trust and camaraderie, transforming colleagues into a cohesive unit. In a world dominated by screens, these human moments are invaluable, reinforcing the social bonds that underpin successful teams. By fostering deeper connections, companies can enhance team dynamics, leading to higher productivity and a more engaged workforce. Putting the Pillars into Action The journey from theory to practice can be challenging, but it’s far from impossible. Leaders can start by enhancing communication—clear, consistent updates that set expectations and reduce uncertainty. Regular feedback sessions and open dialogues can bridge the gap between management and employees. Providing resources is another critical step. Companies can leverage technology to offer mental health support, whether through apps or tele-counseling. The goal is to make mental health resources as integral as health insurance. Leading by example is perhaps the most impactful strategy. When leaders demonstrate their commitment to well-being, it creates a ripple effect. Employees feel empowered to prioritize their health, knowing they have the support of their organization. The ROI of Well-Being Investing in well-being isn’t just a moral imperative—it’s a business strategy. Companies that embed well-being into their culture see tangible benefits: higher productivity, lower turnover rates, and significant healthcare savings. Johnson & Johnson, for example, saved $250 million over a decade through its wellness programs. The corporate world is at a critical juncture. As economic pressures mount and the demand for innovation intensifies, leaders must recognize that well-being is no longer a luxury but a strategic necessity. Companies that fail to adapt risk losing their competitive edge, as disengaged and burnt-out employees cannot drive sustained growth. In contrast, those who embrace the Four Pillars of Worker Well-Being will likely see transformative results. These companies will attract and retain top talent, foster a resilient organizational culture, and ultimately, achieve long-term success. To illustrate, let’s look at an innovative retail company that integrated these pillars into its operations. By offering flexible schedules, mental health resources, and fostering a culture of openness, they saw a 30% reduction in employee turnover and a significant boost in customer satisfaction. Employees reported feeling more engaged and valued, directly impacting the company’s bottom line. Moreover, the shift towards prioritizing well-being aligns with broader societal trends. As public awareness of mental health and work-life balance grows, companies that lead in these areas will not only meet employee expectations but also set industry standards. The future of work demands a new kind of leadership, one that places well-being at the core of organizational strategy. This isn’t just about improving employee morale; it’s about creating a sustainable model for success in an ever-evolving business landscape. By adopting these practices, leaders can navigate the complexities of the modern workplace and unlock the full potential of their teams. Excerpted with permission from the publisher, Wiley, from Essential: How Distributed Teams, Generative AI, and Global Shifts Are Creating a New Human-Powered Leadership by Christie Smith and Kelly Monahan. Copyright © 2025 by John Wiley & Sons, Inc. All rights reserved. This book is available wherever books and eBooks are sold. View the full article
  17. During my tenure at Facebook, now Meta, from 2014 to 2017, posters were plastered all over the grounds. “The job is only 1% done.” “Move fast and break things.” I was struck by one in particular on my first day of orientation: “Nothing at Facebook is someone else’s problem.” No matter my department or title, I had permission to take ownership of a problem and fix it. It’s the corporate version of “If you see something, say something,” or, in this case, do something. The irony is that I’m saying something because I see what Meta is now doing. It is actively making their problem with diversity, equity, and inclusion (“DEI”) everyone else’s problem. To me it’s clear the company’s ethos has changed from those days of open innovation. DEI helped Facebook grow, make better products and be more profitable During my time at Facebook, I was an attorney who primarily served supply chain and procurement. One thing that was not in my purview was diversity. However, I couldn’t help but notice that I was the only Black attorney in the Legal department, and I was well aware of the infrequency with which I saw Black colleagues walking around campus. Within our supply chain, I saw an opportunity to save the company money, create goodwill in the communities where Facebook had offices, and build better products by working with suppliers as diverse as the company’s users. So, I started the supplier diversity program. It was strategic to take the heat off of the company for the low employee diversity numbers that were the focal point of each annual report by providing another mechanism to demonstrate our partnership with marginalized communities while opening bids for business that would save the company money. In addition to the cost savings and the goodwill the program could provide, it was also a mechanism to build better products by partnering with diverse-owned businesses that reflected our user base. There is no better collaborator than people representing those you want to use your products, and with over a billion users at the time and growing, that needs to reflect the world. While no DEI program is perfect, improvements are part of playing a long game, and gains won’t be made overnight but incrementally. The supplier diversity program was an answer to several problems—collaboration for better products and new use cases, harm mitigation, economic opportunity for marginalized communities, and to slow the creep of gentrification of Facebook headquarters into the Black and brown community of East Palo Alto. I was incredibly devoted to this cause. I gave up weekends, late nights, and early mornings. I even spent part of my maternity leave to get the program off the ground. Both Facebook’s General Counsel and Chief Financial Officer reviewed and approved the program at various stages—the company was fully onboard with the aims when the program launched in October 2016. Confident I had built something that would last, I moved on to other opportunities. From a billion-dollar commitment to shifting blame and denouncing DEI In June 2020, Facebook pledged a $1.1 billion “investment in Black and diverse suppliers and communities in the U.S.” In 2022, the company reported: “In 2021, we exceeded our diverse supplier commitment, spending $1.26 billion with US certified diverse suppliers and more than $306 million with Black-owned businesses in the US.” As recently as October 2024, Meta hosted the Billion Dollar Roundtable conference celebrating corporations that spend $1 billion with minority and women-owned suppliers. Now, over the course of just six weeks, Meta has dismantled diversity programs, including supplier diversity, that took years to build, and Mark Zuckerberg has attributed them to former COO Sheryl Sandberg as he distances himself from all DEI. While no DEI program is perfect, these programs are part of a long game, with incremental progress built on top of hard work and trust. Companies and their leaders are free to change their minds and priorities due to politics, economics, or anything else. But if the pendulum swings in the other direction in the future, companies like Meta that scrap DEI programs will now have an infinitely harder time rebuilding them. The trust of users, employees, and suppliers has been destroyed. Users can’t trust Meta, so disengagement is the only answer From my experience at Facebook, what happens on the inside is what is mirrored externally in the products. When you eliminate DEI initiatives, you lose people from around your table. When you lose those voices at the table, you lose product insight. And for those still at Meta, their voices will carry less weight as soon as they advocate for those viewpoints, use cases, and outcomes. I imagine that the environment inside Meta is very different from when I worked there. Some employees and suppliers are likely nervous about what this new landscape will mean for their jobs. Users can expect a different product experience as a result, and they will judge whether it is for the better. I believe the only path forward for users is to show Meta the true cost of abandoning diversity. If we aren’t welcome within these companies, and we aren’t welcome to service them, then we shouldn’t reward them with our engagement, our data, or their ability to earn ad revenue from us. For marginalized communities, boycotts worked once before and also spurred entrepreneurship and safe spaces a generation ago during the Civil Rights Movement. In my view, disengagement is the only answer. Meta is no longer following its own adages. This is the opposite of “Shipping Love,” but it shows us what Zuckerberg and Meta do when they aren’t afraid. Sometimes, people don’t realize that there are consequences until they are faced with them. Users control the end of this story. This can be the opportunity to see how Zuckerberg and Meta rise to the occasion (or not). Regardless of their response, we must remember, “When people show you who they are, believe them.” We need to believe this is the world Meta wants to create, and if we don’t want to be part of it, we need to leave. View the full article
  18. I don't like how scrolling makes me feel these days. Every headline, meme, and take I scroll past leaves me feeling worse about the world. It isn't entirely unwarranted—there's a lot of bad happening—but marinating in that feeling doesn't help. Scrolling isn't always detrimental, of course. It can be relaxing, for one thing, and it can be a way to keep up with what's happening with your friends. But I think we all know there are diminishing returns when it comes to scrolling—the overall quality goes down the longer you keep going. And that's why reading is possibly more important now than its ever been: There aren't diminishing returns. Scrolling is briefly thinking about lots of things; reading is taking the time to think about one thing. That's why I'm trying to do more reading and less scrolling. Seeing hundreds of memes about the latest dumb thing that one billionaire said doesn't help me reach any of my goals. Taking the time to get context on the issues I care about—and thinking deeply about them—might. So I've been taking active steps to nudge myself toward scrolling less and reading more. I hope these tips will help you achieve the same. Hide (or uninstall) social media appsAre there social media icons on your phone's home screen? The simplest thing you can do in order to scroll less is to get those icons off of there. You can do this by removing the icons from the home screen or by uninstalling the application entirely. Either way, the process is easy: tap and hold on the icon. Both Android and iOS will give you the option to either remove the application from your home screen or delete it. I, personally, tend to just remove the apps from my home screen. This reduces the number of times I turn on my phone and reflexively open an app to scroll in, but leaves the applications available when I actively want them. That might not be enough for you, though. You might find yourself going out of your way to scroll even if it means pulling up the app outside the home screen, or sucked in when there's a notification. If that's you, I recommend just uninstalling the application entirely, if only while you're trying to create the habit of scrolling less. It will cut off the problem entirely. Put books on your phoneGetting books onto your phone isn't hard. There are the big apps, including Kindle and Kobo, if you want to purchase current titles. (Apple has its own proprietary "Books" app as well.) You can access millions of books in the public domain with a little bit of searching. And there's also a good chance your local library offers free e-books: Libby is a common app for this. Set up one or multiple of these applications and put them right on the home screen of your phone. Ideally, you'll put the icon right where the social application you used to open constantly lives. The idea is to trick yourself into opening books. This isn't magic—you're going to need to force yourself to actually read. Over time, though, the habit may begin to form. Another thing to consider: audiobooks. Some people can't get into reading no matter how hard they try. Others can't find the time. In either case, I think audiobooks can be a great alternative. Listening to a book while driving, cleaning the house, or just hanging out at home is a great way to take in and reflect on books. Some people get elitist about this—ignore them. Listening to books is great. Most local libraries offer audiobooks, whether in the Libby app or as physical CDs. Otherwise, there are services like Audible and even Spotify to get your audiobook fix. Make reading articles easy for yourselfIf you don't want to read entire books on your phone (I personally don't), you'll likely find its the perfect device for reading articles, and there are plenty of ways to do that without the need to scroll. I like having read-it-later apps on my phone's home screen. These let you save articles you find on the web for future reading. I tend to clip articles during my work day, when I shouldn't be reading, and come back to them in the evening. I personally use FlyLeaf, which is a great option for Apple users, but Instapaper is also a very good tool for the job. But it's also a good idea to have a few publications that you browse regularly. There are all kinds of ways to do this. The simplest is to bookmark the homepages of a few of your favorite websites and blogs so that they show up every time you open your browser. The more techie solution is to find an RSS reader, which shows you the headlines from as many websites as you like. That way, you can keep up with everything in one place. Or, you could look into apps that let you read entire print publications. I recently discovered Press Reader, which offers full versions of magazines and newspapers. It's offered for free by some libraries and lets you read the entire print version of all sorts of publications. Odds are your local library has something similar, or you could physically go there and read the magazine they have on the shelf. (I love doing this.) Mange your notificationsNothing disrupts reading faster than being pulled into something else. If you're actually going to read, take advantage of your phone's Do Not Disturb (DND) functionality. We've talked a bit about how to customize your Android notifications and your iOS notifications, so dig into those articles for more details. But the gist is you don't want notifications popping up when you're trying to read. You can turn DND modes on or off manually, if you want, but can also schedule them. For example, if you read before bed, you could set up your phone to never buzz during your usual nighttime routine. You can get fancy about this: Newer Apple devices can use AI to filter out all but the most important notifications. I've tried this feature and so far it's a great way to unplug without missing the important stuff. Swap out your phone for something elseI've been talking about phones a lot in this article because that's where the bulk of scrolling happens. If you really want to read more, though, it's probably a good idea to do it on something other than your phone. E-ink devices work, but so do paper books and magazines. It's literally impossible to scroll Reddit on a book. Depending on how your brain works, though, a new gadget might help. My colleague Joel Cunningham wrote about how the Boox Portable helped him stop doomscrolling, and I can can understand why. This is basically an e-ink Android device, roughly the size of a phone. If you want something bigger, you can look into an e-ink tablet. These are great for both reading and jotting down ideas. I personally use a Remarkable for reading papers and researching articles. Getting away from my colorful and animated computing devices for a bit is helpful. There are all kinds of e-ink devices out there that can give you the best of both paper and electronics. Look into them—they might be what you need to trick your brain into reading more. View the full article
  19. Meta tags are HTML tags that provide information about a webpage‘s content to search engines and users. View the full article
  20. Google Search ranking volatility spiked and heated again over the past 24-hours or so. I am seeing renewed chatter spike up yesterday, January 29th and continue through today. I am also seeing that some of the tracking tools are showing an increase in ranking volatility within Google Search over the past day.View the full article
  21. A content calendar helps you plan, organize, and schedule content. Learn how to build one. View the full article
  22. Did you know there is a quick way to directly generate an access request for Service Area Businesses in Google Maps? This is apparently not so new but also not widely known.View the full article
  23. The start-up’s breakthrough confounds outworn prejudices about the two countries View the full article
  24. Common SEO KPIs include organic visibility, keyword rankings, organic click-through rate (CTR), and conversions. View the full article
  25. Ginny Marvin, the Google Ads Liaison, explained why Google is only letting you add up to 100 negative keywords to your campaign-level negative keywords within your Performance Max campaigns on Google Ads.View the full article
×
×
  • Create New...