From 1a31947fca1f92da8b824666308b41fd77109c13 Mon Sep 17 00:00:00 2001 From: AsmitaMishra24 <146121869+AsmitaMishra24@users.noreply.github.com> Date: Mon, 5 Aug 2024 01:06:38 +0530 Subject: [PATCH] Added SEO Analyzer --- SEO Analysis/icon128.png | Bin 0 -> 2812 bytes SEO Analysis/icon16.png | Bin 0 -> 279 bytes SEO Analysis/icon48.png | Bin 0 -> 908 bytes SEO Analysis/index.html | 24 +++++++++++++++++++++ SEO Analysis/manifest.json | 22 +++++++++++++++++++ SEO Analysis/script.js | 43 +++++++++++++++++++++++++++++++++++++ SEO Analysis/style.css | 32 +++++++++++++++++++++++++++ 7 files changed, 121 insertions(+) create mode 100644 SEO Analysis/icon128.png create mode 100644 SEO Analysis/icon16.png create mode 100644 SEO Analysis/icon48.png create mode 100644 SEO Analysis/index.html create mode 100644 SEO Analysis/manifest.json create mode 100644 SEO Analysis/script.js create mode 100644 SEO Analysis/style.css diff --git a/SEO Analysis/icon128.png b/SEO Analysis/icon128.png new file mode 100644 index 0000000000000000000000000000000000000000..ce927fbde37f6c59ac073a8968a8f22b3961d4cd GIT binary patch literal 2812 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 literal 0 HcmV?d00001 diff --git a/SEO Analysis/icon16.png b/SEO Analysis/icon16.png new file mode 100644 index 0000000000000000000000000000000000000000..ddfe23aafacd2ca1e99d75cd160df79d781abd86 GIT binary patch literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^f*{Pn1|+R>-G2co#^NA%Cx&(BWL^R}Ea{HEjtmSN z`?>!lvI6;>1s;*b3=DinK$vl=HlH+5aE+&nV~BDTfoDr^{?P`-8&mxgPt`%T&c|8UYOS}ZgIl)wW8kSNq66AEZvYR zZSg$w{Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXf10hL7K~!i%?U>Cg z>`@rUzcb^tP(~JmC@-^+vKR|Rl!XOCn8b>|fsL}b3ki)fv9Qt<3x!Nm5+N35EU?l{ zgYy1Tl9{}O@p9*R8h3ZQ_jm76$GzuMzkYL`Gr!+?zUMj5dCrXPJq*4$`pErDqeRGp z5+Mspge)i#vYCug#h93w;3#xXva+&*yu3V= zm6fqw6zVSwp)R#p~nZ*Q@bfBc9glmn-WQvUVYcxk4AX(p3#DW z0=&Gu@Rs{g)Y{tGFg`wxrKKggsqY&_zyt6u6$A9#m9RaQpc97`wZ>XlQ8QC{TTvnVI2(A~{OcoJ7z$%3`q~ zCMM>`d$gc=IZaPbvr~G#9v+VekB^T?NlD?;soU*FYHBLau-RL;iO(mN=BtX3;8!TS1o?$ZQ`_)Nly{vM9Ndw4U5Sj3|$wk#+SvY + + + + + SEO Analysis Tool + + + +
+

SEO Analyzer

+ + +
+

Results:

+

Title Tag:

+

Meta Description:

+

H1 Tag:

+

Word Count:

+
+
+ + + diff --git a/SEO Analysis/manifest.json b/SEO Analysis/manifest.json new file mode 100644 index 00000000..4b06b0b9 --- /dev/null +++ b/SEO Analysis/manifest.json @@ -0,0 +1,22 @@ +{ + "manifest_version": 3, + "name": "SEO Analyzer", + "version": "1.0", + "description": "A tool to analyze the SEO of a webpage.", + "permissions": [ + "activeTab" + ], + "action": { + "default_popup": "index.html", + "default_icon": { + "16": "icon16.png", + "48": "icon48.png", + "128": "icon128.png" + } + }, + "icons": { + "16": "icon16.png", + "48": "icon48.png", + "128": "icon128.png" + } +} diff --git a/SEO Analysis/script.js b/SEO Analysis/script.js new file mode 100644 index 00000000..1c48b28d --- /dev/null +++ b/SEO Analysis/script.js @@ -0,0 +1,43 @@ +document.getElementById('analyze-btn').addEventListener('click', analyzeSEO); + +async function analyzeSEO() { + const url = document.getElementById('url-input').value; + if (!url) { + alert('Please enter a URL'); + return; + } + + try { + const response = await fetch(`https://api.allorigins.win/get?url=${encodeURIComponent(url)}`); + if (!response.ok) { + throw new Error('Network response was not ok'); + } + + const rawResponse = await response.text(); + console.log('Raw response:', rawResponse); + + const data = JSON.parse(rawResponse); + + const parser = new DOMParser(); + const doc = parser.parseFromString(data.contents, 'text/html'); + + const title = doc.querySelector('title') ? doc.querySelector('title').innerText : 'No title found'; + + const metaDescription = doc.querySelector('meta[name="description"]') + ? doc.querySelector('meta[name="description"]').getAttribute('content') + : 'No meta description found'; + + const h1 = doc.querySelector('h1') ? doc.querySelector('h1').innerText : 'No H1 tag found'; + + const wordCount = doc.body.innerText.split(/\s+/).filter(Boolean).length; + + document.querySelector('#title-tag span').innerText = title; + document.querySelector('#meta-description span').innerText = metaDescription; + document.querySelector('#h1-tag span').innerText = h1; + document.querySelector('#word-count span').innerText = wordCount; + + } catch (error) { + console.error('Error fetching or processing the URL:', error); + alert('Failed to fetch the URL or process the content. Please check the console for more details.'); + } +} diff --git a/SEO Analysis/style.css b/SEO Analysis/style.css new file mode 100644 index 00000000..704df117 --- /dev/null +++ b/SEO Analysis/style.css @@ -0,0 +1,32 @@ +body { + font-family: Arial, sans-serif; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + margin: 0; + background-color: #f0f0f0; +} + +.container { + text-align: center; + background: #fff; + padding: 20px; + border-radius: 10px; + box-shadow: 0 0 10px rgba(0, 0, 0, 0.1); +} + +input, button { + padding: 10px; + margin: 5px; + font-size: 16px; +} + +#results { + margin-top: 20px; + text-align: left; +} + +#results h2 { + margin-bottom: 10px; +}