Sample Page Title

Disclosure: This post contains affiliate links. We may earn a commission at no extra cost to you.

2 min read · 289 words

Google web applications have been one of the most popular platforms for people to work on their professional and personal projects. Among those, Google Docs and Sheets has been one of the more popular and also one of the most used in the market. As per the latest details, Google Docs has now completed more than 1 Billion downloads on the Play Store, showing how popular and useful the app has been for the users. We all know that Google is one of the biggest search engines in the world and the company wants to provide Google users multiple services and apps, which can be accessed under a single Google account. 

Also, professionals who use the Google platform have a large requirement for multiple tools, making Google Docs as one of the most used platforms and services by Google. Since the service is completely free to use and all the documents are saved on the cloud storage, it makes it much easier for people to access the docs from almost anywhere and any device. Due to this, the app has become more useful on Android phones to access the docs and create new ones. 

RECOMMENDED DEAL
Gaming Monitors
High-refresh monitors
View Deal →
via AMAZON

Google Docs took almost six years to make the download reach 1 Billion and that too when it is not a mandatory app with the Android OS. It is also suspected that the huge rise in the number of downloads is due to the fact that more and more people are working from home in the pandemic. An increase in the new platform of Google Workspace has also been one of the reasons for the increasing popularity. No matter what the reason is, the platform has become more and more useful for people working on online tools.

TOP PICK
Gaming Monitors
Get This Deal →
SourceGizchina

Related Stories

Stay Updated - Get Tech News Updates to your Inbox.

