Skip to content

Instantly share code, notes, and snippets.

View estevecastells's full-sized avatar
😝

Esteve Castells estevecastells

😝
View GitHub Profile
@estevecastells
estevecastells / news_schema_visualised.js
Last active January 19, 2024 22:18
News Schema Visualised
javascript:(function() {
var schemas = document.querySelectorAll('script[type="application/ld+json"]');
var newsSchema = null;
schemas.forEach(function(schema) {
var json = JSON.parse(schema.innerText);
if (json['@type'] === 'NewsArticle') {
newsSchema = json;
}
});
if (newsSchema) {
@estevecastells
estevecastells / gist:0f22de07936f99494a40c75ad1cb6afa
Last active October 28, 2023 13:21
Custom Prompt ChatGPT
- Be highly organized.
- Suggest proactive solutions and anticipate my needs.
- Treat me as an expert in all subject matter.
- Be accurate and thorough; mistakes erode my trust.
- Provide detailed explanations; I appreciate lots of detail.
- Value good arguments over authorities; the source is irrelevant.
- Consider new technologies and contrarian ideas.
- High levels of speculation or prediction are fine; just flag it.
- Recommend only the highest-quality, meticulously designed products.
- Recommend products from all over the world; location is irrelevant.
@estevecastells
estevecastells / bookmarklet_nofollow_sponsored_ugc.js
Last active August 8, 2023 17:45
Highlight nofollow, sponsored, ugc (Not created by me)
javascript:void function(){var d,e,f,g,h,i,j,k,l,m,n;var o=document['getElementById']('supp-legends-5864');var p={};p['link']='#A7D189';p['nofollow']='#FDBD76';p['ugc']='#FAEBA6';p['sponsored']='#EB949D';var q={};q['link']='#86AF68';q['nofollow']='#DB913F';q['ugc']='#FCDCA9';q['sponsored']='#C9646E';d=document['getElementsByTagName']('a');for(e=0x0;e<d['length'];e++){f=d[e];g=f['attributes'];j=![];k=![];l=![];m=![];for(h=0x0;h<g['length'];h++){i=g[h];n=i['name']['toLowerCase']();if(n=='rel'&&i['value']['toLowerCase']()['indexOf']('nofollow')!=-0x1){j=!![];}if(n=='rel'&&i['value']['toLowerCase']()['indexOf']('ugc')!=-0x1){k=!![];}if(n=='rel'&&i['value']['toLowerCase']()['indexOf']('sponsored')!=-0x1){l=!![];}if(n=='href'){m=!![];}}if(m){if(j)f['style']['backgroundColor']=p['nofollow'];else if(k)f['style']['backgroundColor']=p['ugc'];else if(l)f['style']['backgroundColor']=p['sponsored'];else f['style']['backgroundColor']=p['link'];f['style']['border']='2px\x20solid\x20'+(j?q['nofollow']:q['link']);if(j)f['styl
@estevecastells
estevecastells / bookmarklet_robots_txt_minified.js
Last active October 14, 2023 13:57
Minified Bookmarklet - Visualize URLs blocked by Robots.txt in a page
javascript:!function(){let e=Array.from(document.querySelectorAll("a")).map(e=>new URL(e.href,window.location.origin).href).filter(e=>{try{return new URL(e).origin===window.location.origin&&!e.includes("#")}catch(t){return console.error(%60Error parsing URL: ${e}%60),!1}});e=Array.from(new Set(e));let t=window.location.origin+"/robots.txt";fetch("https://tools.estevecastells.com/api/bulk-robots-txt/v1",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({robots_txt_url:t,links:e})}).then(e=>e.json()).then(e=>{let o="box-"+Math.random().toString(36).substr(2,9),r=document.createElement("div");r.attachShadow({mode:"open"});let n=document.createElement("div");if(n.style="position:fixed;bottom:5px;right:5px;background-color:white;width:300px;padding:10px;border:1px solid grey;z-index:9999;",n.id=o,document.body.appendChild(r),r.shadowRoot.appendChild(n),e.error)n.innerHTML=%60<span style="position:absolute;right:5px;top:0px;cursor:pointer;padding:0 4px;background-color:white;" id="close
@estevecastells
estevecastells / bookmarklet_robots_txt.js
Last active August 4, 2023 07:44
Bookmarklet - Visualize URLs blocked by Robots.txt in a page
javascript:(function(){
let links = Array.from(document.querySelectorAll('a'))
.map(a => new URL(a.href, window.location.origin).href)
.filter(url => {
try {
let urlObj = new URL(url);
return urlObj.origin === window.location.origin && !url.includes('#');
} catch (err) {
console.error(`Error parsing URL: ${url}`);
return false;
@estevecastells
estevecastells / permutation_at_scale.py
Last active April 23, 2023 15:21
Script to generate permutations of two elements at scale
import itertools
import csv
# Function to read elements from the CSV file
def read_elements(file_path):
with open(file_path, 'r', encoding='utf-8') as csvfile:
reader = csv.reader(csvfile)
elements = [row[0] for row in reader]
return elements
@estevecastells
estevecastells / gist:84459cd1c720afc0d1b6719c8499eda8
Created February 17, 2023 22:04
Download Giphy GIFs to Desktop
curl https://media.giphy.com/media/3jcgPn9fzfaXc1EHJC/giphy.gif --output ~/Desktop/download.gif
// Change 3jcgPn9fzfaXc1EHJC for your GIFs URL
javascript: (function () { var titulos = document.querySelectorAll(".FAxxKc, .yzifAd, .WBi6vc"); titulos.forEach(titulo => { titulo.parentElement.parentElement.style.filter = 'blur(5px)'; });})();
javascript:(function(){ window.location.href='https://12ft.io/proxy?q=%27+encodeURIComponent(location.href); })();
### Select Submitted sitemaps in GSC with a CSS class to export them without having to manually copy paste - it can be that the class name in itself changes so check since it's dynamic to avoid scraping by GSC
//*[contains(@class, 'XgRaPc AB6Eee RVEMNe XL1mme')]