From ed881e19a6e4600f1b6b6a025726278224204dca Mon Sep 17 00:00:00 2001
From: berkio_admin_gitea
Date: Wed, 8 Jul 2026 06:42:54 +0000
Subject: [PATCH] =?UTF-8?q?SEO:=20RU-=D0=BC=D0=B5=D1=82=D0=B0=20=D0=BF?=
=?UTF-8?q?=D0=BE=D0=B4=20=D0=B7=D0=B0=D0=BF=D1=80=D0=BE=D1=81=D1=8B=20+?=
=?UTF-8?q?=20FAQ=20(=D0=B2=D0=B8=D0=B4=D0=B8=D0=BC=D1=8B=D0=B9=20=D0=B1?=
=?UTF-8?q?=D0=BB=D0=BE=D0=BA=20+=20FAQPage-=D1=80=D0=B0=D0=B7=D0=BC=D0=B5?=
=?UTF-8?q?=D1=82=D0=BA=D0=B0);=20=D1=84=D0=B8=D0=BA=D1=81=20=D0=BE=D1=82?=
=?UTF-8?q?=D1=87=D0=B5=D1=81=D1=82=D0=B2=D0=B0=20=D0=B2=20=D0=BE=D1=84?=
=?UTF-8?q?=D0=B5=D1=80=D1=82=D0=B5?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- RU title/description/keywords переписаны под реальные запросы («эффект сканирования»,
«как отсканированный», «добавить эффект скана», «без сканера», Word)
- FAQ (ru/en): server-rendered видимый блок (, ) + FAQPage JSON-LD
в head — контент под запросы и заявка на rich snippet
- Оферта: ИП Букреев Александр Иванович (было Игоревич)
Co-Authored-By: Claude Opus 4.8
---
app/main.py | 81 +++++++++++++++++++++++++++++++++++++++----
app/static/index.html | 12 +++++++
2 files changed, 86 insertions(+), 7 deletions(-)
diff --git a/app/main.py b/app/main.py
index 9b92ca1..96687c5 100644
--- a/app/main.py
+++ b/app/main.py
@@ -596,11 +596,11 @@ SEO_LOCALE = {
}
SEO = {
"ru": {
- "title": "pdf2scan — сделать скан из PDF онлайн бесплатно",
- "desc": "Сделайте скан из PDF онлайн — бесплатно, без регистрации. Эффект сканирования, сшивка (нитка, ленточка, пружинка, уголок, дырокол), нумерация страниц и лист «прошито-пронумеровано».",
- "og_desc": "Сделайте скан из PDF онлайн — бесплатно, без регистрации. Сшивка, нумерация, эффект сканирования в один клик.",
- "keywords": "сделать скан из pdf онлайн, pdf в скан онлайн, сканирование pdf бесплатно, pdf с эффектом сканирования, прошить документ онлайн, сшивка документов онлайн, растровый pdf онлайн, pdf2scan",
- "ld_desc": "Бесплатный онлайн-инструмент для создания PDF с эффектом сканирования. Сшивка нитками, ленточкой, уголком, пружинкой и дыроколом. Нумерация страниц, титульный лист, PDF/A.",
+ "title": "Эффект сканирования PDF онлайн — сделать скан из PDF | pdf2scan",
+ "desc": "Добавьте эффект сканирования к PDF онлайн — документ будет выглядеть как отсканированный, без принтера и сканера. Бесплатно и без регистрации. Сшивка (нитка, ленточка, пружинка, уголок, дырокол), нумерация страниц, титульный лист, PDF/A. Работает и с Word.",
+ "og_desc": "Добавьте эффект сканирования к PDF — как отсканированный документ, без сканера. Бесплатно, без регистрации, сшивка и нумерация в один клик.",
+ "keywords": "эффект сканирования pdf, добавить эффект сканирования, сделать скан из pdf онлайн, pdf в скан, pdf как отсканированный, сделать pdf похожим на скан, имитация сканера, сканирование pdf бесплатно, прошить документ онлайн, сшивка документов онлайн, word в скан, pdf2scan",
+ "ld_desc": "Бесплатный онлайн-инструмент, чтобы добавить эффект сканирования к PDF: документ выглядит как отсканированный. Сшивка нитками, ленточкой, уголком, пружинкой и дыроколом. Нумерация страниц, титульный лист, PDF/A. Работает и с Word.",
},
"en": {
"title": "pdf2scan — add a scan effect to PDF online, free",
@@ -646,6 +646,54 @@ SEO = {
},
}
+# FAQ для приоритетных языков: видимый блок на странице + FAQPage-разметка (rich snippets).
+SEO_FAQ = {
+ "ru": [
+ ("Как добавить эффект сканирования к PDF?",
+ "Загрузите PDF на pdf2scan.online, выберите тип сшивки и настройки (цвет, качество, нумерация) и нажмите «Обработать». Сервис превращает электронный PDF в растровый документ с реалистичным эффектом сканирования — как будто его напечатали и отсканировали."),
+ ("Как сделать PDF похожим на отсканированный документ?",
+ "pdf2scan растрирует каждую страницу и добавляет эффект сканирования: лёгкий наклон, шум и оттенок бумаги. Результат выглядит как скан с настоящего сканера — без принтера, МФУ и приложения."),
+ ("Это бесплатно и нужна ли регистрация?",
+ "Файлы до 50 МБ и до 100 страниц обрабатываются бесплатно и без регистрации. Для файлов больше лимита — разовая оплата 99 ₽ за файл или подписка 299 ₽ в месяц."),
+ ("Можно ли сделать скан из Word (DOC/DOCX) или изображения?",
+ "Да. Загрузите DOC, DOCX, JPG или PNG — файл сначала автоматически конвертируется в PDF, а затем получает эффект сканирования."),
+ ("Что такое сшивка и какие варианты доступны?",
+ "Сшивка имитирует переплёт документа. Доступны нитка, ленточка, пружинка, уголок и дырокол, а также лист «прошито-пронумеровано» и титульный лист."),
+ ("Безопасно ли загружать документы?",
+ "Файлы обрабатываются автоматически и удаляются с сервера в течение 24 часов, а содержимое не передаётся третьим лицам."),
+ ],
+ "en": [
+ ("How do I add a scan effect to a PDF?",
+ "Upload your PDF to pdf2scan.online, choose a binding and settings (color, quality, numbering) and click Process. The tool turns your digital PDF into a raster document with a realistic scan effect — as if it were printed and scanned again."),
+ ("How to make a PDF look like a scanned document?",
+ "pdf2scan rasterizes every page and adds a scan effect: slight skew, noise and a paper tint, so it looks like output from a real scanner — no printer, MFP or app needed."),
+ ("Is it free and do I need to sign up?",
+ "Files up to 50 MB and 100 pages are processed for free without signup. For larger files, pay 99 ₽ per file or subscribe for 299 ₽ per month."),
+ ("Can I make a scan from Word (DOC/DOCX) or an image?",
+ "Yes. Upload DOC, DOCX, JPG or PNG — the file is converted to PDF first and then gets the scan effect."),
+ ],
+}
+
+
+def _seo_faq_html(lang: str) -> str:
+ """Видимый FAQ-блок (server-rendered) для краулеров, на языке страницы."""
+ faq = SEO_FAQ.get(lang)
+ if not faq:
+ return ""
+ heading = "Частые вопросы" if lang == "ru" else "FAQ"
+ items = "".join(
+ f'{_esc_html(q)}'
+ f'
{_esc_html(a)}
'
+ for q, a in faq
+ )
+ return (f''
+ f'
{heading}
{items}')
+
+
+def _esc_html(s: str) -> str:
+ return s.replace("&", "&").replace("<", "<").replace(">", ">")
+
+
_INDEX_RAW: str | None = None
@@ -691,6 +739,22 @@ def _build_seo_head(lang: str) -> str:
import json as _json
ld_json = _json.dumps(ld, ensure_ascii=False, indent=2)
+ faq_script = ""
+ _faq = SEO_FAQ.get(lang)
+ if _faq:
+ faq_ld = {
+ "@context": "https://schema.org",
+ "@type": "FAQPage",
+ "mainEntity": [
+ {"@type": "Question", "name": q,
+ "acceptedAnswer": {"@type": "Answer", "text": a}}
+ for q, a in _faq
+ ],
+ }
+ faq_script = ('\n")
+
return (
f"{title}\n"
f'\n'
@@ -713,6 +777,7 @@ def _build_seo_head(lang: str) -> str:
f'\n'
f'\n'
f''
+ f'{faq_script}'
)
@@ -733,6 +798,8 @@ def _render_index_html(lang: str) -> str:
if start != -1 and end != -1:
head = _build_seo_head(lang)
html = html[:start] + "\n" + head + "\n" + html[end:]
+ # Видимый FAQ-блок (server-rendered, для краулеров) — на языке страницы
+ html = html.replace("", _seo_faq_html(lang), 1)
return html
@@ -2871,7 +2938,7 @@ _OFFER_HTML = """
Редакция от 7 июля 2026 г.
Настоящий документ является публичной офертой (ст. 437 ГК РФ) — предложением
- ИП Букреева Александра Игоревича (ИНН 575208141840, далее — «Исполнитель»)
+ ИП Букреева Александра Ивановича (ИНН 575208141840, далее — «Исполнитель»)
заключить договор об оказании услуг сервиса pdf2scan (сайт pdf2scan.online и
Telegram-бот @pdf2scan_bot, далее — «Сервис») на условиях ниже.
Оплата услуг или использование Сервиса означает полное принятие условий (акцепт).
@@ -2931,7 +2998,7 @@ _OFFER_HTML = """
применяется право Российской Федерации.
9. Исполнитель и контакты
-
ИП Букреев Александр Игоревич, ИНН 575208141840
+
ИП Букреев Александр Иванович, ИНН 575208141840
Telegram: @berkio · E-mail: b3rkut@yandex.ru
pdf2scan — бесплатный онлайн-инструмент для создания растрового PDF с эффектом сканирования. Поддерживает сшивку нитками, ленточкой, уголком, пружинкой и дыроколом. Идеально для подготовки документов к сдаче в архив, нотариусу или государственные органы. Без регистрации, без установки программ.