feat: improve SEO with structured data, breadcrumbs, and comprehensive favicon support while optimizing images and config performance.
This commit is contained in:
1 parent
f93e0fe460
commit
031b35d7dd
20 files changed
+308
-26
No files matched your search
+81
-17
@@ -91,31 +91,95 @@ export const jsonLd = {
|
||||
};
|
||||
},
|
||||
|
||||
/** Ficha técnica de uma série, com as especificações como propriedades. */
|
||||
/** Documentação e ficha técnica da série como TechArticle para o Google. */
|
||||
serie(chave, serie) {
|
||||
const prop = (nome, valor) =>
|
||||
valor ? { "@type": "PropertyValue", name: nome, value: String(valor) } : null;
|
||||
|
||||
const propriedades = [
|
||||
prop("Fabricante", "Espressif Systems"),
|
||||
prop("Arquitetura", serie.arquitetura),
|
||||
prop("Núcleos", serie.nucleos),
|
||||
prop("Frequência máxima", serie.frequencia),
|
||||
prop("SRAM", serie.memoria_sram),
|
||||
prop("RTC SRAM", serie.memoria_sram_rtc),
|
||||
prop("Flash suportada", serie.flash_suportada),
|
||||
prop("PSRAM suportada", serie.psram_suportada),
|
||||
prop("GPIO", serie.gpio),
|
||||
prop("Wi-Fi", serie.wifi),
|
||||
prop("Bluetooth", serie.bluetooth),
|
||||
prop("Zigbee / Thread / 802.15.4", serie.zigbee_thread),
|
||||
prop("Encapsulamento", serie.encapsulamento),
|
||||
prop("ESP-IDF mínimo", serie.esp_idf_minimo),
|
||||
].filter(Boolean);
|
||||
|
||||
return {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Product",
|
||||
"@id": `${SITE.url}/series/${chave}#produto`,
|
||||
name: serie.nome_completo || chave,
|
||||
"@type": "TechArticle",
|
||||
"@id": `${SITE.url}/series/${chave}#artigo`,
|
||||
headline: `${serie.nome_completo || chave}: especificações e pinagem`,
|
||||
name: `${serie.nome_completo || chave} - Documentação Técnica e Especificações`,
|
||||
description: serie.descricao,
|
||||
category: "Microcontrolador",
|
||||
brand: { "@type": "Brand", name: "Espressif Systems" },
|
||||
inLanguage: "pt-BR",
|
||||
mainEntityOfPage: `${SITE.url}/series/${chave}`,
|
||||
url: `${SITE.url}/series/${chave}`,
|
||||
additionalProperty: [
|
||||
prop("Arquitetura", serie.arquitetura),
|
||||
prop("Núcleos", serie.nucleos),
|
||||
prop("Frequência máxima", serie.frequencia),
|
||||
prop("SRAM", serie.memoria_sram),
|
||||
prop("GPIO", serie.gpio),
|
||||
prop("Wi-Fi", serie.wifi),
|
||||
prop("Bluetooth", serie.bluetooth),
|
||||
prop("Encapsulamento", serie.encapsulamento),
|
||||
prop("ESP-IDF mínimo", serie.esp_idf_minimo),
|
||||
].filter(Boolean),
|
||||
author: {
|
||||
"@type": "Person",
|
||||
name: SITE.autor,
|
||||
url: SITE.autorUrl,
|
||||
},
|
||||
publisher: {
|
||||
"@type": "Organization",
|
||||
name: "Ciência Embarcada",
|
||||
url: SITE.blog,
|
||||
logo: {
|
||||
"@type": "ImageObject",
|
||||
url: `${SITE.url}/marca/espdocs-marca.svg`,
|
||||
},
|
||||
},
|
||||
about: {
|
||||
"@type": "Thing",
|
||||
name: serie.nome_completo || chave,
|
||||
description: serie.descricao,
|
||||
additionalProperty: propriedades,
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
/** Documentação técnica de framework. */
|
||||
framework(chave, framework) {
|
||||
return {
|
||||
"@context": "https://schema.org",
|
||||
"@type": "TechArticle",
|
||||
"@id": `${SITE.url}/frameworks/${encodeURIComponent(chave)}#artigo`,
|
||||
headline: `${framework.nome} para ESP32: Guia e Documentação`,
|
||||
name: `${framework.nome_completo || framework.nome} para ESP32`,
|
||||
description: framework.descricao,
|
||||
inLanguage: "pt-BR",
|
||||
mainEntityOfPage: `${SITE.url}/frameworks/${encodeURIComponent(chave)}`,
|
||||
url: `${SITE.url}/frameworks/${encodeURIComponent(chave)}`,
|
||||
author: {
|
||||
"@type": "Person",
|
||||
name: SITE.autor,
|
||||
url: SITE.autorUrl,
|
||||
},
|
||||
publisher: {
|
||||
"@type": "Organization",
|
||||
name: "Ciência Embarcada",
|
||||
url: SITE.blog,
|
||||
logo: {
|
||||
"@type": "ImageObject",
|
||||
url: `${SITE.url}/marca/espdocs-marca.svg`,
|
||||
},
|
||||
},
|
||||
about: {
|
||||
"@type": "SoftwareApplication",
|
||||
name: framework.nome_completo || framework.nome,
|
||||
applicationCategory: "DeveloperApplication",
|
||||
operatingSystem: "Embedded",
|
||||
description: framework.descricao,
|
||||
url: framework.documentacao || `${SITE.url}/frameworks/${encodeURIComponent(chave)}`,
|
||||
},
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
Reference in new issue
Block a user