Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions templates/base.j2
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
{% set event_city = event.location.city if event and event.location and event.location.city else (city | default('')) %}
{% set event_state = event.location.state if event and event.location and event.location.state else (state | default('')) %}
{% set event_desc = event.description if event and event.description else (event_description | default('')) %}
{# Descrição curta para buscadores e previews de redes sociais (event.meta_description) #}
{% set event_meta_desc = event.meta_description if event and event.meta_description else (event_name ~ ' ' ~ event_edition ~ ((' em ' ~ event_city ~ ', ' ~ event_state) if event_city else '') ~ '. ' ~ event_desc) %}
{% set event_url = event.url if event and event.url else ('https://' ~ event_edition ~ '.pythonnordeste.org/') %}
{% set event_preview_image = theme.preview_image if theme and theme.preview_image else (preview_image | default('static/img/logo_pyne2027.png')) %}
{# Redes sociais (Facebook, LinkedIn, WhatsApp, X) exigem URL absoluta na og:image #}
Expand All @@ -28,7 +30,7 @@
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="{{ event_name }} {{ event_edition }}{% if event_city %} em {{ event_city }}, {{ event_state }}{% endif %}. {{ event_desc }}">
<meta name="description" content="{{ event_meta_desc }}">
<meta name="keywords" content="python, {{ event_name | lower }}, programacao, pyladies, {{ event_city | lower }}, {{ event_state | lower }}, {{ event_edition }}, evento, tecnologia, inclusao">

<!-- Controle de Indexação para Motores de Busca (Google, Bing, etc.) -->
Expand All @@ -47,7 +49,7 @@

<!-- Open Graph: preview de links no Facebook, LinkedIn, WhatsApp, Telegram, etc. -->
<meta property="og:title" content="{{ event_title }}">
<meta property="og:description" content="{{ event_desc }}">
<meta property="og:description" content="{{ event_meta_desc }}">
<meta property="og:type" content="website">
<meta property="og:url" content="{{ event_url }}">
<meta property="og:image" content="{{ event_preview_image_url }}">
Expand All @@ -65,7 +67,7 @@
<!-- Twitter / X Cards -->
<meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="{{ event_title }}">
<meta name="twitter:description" content="{{ event_desc }}">
<meta name="twitter:description" content="{{ event_meta_desc }}">
<meta name="twitter:image" content="{{ event_preview_image_url }}">
<meta name="twitter:image:alt" content="{{ event_preview_image_alt }}">

Expand Down
20 changes: 20 additions & 0 deletions tests/test_site.py
Original file line number Diff line number Diff line change
Expand Up @@ -143,3 +143,23 @@ def test_social_preview_uses_absolute_image_url():
assert f'name="twitter:image" content="{expected}"' in index_html
assert 'property="og:title"' in index_html
assert 'name="twitter:card" content="summary_large_image"' in index_html


def test_meta_description_used_in_search_and_social_tags():
settings = load_settings()
meta_description = settings["event"].get("meta_description")
if not meta_description:
pytest.skip("event.meta_description não definido em variables.yaml.")

assert len(meta_description) <= 160, (
"event.meta_description deve ter até 160 caracteres para não ser cortada no Google."
)

render()
index_html = (output_folder / "index.html").read_text(encoding="utf-8")
for tag in (
f'name="description" content="{meta_description}"',
f'property="og:description" content="{meta_description}"',
f'name="twitter:description" content="{meta_description}"',
):
assert tag in index_html, f"Meta tag ausente ou divergente: {tag}"
3 changes: 3 additions & 0 deletions variables.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ event:
edition: "2027" # Ex: "2027", "10ª Edição"
tagline: "O maior evento de Python do Nordeste agora no litoral do Piauí!"
description: "Pessoas > Tecnologia"
# Descrição curta usada nas meta tags (Google, og:description, twitter:description).
# Recomendado: até ~160 caracteres para não ser cortada nos resultados de busca.
meta_description: "Desde 2013, a Python Nordeste inclui pessoas na tecnologia e dissemina Python no Nordeste. Em 2027, o evento acontece em Parnaíba-PI."
date: "2027" # Pode ser "15 a 18 de Outubro" ou "Em breve"
format: "presencial" # "presencial" ou "online"
url: "https://2027.pythonnordeste.org/"
Expand Down
Loading