From 1e86ed15916b7e1ae3fd6772c99fb40231f407cc Mon Sep 17 00:00:00 2001 From: erjemin Date: Wed, 11 Feb 2026 13:39:23 +0300 Subject: [PATCH] =?UTF-8?q?add:=20-=20=D0=9C=D0=B8=D0=BA=D1=80=D0=BE=D1=80?= =?UTF-8?q?=D0=B0=D0=B7=D0=BC=D0=B5=D1=82=D0=BA=D0=B0=20`Schema.org`=20(JS?= =?UTF-8?q?ON-LD)=20=D0=B4=D0=BB=D1=8F=20=D0=BF=D0=BE=D1=81=D1=82=D0=BE?= =?UTF-8?q?=D0=B2=20=D0=B8=20=D1=81=D1=82=D1=80=D0=B0=D0=BD=D0=B8=D1=86=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=83=D0=BB=D1=83=D1=87=D1=88=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20SEO=20=D0=B8=20=D0=BF=D0=BE=D0=BD=D0=B8=D0=BC?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BD=D1=82=D0=B5=D0=BD?= =?UTF-8?q?=D1=82=D0=B0=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=BE=D0=B2=D0=B8?= =?UTF-8?q?=D0=BA=D0=B0=D0=BC=D0=B8=20=D0=B8=20=D0=98=D0=98.=20-=20=D0=A4?= =?UTF-8?q?=D0=B0=D0=B9=D0=BB=20`llms.txt`=20=D0=B4=D0=BB=D1=8F=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B5=D0=B4=D0=BE=D1=81=D1=82=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F=20=D0=B8=D0=BD=D1=84=D0=BE=D1=80=D0=BC=D0=B0?= =?UTF-8?q?=D1=86=D0=B8=D0=B8=20=D0=BE=20=D1=81=D0=B0=D0=B9=D1=82=D0=B5=20?= =?UTF-8?q?=D0=B8=20API=20=D0=B4=D0=BB=D1=8F=20=D0=B1=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D1=88=D0=B8=D1=85=20=D1=8F=D0=B7=D1=8B=D0=BA=D0=BE=D0=B2=D1=8B?= =?UTF-8?q?=D1=85=20=D0=BC=D0=BE=D0=B4=D0=B5=D0=BB=D0=B5=D0=B9=20(LLM).?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix: - Экранирования кавычек в JSON-LD, Title и Description. - Перезапуск watchtower при его остановке. --- CHANGELOG.md | 12 +++++ config/nginx/etpgrf--internal-nginx.conf | 8 ++++ docker-compose.prod.yml | 1 + etpgrf_site/__init__.py | 2 +- .../blog/templates/blog/page_detail.html | 28 +++++++++-- .../blog/templates/blog/post_detail.html | 33 +++++++++++-- .../typograph/templates/typograph/base.html | 16 ++++--- public/static/llms.txt | 48 +++++++++++++++++++ 8 files changed, 131 insertions(+), 17 deletions(-) create mode 100644 public/static/llms.txt diff --git a/CHANGELOG.md b/CHANGELOG.md index 8e97f4b..feef195 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,18 @@ Формат основан на [Keep a Changelog](https://keepachangelog.com/ru/1.0.0/), и этот проект придерживается [Semantic Versioning](https://semver.org/lang/ru/). +## [0.2.4] - 2025-02-12 + +### Добавлено +- Микроразметка `Schema.org` (JSON-LD) для постов и страниц для улучшения SEO и понимания контента поисковиками и ИИ. +- Файл `llms.txt` для предоставления информации о сайте и API для больших языковых моделей (LLM). +- Кастомный фильтр `unescape` для очистки мета-тегов от HTML-сущностей и переводов строк. + +### Исправлено +- Исправлена ошибка, при которой счетчик символов не обновлялся при восстановлении вкладки из истории браузера. +- Исправлена ошибка экранирования кавычек в JSON-LD, Title и Description. +- Перезапуск watchtower при его остановке. + ## [0.2.3] - 2025-02-11 ### Изменено diff --git a/config/nginx/etpgrf--internal-nginx.conf b/config/nginx/etpgrf--internal-nginx.conf index 511ffec..324ce72 100644 --- a/config/nginx/etpgrf--internal-nginx.conf +++ b/config/nginx/etpgrf--internal-nginx.conf @@ -99,6 +99,14 @@ http { expires 30d; } + # llms.txt (для ИИ) + location = /llms.txt { + alias /app/public/static_collected/llms.txt; + access_log off; + log_not_found off; + expires 30d; + } + location / { # --- ЗАЩИТА ОТ БРУТФОРСА --- # Применяем зону 'one', разрешаем "всплеск" до 10 запросов. diff --git a/docker-compose.prod.yml b/docker-compose.prod.yml index 7edcb95..14f1459 100644 --- a/docker-compose.prod.yml +++ b/docker-compose.prod.yml @@ -112,6 +112,7 @@ services: # Если нужно указать реестр явно (обычно watchtower сам понимает из имени образа) # - WATCHTOWER_REGISTRY_URL=git.cube2.ru command: --interval 1800 --cleanup # Проверять каждые 30 минут + restart: always volumes: diff --git a/etpgrf_site/__init__.py b/etpgrf_site/__init__.py index 1301720..c4cc724 100644 --- a/etpgrf_site/__init__.py +++ b/etpgrf_site/__init__.py @@ -2,7 +2,7 @@ Основные возможности: - Веб-интерфейс для ввода текста и настройки параметров типографики. """ -__version__ = "0.2.2" +__version__ = "0.2.4" __author__ = "Sergei Erjemin" __email__ = "erjemin@gmail.com" __license__ = "MIT" diff --git a/etpgrf_site/blog/templates/blog/page_detail.html b/etpgrf_site/blog/templates/blog/page_detail.html index 2a500df..06ad7f6 100644 --- a/etpgrf_site/blog/templates/blog/page_detail.html +++ b/etpgrf_site/blog/templates/blog/page_detail.html @@ -1,13 +1,32 @@ {% extends 'typograph/base.html' %} -{% load static %} -{% load typograph_extras %} - - +{% load static typograph_extras %} +{# --- SEO --- #} {% block title %}{% if page.seo_title %}{{ page.seo_title }}{% else %}{{ page.title|striptags|unescape|safe }}{% endif %} — ETPGRF{% endblock %} {% block description %}{% if page.seo_description %}{{ page.seo_description }}{% else %}{{ page.excerpt|striptags|unescape|safe|truncatechars:160 }}{% endif %}{% endblock %} {% block keywords %}{% if page.seo_keywords %}{{ post.seo_keywords }}{% else %}типограф, типографика, блог типограф, онлайн типограф, подготовка текста для веба, html типограф, неразрывные пробелы, кавычки елочки, длинное тире, очистка текста от мусора, интернет верстка, муравьев, лебедев{% endif %}{% endblock %} +{# --- Schema.org --- #} + {% block schema %}{% endblock %} + {% block og_title %}{% if page.seo_title %}{{ page.seo_title }}{% else %}{{ page.title|striptags|unescape|safe }}{% endif %}{% endblock %} {% block og_description %}{% if page.seo_description %}{{ page.seo_description }}{% else %}{{ page.excerpt|safe|striptags|unescape|truncatechars:160 }}{% endif %}{% endblock %} {% block og_image %}{% if page.image %}{{ request.scheme }}://{{ request.get_host }}{{ page.image.url }}{% else %}{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}{% endif %}{% endblock %} @@ -31,7 +50,6 @@ {# Правая колонка: Контент #}
-

{{ page.title|safe }}

{% if page.excerpt %} diff --git a/etpgrf_site/blog/templates/blog/post_detail.html b/etpgrf_site/blog/templates/blog/post_detail.html index beb8fee..81e5d70 100644 --- a/etpgrf_site/blog/templates/blog/post_detail.html +++ b/etpgrf_site/blog/templates/blog/post_detail.html @@ -1,11 +1,36 @@ {% extends 'typograph/base.html' %} -{% load static %} -{% load typograph_extras %} +{% load static typograph_extras %} -{% block title %}{% if post.seo_title %}{{ post.seo_title }}{% else %}{{ post.title|striptags|unescape|safe }}{% endif %} — ETPGRF{% endblock %} -{% block description %}{% if post.seo_description %}{{ post.seo_description }}{% else %}{{ post.excerpt|striptags|unescape|safe|truncatechars:160 }}{% endif %}{% endblock %} +{# --- SEO --- #} +{% block title %}{% if post.seo_title %}{{ post.seo_title }}{% else %}{{ post.title|striptags|unescape|safe|escapejs }}{% endif %} — ETPGRF{% endblock %} +{% block description %}{% if post.seo_description %}{{ post.seo_description|escapejs }}{% else %}{{ post.excerpt|striptags|unescape|safe|truncatechars:160|escapejs }}{% endif %}{% endblock %} {% block keywords %}{% if post.seo_keywords %}{{ post.seo_keywords }}{% else %}типограф, типографика, блог типограф, онлайн типограф, подготовка текста для веба, html типограф, неразрывные пробелы, кавычки елочки, длинное тире, очистка текста от мусора, интернет верстка, муравьев, лебедев{% endif %}{% endblock %} +{# --- Schema.org --- #} +{% block schema %}{% endblock %} + {% block og_title %}{% if post.seo_title %}{{ post.seo_title }}{% else %}{{ post.title|striptags|unescape|safe }}{% endif %}{% endblock %} {% block og_description %}{% if post.seo_description %}{{ post.seo_description }}{% else %}{{ post.excerpt|striptags|unescape|safe|truncatechars:160 }}{% endif %}{% endblock %} {% block og_image %}{% if post.image %}{{ request.scheme }}://{{ request.get_host }}{{ post.image.url }}{% else %}{{ request.scheme }}://{{ request.get_host }}{% static 'img/etpgrf-logo-for-fb-vk-x.gif' %}{% endif %}{% endblock %} diff --git a/etpgrf_site/typograph/templates/typograph/base.html b/etpgrf_site/typograph/templates/typograph/base.html index 70cfb56..c524d1f 100644 --- a/etpgrf_site/typograph/templates/typograph/base.html +++ b/etpgrf_site/typograph/templates/typograph/base.html @@ -7,6 +7,7 @@ + {# --- Schema.org (JSON-LD) --- #}{% block schema %}{% endblock %} {# --- Open Graph (Facebook, VK, LinkedIn, Telegram) --- #} @@ -20,12 +21,12 @@ {# --- Favicons --- #} - - - - - - + {# --- Favicons --- #} + {# --- Favicons --- #} + {# --- Favicons --- #} + {# --- Favicons --- #} + {# --- Favicons --- #} + {# --- Favicons --- #} {# Bootstrap 5 CSS #} {# Bootstrap Icons #}