feat(servicos): topo, entregáveis e cases por serviço, assunto próprio no WhatsApp e títulos curtos
This commit is contained in:
1 parent
cf360041bd
commit
2fd8b063d9
33 files changed
+1578
-300
No files matched your search
+29
-41
@@ -14,7 +14,6 @@ export const SEO_IDS = {
|
||||
website: `${siteUrl}/#website`,
|
||||
person: `${siteUrl}/#person`,
|
||||
profilePage: `${siteUrl}/curriculo#profile-page`,
|
||||
professionalService: `${siteUrl}/#professional-service`,
|
||||
} as const;
|
||||
|
||||
export function buildWebSiteJsonLd() {
|
||||
@@ -51,6 +50,7 @@ export function buildPersonJsonLd() {
|
||||
"@type": "Place",
|
||||
name: "Garuva, Santa Catarina, Brasil",
|
||||
},
|
||||
// perfis profissionais públicos e no ar; a conta do GitHub foi suspensa (404) e o Instagram fica fora por política
|
||||
sameAs: ["https://www.linkedin.com/in/evandrodevbr/"],
|
||||
} as const;
|
||||
}
|
||||
@@ -67,39 +67,34 @@ export function buildProfilePageJsonLd() {
|
||||
}
|
||||
|
||||
/**
|
||||
* O negócio como `ProfessionalService`: onde atende (Garuva, Joinville, Santa Catarina e o Brasil, de forma remota) e as três ofertas
|
||||
* da home como catálogo. Sem endereço de rua, preço, prazo, telefone ou e-mail: o que não está publicado no site não entra nos
|
||||
* dados estruturados. Só o construtor: quem o coloca na página é a home.
|
||||
* Área de atendimento de todo nó `Service` (as ofertas da home e as páginas de serviço): a mesma do texto visível, "Garuva e
|
||||
* Joinville (SC), atendimento remoto em todo o Brasil". Um valor só, para os dados estruturados não divergirem entre páginas.
|
||||
*/
|
||||
export function buildProfessionalServiceJsonLd() {
|
||||
return {
|
||||
"@type": "ProfessionalService",
|
||||
"@id": SEO_IDS.professionalService,
|
||||
name: siteName,
|
||||
url: siteUrl,
|
||||
description:
|
||||
"Sites, sistemas web e aplicativos sob medida, e revisão de sistemas que já existem, inclusive feitos com IA. Garuva e Joinville (SC), remoto em todo o Brasil.",
|
||||
founder: { "@id": SEO_IDS.person },
|
||||
areaServed: [
|
||||
{ "@type": "City", name: "Garuva" },
|
||||
{ "@type": "City", name: "Joinville" },
|
||||
{ "@type": "AdministrativeArea", name: "Santa Catarina" },
|
||||
{ "@type": "Country", name: "Brasil" },
|
||||
],
|
||||
hasOfferCatalog: {
|
||||
"@type": "OfferCatalog",
|
||||
name: "Serviços de desenvolvimento de software",
|
||||
itemListElement: serviceOffers.map((offer) => ({
|
||||
"@type": "Offer",
|
||||
itemOffered: {
|
||||
"@type": "Service",
|
||||
name: offer.name,
|
||||
description: offer.summary,
|
||||
url: `${siteUrl}${offer.href}`,
|
||||
},
|
||||
})),
|
||||
},
|
||||
} as const;
|
||||
const serviceAreaServed = [
|
||||
{ "@type": "City", name: "Garuva" },
|
||||
{ "@type": "City", name: "Joinville" },
|
||||
{ "@type": "AdministrativeArea", name: "Santa Catarina" },
|
||||
{ "@type": "Country", name: "Brasil" },
|
||||
] as const;
|
||||
|
||||
/**
|
||||
* As três ofertas da home como nós `Service`, ligados à pessoa (`provider`) e com a área de atendimento (`serviceAreaServed`).
|
||||
* Nada de `ProfessionalService`, `LocalBusiness` ou catálogo de ofertas: a política
|
||||
* de docs/seo-geo-operations.md os exclui sem entidade ou local comprovado. Sem endereço, preço, prazo, telefone ou e-mail: o que
|
||||
* não está publicado no site não entra nos dados estruturados. Só o construtor: quem o coloca na página é a home.
|
||||
* O `url` é a página da oferta (a revisão abre /ia). O `@id` é da home, para não repetir o do nó que a página do serviço emite
|
||||
* com outra descrição.
|
||||
*/
|
||||
export function buildOfferServicesJsonLd() {
|
||||
return serviceOffers.map((offer) => ({
|
||||
"@type": "Service",
|
||||
"@id": `${siteUrl}/#service-${offer.id}`,
|
||||
name: offer.name,
|
||||
description: offer.summary,
|
||||
url: `${siteUrl}${offer.href}`,
|
||||
provider: { "@id": SEO_IDS.person },
|
||||
areaServed: serviceAreaServed,
|
||||
}));
|
||||
}
|
||||
|
||||
export function buildServiceJsonLd(service: ServicePageContent) {
|
||||
@@ -112,14 +107,7 @@ export function buildServiceJsonLd(service: ServicePageContent) {
|
||||
name: service.navLabel,
|
||||
description: service.metaDescription,
|
||||
provider: { "@id": SEO_IDS.person },
|
||||
areaServed: [
|
||||
{ "@type": "City", name: "Garuva" },
|
||||
{ "@type": "City", name: "Joinville" },
|
||||
{
|
||||
"@type": "AdministrativeArea",
|
||||
name: "Norte de Santa Catarina",
|
||||
},
|
||||
],
|
||||
areaServed: serviceAreaServed,
|
||||
} as const;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user