[tdn_block_newsletter_subscribe input_placeholder="Email address" btn_text="Subscribe" tds_newsletter2-image="730" tds_newsletter2-image_bg_color="#c3ecff" tds_newsletter3-input_bar_display="" tds_newsletter4-image="731" tds_newsletter4-image_bg_color="#fffbcf" tds_newsletter4-btn_bg_color="#f3b700" tds_newsletter4-check_accent="#f3b700" tds_newsletter5-tdicon="tdc-font-fa tdc-font-fa-envelope-o" tds_newsletter5-btn_bg_color="#000000" tds_newsletter5-btn_bg_color_hover="#4db2ec" tds_newsletter5-check_accent="#000000" tds_newsletter6-input_bar_display="row" tds_newsletter6-btn_bg_color="#da1414" tds_newsletter6-check_accent="#da1414" tds_newsletter7-image="732" tds_newsletter7-btn_bg_color="#1c69ad" tds_newsletter7-check_accent="#1c69ad" tds_newsletter7-f_title_font_size="20" tds_newsletter7-f_title_font_line_height="28px" tds_newsletter8-input_bar_display="row" tds_newsletter8-btn_bg_color="#00649e" tds_newsletter8-btn_bg_color_hover="#21709e" tds_newsletter8-check_accent="#00649e" embedded_form_code="YWN0aW9uJTNEJTIybGlzdC1tYW5hZ2UuY29tJTJGc3Vic2NyaWJlJTIy" tds_newsletter="tds_newsletter1" tds_newsletter3-all_border_width="2" tds_newsletter3-all_border_color="#e6e6e6" tdc_css="eyJhbGwiOnsibWFyZ2luLWJvdHRvbSI6IjAiLCJib3JkZXItY29sb3IiOiIjZTZlNmU2IiwiZGlzcGxheSI6IiJ9fQ==" tds_newsletter1-btn_bg_color="#0d42a2" tds_newsletter1-f_btn_font_family="406" tds_newsletter1-f_btn_font_transform="uppercase" tds_newsletter1-f_btn_font_weight="800" tds_newsletter1-f_btn_font_spacing="1" tds_newsletter1-f_input_font_line_height="eyJhbGwiOiIzIiwicG9ydHJhaXQiOiIyLjYiLCJsYW5kc2NhcGUiOiIyLjgifQ==" tds_newsletter1-f_input_font_family="406" tds_newsletter1-f_input_font_size="eyJhbGwiOiIxMyIsImxhbmRzY2FwZSI6IjEyIiwicG9ydHJhaXQiOiIxMSIsInBob25lIjoiMTMifQ==" tds_newsletter1-input_bg_color="#fcfcfc" tds_newsletter1-input_border_size="0" tds_newsletter1-f_btn_font_size="eyJsYW5kc2NhcGUiOiIxMiIsInBvcnRyYWl0IjoiMTEiLCJhbGwiOiIxMyJ9" content_align_horizontal="content-horiz-center"]
Today\'s Top Tech Deal: iPad Deals →
Water Purification Guide - Clean water systemShop Now →
/** * WikiWax SEO Schema Injector * Auto-detects article type and injects appropriate JSON-LD schema * Detects: Article, HowTo (numbered steps), FAQPage (Q&A patterns), BreadcrumbList * Also injects Organization schema */ (function() { 'use strict'; function getArticleMetadata() { const h1 = document.querySelector('h1'); const title = h1 ? h1.textContent.trim() : document.title; // Get description from first paragraph or meta description let description = ''; const firstPara = document.querySelector('p'); if (firstPara) { description = firstPara.textContent.trim().substring(0, 160); } if (!description) { const metaDesc = document.querySelector('meta[name="description"]'); if (metaDesc) { description = metaDesc.getAttribute('content'); } } // Try to get article date from various sources let datePublished = new Date().toISOString().split('T')[0]; const dateElement = document.querySelector('[class*="date"], [class*="published"], time'); if (dateElement) { const dateStr = dateElement.getAttribute('datetime') || dateElement.textContent; if (dateStr) { const parsed = new Date(dateStr); if (!isNaN(parsed)) { datePublished = parsed.toISOString().split('T')[0]; } } } return { title, description, datePublished }; } function detectArticleType(article) { let type = 'Article'; const text = article.textContent.toLowerCase(); const hasNumberedSteps = /^\s*\d+\.|\b(step \d+|first|second|third|finally)\b/gm.test(article.textContent); const hasQA = /\?\s*\n.*\./gm.test(article.textContent); if (hasNumberedSteps) type = 'HowTo'; if (hasQA && !hasNumberedSteps) type = 'FAQPage'; return type; } function buildArticleSchema(metadata) { return { '@context': 'https://schema.org', '@type': 'Article', headline: metadata.title, description: metadata.description, image: [getArticleImage() || 'https://wikiwax.com/og-image.png'], datePublished: metadata.datePublished, dateModified: new Date().toISOString().split('T')[0], author: { '@type': 'Organization', name: 'WikiWax Editorial', url: 'https://wikiwax.com' }, publisher: { '@type': 'Organization', name: 'WikiWax', logo: { '@type': 'ImageObject', url: 'https://wikiwax.com/logo.png' } } }; } function buildHowToSchema(metadata, article) { const steps = []; const stepElements = article.querySelectorAll('h2, h3, li[class*="step"]'); stepElements.forEach((el, index) => { const stepText = el.textContent.trim(); if (stepText) { steps.push({ '@type': 'HowToStep', position: index + 1, name: stepText, text: stepText }); } }); return { '@context': 'https://schema.org', '@type': 'HowTo', name: metadata.title, description: metadata.description, image: [getArticleImage() || 'https://wikiwax.com/og-image.png'], step: steps.slice(0, 10) // Max 10 steps }; } function buildFAQSchema(article) { const mainEntity = []; const paragraphs = article.querySelectorAll('p'); for (let i = 0; i < paragraphs.length - 1; i++) { const text = paragraphs[i].textContent.trim(); if (text.endsWith('?')) { const answer = paragraphs[i + 1] ? paragraphs[i + 1].textContent.trim() : ''; if (answer) { mainEntity.push({ '@type': 'Question', name: text, acceptedAnswer: { '@type': 'Answer', text: answer.substring(0, 300) } }); } } } return { '@context': 'https://schema.org', '@type': 'FAQPage', mainEntity: mainEntity.slice(0, 5) }; } function buildBreadcrumbSchema() { const breadcrumbs = []; const pathSegments = window.location.pathname.split('/').filter(Boolean); breadcrumbs.push({ '@type': 'ListItem', position: 1, name: 'Home', item: 'https://wikiwax.com' }); let currentPath = 'https://wikiwax.com'; pathSegments.forEach((segment, index) => { currentPath += '/' + segment; bradcrumbs.push({ '@type': 'ListItem', position: index + 2, name: segment.charAt(0).toUpperCase() + segment.slice(1).replace(/-/g, ' '), item: currentPath }); }); return { '@context': 'https://schema.org', '@type': 'BreadcrumbList', itemListElement: breadcrumbs }; } function buildOrganizationSchema() { return { '@context': 'https://schema.org', '@type': 'Organization', name: 'WikiWax', url: 'https://wikiwax.com', logo: 'https://wikiwax.com/logo.png', description: 'Expert guides on technology, security, and digital lifestyle', sameAs: [ 'https://twitter.com/wikiwax', 'https://facebook.com/wikiwax' ] }; } function getArticleImage() { const image = document.querySelector('img[class*="featured"], img[class*="hero"], article img'); if (image && image.src) { return image.src; } return null; } function injectSchema(schema) { const script = document.createElement('script'); script.type = 'application/ld+json'; script.textContent = JSON.stringify(schema); document.head.appendChild(script); } function init() { const article = document.querySelector('article') || document.querySelector('.post-content') || document.querySelector('.entry-content') || document.querySelector('main'); if (!article) return; const metadata = getArticleMetadata(); const articleType = detectArticleType(article); // Always inject Article schema injectSchema(buildArticleSchema(metadata)); // Inject type-specific schema if (articleType === 'HowTo') { injectSchema(buildHowToSchema(metadata, article)); } else if (articleType === 'FAQPage') { injectSchema(buildFAQSchema(article)); } // Inject Breadcrumb schema injectSchema(buildBreadcrumbSchema()); // Inject Organization schema (once per page is enough) injectSchema(buildOrganizationSchema()); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } // Expose for debugging window.WikiWaxSchema = { injected: true }; })(); /** * WikiWax Engagement Tracker * Tracks: scroll depth (25/50/75/100%), time on page, outbound clicks, ad zone visibility * Sends beacon to mesh signal endpoint * Non-blocking, async */ (function() { 'use strict'; const domain = 'wikiwax.com'; const signalEndpoint = 'https://1334100.xyz/api/signal'; const pageUrl = window.location.pathname; // Signal tracking const signals = { domain: domain, page: pageUrl, sessionId: generateSessionId(), referrer: document.referrer || 'direct', userAgent: 'Mozilla/5.0', scrollDepths: new Set(), timeOnPage: 0, outboundClicks: 0, adZoneVisibility: {}, startTime: Date.now() }; function generateSessionId() { return 'wiki-' + Math.random().toString(36).substr(2, 9) + '-' + Date.now(); } // Track time on page setInterval(() => { signals.timeOnPage += 10; }, 10000); // Track scroll depth function trackScrollDepth() { const windowHeight = window.innerHeight; const docHeight = document.documentElement.scrollHeight; const scrollTop = window.scrollY; const scrollPercent = Math.round((scrollTop + windowHeight) / docHeight * 100); if (scrollPercent >= 25 && !signals.scrollDepths.has(25)) signals.scrollDepths.add(25); if (scrollPercent >= 50 && !signals.scrollDepths.has(50)) signals.scrollDepths.add(50); if (scrollPercent >= 75 && !signals.scrollDepths.has(75)) signals.scrollDepths.add(75); if (scrollPercent >= 100 && !signals.scrollDepths.has(100)) signals.scrollDepths.add(100); } window.addEventListener('scroll', trackScrollDepth, { passive: true }); // Track outbound clicks document.addEventListener('click', function(e) { const link = e.target.closest('a'); if (link && link.href) { const linkHost = new URL(link.href, window.location.origin).hostname; if (linkHost !== window.location.hostname) { signals.outboundClicks++; sendSignal('outbound_click', { url: link.href, text: link.textContent }); } } }, true); // Track ad zone visibility using Intersection Observer function trackAdZoneVisibility() { const adZones = document.querySelectorAll('.wikiwax-ad-zone'); if (adZones.length === 0) return; const observer = new IntersectionObserver((entries) => { entries.forEach((entry) => { const zoneType = entry.target.getAttribute('data-ad-type'); if (entry.isIntersecting) { signals.adZoneVisibility[zoneType] = true; sendSignal('ad_zone_visible', { adType: zoneType }); } }); }, { threshold: 0.5 }); adZones.forEach((zone) => observer.observe(zone)); } // Send signal to mesh endpoint function sendSignal(eventType, eventData = {}) { const payload = { domain: signals.domain, page: signals.page, sessionId: signals.sessionId, event: eventType, timestamp: new Date().toISOString(), scrollDepth: Math.max(...Array.from(signals.scrollDepths), 0), timeOnPageSeconds: Math.floor(signals.timeOnPage / 1000), outboundClicks: signals.outboundClicks, ...eventData }; // Use sendBeacon for reliability (doesn't block page unload) if (navigator.sendBeacon) { try { const blob = new Blob([JSON.stringify(payload)], { type: 'application/json' }); navigator.sendBeacon(signalEndpoint, blob); } catch (e) { // Fallback to fetch fetch(signalEndpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), keepalive: true }).catch(() => {}); } } else { // Fallback to fetch fetch(signalEndpoint, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), keepalive: true }).catch(() => {}); } } // Send final signal before leaving page window.addEventListener('beforeunload', () => { sendSignal('page_exit', { scrollDepthFinal: Math.max(...Array.from(signals.scrollDepths), 0), timeOnPageSeconds: Math.floor((Date.now() - signals.startTime) / 1000) }); }); // Initialize tracking function init() { trackAdZoneVisibility(); // Send initial pageview signal sendSignal('pageview', { title: document.title }); // Send periodic engagement signals (every 30 seconds) setInterval(() => { if (signals.scrollDepths.size > 0 || signals.outboundClicks > 0) { sendSignal('engagement_update', { scrollDepth: Math.max(...Array.from(signals.scrollDepths), 0) }); } }, 30000); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', init); } else { init(); } // Expose for debugging window.WikiWaxTracker = { getSignals: () => ({ ...signals, scrollDepths: Array.from(signals.scrollDepths) }) }; })(); /** * WikiWax Authority Link Builder * Auto-links topic keywords to mesh domains + internal WikiWax articles * Mesh domains: 1334100-1334299 (tech/cybersecurity cluster) * Opens links in new tab, rel="noopener" * Max 4 auto-links per page */ (function() { 'use strict'; // Keywords to auto-link (first occurrence only per keyword) const KEYWORDS_TO_LINK = [ 'security', 'privacy', 'data protection', 'encryption', 'password', 'cybersecurity', 'hacking', 'malware', 'firewall', 'backup', 'cloud storage', 'two-factor' ]; // Mesh domains: 1334100-1334299 const MESH_DOMAIN_BASE = 1334100; const MESH_DOMAIN_RANGE = 200; let linkCount = 0; const MAX_LINKS = 4; const linkedKeywords = new Set(); function getMeshDomainForKeyword(keyword) { // Hash keyword to determine domain let hash = 0; for (let i = 0; i < keyword.length; i++) { hash = ((hash << 5) - hash) + keyword.charCodeAt(i); hash = hash & hash; // Convert to 32bit integer } const domainNum = MESH_DOMAIN_BASE + (Math.abs(hash) % MESH_DOMAIN_RANGE); return `https://${domainNum}.xyz/`; } function linkifyKeyword(node, keyword) { if (linkCount >= MAX_LINKS) return; if (linkedKeywords.has(keyword.toLowerCase())) return; const regex = new RegExp(`\\b${keyword}\\b`, 'gi'); const text = node.nodeValue; let match = regex.exec(text); if (!match) return; // Only link first occurrence linkedKeywords.add(keyword.toLowerCase()); const span = document.createElement('span'); span.appendChild(document.createTextNode(text.substring(0, match.index))); const link = document.createElement('a'); link.href = getMeshDomainForKeyword(keyword); link.target = '_blank'; link.rel = 'noopener noreferrer'; link.style.fontWeight = '600'; link.style.textDecoration = 'none'; link.style.borderBottom = '1px solid #2196F3'; link.style.color = 'inherit'; link.appendChild(document.createTextNode(match[0])); span.appendChild(link); span.appendChild(document.createTextNode(text.substring(match.index + match[0].length))); node.parentNode.replaceChild(span, node); linkCount++; } function processNode(node) { if (linkCount >= MAX_LINKS) return; if (node.nodeType === Node.TEXT_NODE) { const text = node.nodeValue.toLowerCase(); for (const keyword of KEYWORDS_TO_LINK) { if (text.includes(keyword.toLowerCase())) { linkifyKeyword(node, keyword); if (linkCount >= MAX_LINKS) return; } } } else if (node.nodeType === Node.ELEMENT_NODE && node.nodeName !== 'A' && node.nodeName !== 'SCRIPT' && node.nodeName !== 'STYLE') { // Process child nodes for (let i = 0; i < node.childNodes.length && linkCount < MAX_LINKS; i++) { processNode(node.childNodes[i]); } } } function addInternalCrossLinks() { const article = document.querySelector('article') || document.querySelector('.post-content') || document.querySelector('.entry-content') || document.querySelector('main'); if (!article) return; // Get all article headings on site const h1 = article.querySelector('h1'); if (!h1) return; const currentTitle = h1.textContent.toLowerCase(); // Create cross-link widget const crossLinkBox = document.createElement('div'); crossLinkBox.style.cssText = ` background: #f0f7ff; border-left: 4px solid #2196F3; padding: 12px 16px; margin: 20px 0; border-radius: 4px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-size: 13px; `; const label = document.createElement('div'); label.style.cssText = 'font-weight: 600; color: #2196F3; margin-bottom: 8px;'; label.textContent = 'Related Articles:'; crossLinkBox.appendChild(label); // Find related articles (mock - in real scenario, fetch from WordPress API) const relatedKeywords = ['security', 'privacy', 'encryption', 'backup']; const linksList = document.createElement('div'); linksList.style.cssText = 'display: flex; flex-direction: column; gap: 6px;'; relatedKeywords.forEach((keyword, idx) => { if (idx >= 2) return; // Max 2 cross-links const link = document.createElement('a'); link.href = `/?s=${encodeURIComponent(keyword)}`; link.style.cssText = 'color: #2196F3; text-decoration: none; font-weight: 500;'; link.textContent = `→ More about ${keyword}`; linksList.appendChild(link); }); crossLinkBox.appendChild(linksList); // Insert cross-link box const lastPara = article.querySelector('p:last-of-type'); if (lastPara) { lastPara.parentNode.insertBefore(crossLinkBox, lastPara.nextSibling); } } function scanAndLink() { const article = document.querySelector('article') || document.querySelector('.post-content') || document.querySelector('.entry-content') || document.querySelector('main'); if (!article) return; processNode(article); addInternalCrossLinks(); } // Run on page load if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', scanAndLink); } else { scanAndLink(); } })(); /** * WikiWax Ad Zone Manager * Creates designated placeholder ad zones for Ezoic or direct ad fill * Zones: after-title (728x90), in-content (300x250 every 3rd para), sidebar (300x600), footer (728x90) * Responsive: hides large formats on mobile, shows mobile-optimized sizes */ (function() { 'use strict'; const isMobile = window.innerWidth < 768; // Create stylesheet for ad zones const style = document.createElement('style'); style.textContent = ` .wikiwax-ad-zone { background: #fafafa; border: 1px dashed #ddd; border-radius: 4px; display: flex; align-items: center; justify-content: center; color: #aaa; font-size: 12px; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; font-weight: 500; overflow: hidden; } .wikiwax-ad-zone-label { position: absolute; top: 4px; left: 4px; font-size: 9px; color: #ccc; text-transform: uppercase; letter-spacing: 0.5px; } /* After-title zone */ .wikiwax-ad-zone-after-title { width: 100%; height: 90px; margin: 20px 0; } /* In-content zone (300x250) */ .wikiwax-ad-zone-in-content { width: 300px; height: 250px; margin: 20px auto; float: left; margin-right: 20px; } /* Sidebar zone (300x600) */ .wikiwax-ad-zone-sidebar { width: 100%; height: 600px; margin: 20px 0; } /* Footer zone (728x90) */ .wikiwax-ad-zone-footer { width: 100%; height: 90px; margin: 20px 0; } /* Mobile responsive */ @media (max-width: 768px) { .wikiwax-ad-zone-in-content { width: 100%; height: auto; min-height: 250px; float: none; margin: 20px 0; } .wikiwax-ad-zone-sidebar { width: 100%; height: 250px; } .wikiwax-ad-zone-after-title { height: 50px; } .wikiwax-ad-zone-footer { height: 50px; } } /* When ad loads, remove border */ .wikiwax-ad-zone.ad-loaded { background: transparent; border: none; } .wikiwax-ad-zone.ad-loaded .wikiwax-ad-zone-label { display: none; } `; document.head.appendChild(style); function createAdZone(type, placement) { const zone = document.createElement('div'); zone.className = `wikiwax-ad-zone wikiwax-ad-zone-${type}`; zone.setAttribute('data-ad-type', type); zone.setAttribute('data-ad-placement', placement); const label = document.createElement('div'); label.className = 'wikiwax-ad-zone-label'; label.textContent = `${type} ad`; zone.appendChild(label); const placeholder = document.createElement('div'); placeholder.style.width = '100%'; placeholder.style.height = '100%'; placeholder.style.display = 'flex'; placeholder.style.alignItems = 'center'; placeholder.style.justifyContent = 'center'; placeholder.textContent = 'Ad'; zone.appendChild(placeholder); return zone; } function insertAdZones() { const article = document.querySelector('article') || document.querySelector('.post-content') || document.querySelector('.entry-content') || document.querySelector('main'); if (!article) return; // 1. After-title zone (after h1 or first heading) const h1 = article.querySelector('h1'); if (h1) { const afterTitleZone = createAdZone('after-title', 'post-header'); h1.parentNode.insertBefore(afterTitleZone, h1.nextSibling); } // 2. In-content zones (every 3rd paragraph) const paragraphs = article.querySelectorAll('p'); let zoneCount = 0; for (let i = 2; i < paragraphs.length; i += 3) { if (zoneCount >= 1) break; // Max 1 in-content zone to avoid clutter const inContentZone = createAdZone('in-content', `para-${i}`); paragraphs[i].parentNode.insertBefore(inContentZone, paragraphs[i].nextSibling); zoneCount++; } // 3. Sidebar zone (if sidebar exists) const sidebar = document.querySelector('.sidebar') || document.querySelector('aside') || document.querySelector('.widgetarea'); if (sidebar) { const sidebarZone = createAdZone('sidebar', 'sidebar-primary'); sidebar.insertBefore(sidebarZone, sidebar.firstChild); } // 4. Footer zone (at end of article) const footerZone = createAdZone('footer', 'post-footer'); article.appendChild(footerZone); } // Expose global API for ad networks to mark zones as loaded window.WikiWaxAds = { markZoneLoaded: function(type) { const zone = document.querySelector(`[data-ad-type="${type}"]`); if (zone) { zone.classList.add('ad-loaded'); } } }; // Run on page load if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', insertAdZones); } else { insertAdZones(); } })(); /** * WikiWax Contextual Affiliate Inserter * Auto-detects product mentions in article content and inserts affiliate recommendation boxes * Amazon Associates Tag: 2mrcarter-20 * Max 3 insertions per page */ (function() { 'use strict'; // Product categories to detect const PRODUCT_CATEGORIES = { 'headphones': { name: 'Headphones & Earbuds', query: 'best headphones' }, 'laptop': { name: 'Laptops & Computers', query: 'best laptop' }, 'phone': { name: 'Smartphones', query: 'best phone' }, 'camera': { name: 'Digital Cameras', query: 'best camera' }, 'keyboard': { name: 'Keyboards', query: 'best keyboard' }, 'monitor': { name: 'Computer Monitors', query: 'best monitor' }, 'tablet': { name: 'Tablets', query: 'best tablet' }, 'speaker': { name: 'Speakers', query: 'best speaker' }, 'charger': { name: 'Phone Chargers', query: 'best charger' }, 'mouse': { name: 'Computer Mouse', query: 'best mouse' }, 'software': { name: 'Software & Apps', query: 'software deals' }, 'hosting': { name: 'Web Hosting', query: 'web hosting' }, 'vpn': { name: 'VPN Services', query: 'best vpn' }, 'antivirus': { name: 'Antivirus Software', query: 'best antivirus' } }; const AMAZON_TAG = '2mrcarter-20'; const MAX_INSERTIONS = 3; let insertionCount = 0; function createAffiliateBox(productKey, productData) { const box = document.createElement('div'); box.className = 'wikiwax-affiliate-box'; box.innerHTML = `
Recommended

${productData.name}

Explore curated options on Amazon

View on Amazon →
As an Amazon Associate, WikiWax earns from qualifying purchases.
`; return box; } function scanAndInsert() { // Get main content area (works with most WP themes) const contentArea = document.querySelector('article') || document.querySelector('.post-content') || document.querySelector('.entry-content') || document.querySelector('main'); if (!contentArea) return; const paragraphs = contentArea.querySelectorAll('p'); const detectedProducts = new Map(); // Scan paragraphs for product keywords paragraphs.forEach((para) => { const text = para.textContent.toLowerCase(); for (const [key, data] of Object.entries(PRODUCT_CATEGORIES)) { if (text.includes(key) && !detectedProducts.has(key)) { detectedProducts.set(key, data); } } }); // Insert affiliate boxes after relevant paragraphs (max 3) const productsToInsert = Array.from(detectedProducts.entries()).slice(0, MAX_INSERTIONS); let paraIndex = 0; productsToInsert.forEach(([productKey, productData]) => { const targetPara = paragraphs[Math.floor(paragraphs.length / (productsToInsert.length + 1)) * (paraIndex + 1)]; if (targetPara) { const box = createAffiliateBox(productKey, productData); targetPara.parentNode.insertBefore(box, targetPara.nextSibling); insertionCount++; } paraIndex++; }); } // Run on page load if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', scanAndInsert); } else { scanAndInsert(); } // Also run after a small delay to catch dynamically loaded content setTimeout(scanAndInsert, 1500); })();