+
    0°¿jD&  ã                   ó6  € R t ^ RIt^ RIHt ]! ]4      P                  4       P                  t]P                  P                  t]R,          t	]R,          R,          t
]R,          R,          R,          tR tR	 tR
 tR tR tR t]R8X  d   ]! ]! 4       4      hR# )u”  Воронка SEO для обзора: от опубликованной статьи до перехода из поиска.

Собрана по образцу PR Factory. Смысл: три карточки и строка под ними, где
видно, на какой ступени теряется результат. Статью можно написать, но не
попасть в индекс; попасть в индекс, но не попасть в топ; попасть в топ,
но не получить переходов. Пока ступени стоят порознь, узкое место незаметно.

Ничего не считаем заново - складываем то, что уже выгружено:
  статей портала      - реестр текстов
  в индексе Яндекса   - KPI из выгрузки Вебмастера
  запросов в топ-10   - оттуда же
  переходов из поиска - Метрика, источник Search engine traffic за месяц
  визиты и посетители - Метрика, блок посещаемости

Порядок: после выгрузок Вебмастера и Метрики, после обновить-сводку-seo.py,
до обновить-фолбэк.py.
Запуск: python3 панель/данные/обновить-воронку-seo.py
N)ÚPathzreport.jsonu
   заводu    реестр-текстов.jsonu   вебмастерu   историяc                 ó¨   € \        V 4      ^d,          \        V 4      ^
,          rT^Tu;8:  d
   ^8:  d    V#  V^8X  d   V# ^Tu;8:  d	   ^8:  d   V#  T# )éd   )Úabs)ô   нô   одинô   дваô
   многоô   оô   еs   &&&&  ô&   обновить-воронку-seo.pyô   склонениеr      sQ   € Ü�‹W�s�]œC ›G b�LˆØ	ˆR†~�2…~ØÐð à˜Q”wˆ8ÐJ¨a°2®l¸¬l FÐJ¨lÀ
ÐJó    c                  ól  € \         P                  4       '       g   R # \        P                  ! \         P	                  RR7      4      p ^ pV R,           FT  pVP                  R4      R8X  d   K  R\        VP                  RR4      4      P                  4       9   g   KK  V^,          pKV  	  T;'       g    R # )	Núutf-8©Úencodingu   текстыu   видu   внешняя площадкаu   опубликованõ   статусÚ )ô   РЕЕСТРÚexistsÚjsonÚloadsÚ	read_textÚgetÚstrÚlower)ô   дÚnô   тs      r   ô   статей_порталаr    &   s”   € Ü×Ñ× Ò ÙÜ	�Š”L×*Ñ*°GÐ*Ó<Ó	=€BØ	€AØ�× Ð ˆØ�6‰6�(ÓÐ@Ô@ÙØ#¤s¨2¯6©6°.À"Ó+EÓ'F×'LÑ'LÓ'NÖNØ��FŠAñ	 !ð
 �9ˆ9�Ðr   c                 ó´  € \         P                  4       '       d   \        \         P                  R4      4      M. p \	        V 4       Fq  p \
        P                  ! VP                  RR7      4      pTP                  R4      pTf   KA  T Uu. uF  pRT9   g   K  TNK  	  pp\        T4      \        T4      3u # 	  R#   \        \        3 d     K‹  i ; iu upi )u_  Сколько статей портала реально в поиске.

Считаем по списку адресов из снимка Вебмастера, а не по сводному числу
searchable_pages_count: оно обновляется с задержкой (23.09.2026 сводка
отдавала 9, а список - 11) и считает все страницы подряд, включая главную,
«Об авторе» и ленту статей. В карточке написано «статей», значит и считать
надо статьи (23.09.2026).
z*.jsonr   r   u   адреса_в_поискеz/statya/)NN)ô   ИСТОРИЯr   ÚsortedÚglobÚreversedr   r   r   ÚOSErrorÚ
ValueErrorr   Úlen)ô   снимкиô   путьr   ô   адресаô   аô   статейs         r   ô   статей_в_индексеr.   3   sÊ   € ô =K×<QÑ<Q×<SÒ<S”6œ.×-Ñ-¨hÓ7Ô8ÐY[€LÜ˜\Ö*ˆð	Ü—’˜H×.Ñ.¸Ð.Ó@ÓAˆBð —v‘vÐ<Ó=ˆØÔ#Ù)5ÓJ© 2¸ÀrÑ9IŸB˜B©ˆLÐJÜ�|Ó$¤c¨,Ó&7Ð7Ò7ñ +ð Ðøô œÐ$ô 	Úð	üò Ks   Á
&B=Â	CÂCÂ=CÃCc                 ó°   € V P                  R . 4       F?  pVP                  R4      V8X  g   K  VP                  R4      pVf   Ru # \        V4      u # 	  R# )Úkpiõ
   меткаõ   значениеN)r   Úint)Úseoô
   меткаô   кô   знs   &&  r   r0   r0   I   sO   € Ø�g‰g�e˜RÖ ˆØ�6‰6�,Ó :Ö-Ø—6‘6Ð,Ó-ˆDØš<�4Ò6¬S°«YÒ6ñ !ñ r   c                ó  € V P                  R4      ;'       g    / pVP                  R4      ;'       g    .  F5  pR\        VP                  R4      4      9   g   K$  VP                  R4      u # 	  VP                  R4      '       d   ^ # R# )uo   Визиты из поисковых систем за месяц. None - Метрика не отвечала.u   метрикаu   источники_месяцÚSearchu   источникõ   визитыN)r   r   )r4   ô   мô   иs   &  r   ô   из_поискаr=   Q   sz   € à	�‰Ð!Ó	"×	(Ð	( b€BØ�f‰fÐ4Ó5×;Ð;¸Ò;ˆØ”s˜2Ÿ6™6Ð"4Ó5Ó6Ö6Ø—6‘6˜.Ó)Ò)ñ <ð —‘Ð6×7Ò7ˆ1ÐA¸TÐAr   c                  óv  € \         P                  ! \        P                  R R7      4      p V P	                  R/ 4      pVP                  R4      ;'       g    / p\        4       p\        4       w  rEVf   \        VR4      pTp\        VR4      p\        VR4      p\        V4      pRp	V'       d7   Ve3   WC8  d-   W4,
          p
V
 R\        V
R	R
R4       R\        V
RRR4       R2p	MV'       d   V'       g   Rp	R\        T;'       g    ^ RRR4      RV/RRRV/RRRV/RRRV/.pRRRTRT	RRRRVP                  R4      RVP                  R4       R\        VP                  R4      ;'       g    ^ RR R!4       R"2/RR#RTRVe   R$V 2MR%/RR&RTRV'       d   R'V R(2MR)V'       d   WT8w  d   R*V 2MR+,           /.R,VP                  R,4      ;'       g    R-R./R/R0/VR1&   \        P                  \         P                  ! V R2^R37      R4,           R R7       \        R5R6P                  R7 V 4       4      ,           4       ^ # )8r   r   r4   u   посещаемостьNu    страниц в индексеu   запросов в топ-10u7   показов в выдаче за две неделиÚ u   статьяu   статьиu   статейu   не в индексеu™    Яндекса - до поиска они не дошли вовсе. Отправляются на переобход по суточной квоте.uª   в индексе есть, а в топ-10 нет ни одного запроса: страницы показываются, но ниже десятого места.r1   u%   статья опубликованаu%   статьи опубликованыu%   статей опубликованоr2   u    в индексе Яндексаu$   переходов из поискаu   заголовокu9   От статьи до перехода из поискаu   ступениu   узкое_местоu   карточкиu   Визитов за месяцr:   u   подписьu   посетителиu   посетительu   посетителяu   посетителейu.    · Яндекс Метрика, с 01.09.2026u,   Запросов в топ-10 Яндексаu(   показов за две недели u6   Вебмастер ещё не отдал показыu   Статей в индексеu   из u1    опубликованных на порталеu>   число статей портала не посчитаноu,   ; всего страниц в поиске r   Úgoogler   u   не подключеноu   как_считаетсяup  Статьи - по реестру текстов, всё, что помечено опубликованным. Индекс и топ-10 - выгрузка Яндекс Вебмастера, она ходит в 05:30 и отдаёт скользящее окно в две недели. Переходы из поиска - Яндекс Метрика, источник «поисковые системы» за месяц; свои заходы она не отделяет, поэтому число скорее завышено. Google Search Console подключён 24.09.2026, его цифры идут отдельной строкой: у поисковиков разные индексы и разные окна данных (Яндекс отдаёт две недели, Google - шестнадцать месяцев), складывать их нельзя.u   воронкаF)Úensure_asciiÚindentÚ
u   воронка SEO: u    → c              3   óf   "  € T F'  pVR ,           RVR,          e
   VR,          MR 2x € K)  	  R# 5i)r1   r?   r2   NÚ?© )Ú.0ô   сs   & r   Ú	<genexpr>ô!   главная.<locals>.<genexpr>ž   s=   é € ð 0"á ˆBð ˆlÕÐ
˜A¸Ð;MÕ8NÒ8Z˜bÐ!3Ö4Ð`cÐdÕeÛ ùs   ‚/1)r   r   ô
   ОТЧЁТr   Ú
setdefaultr   r    r.   r0   r=   r   Ú
write_textÚdumpsÚprintÚjoin)ô
   отчётr4   ô   посr-   ô   индексô    страниц_в_индексеô   топ10ô   показовô
   поискô
   узкоеô   не_в_индексеô   ступениs               r   ô   главнаяr[   Z   s  € Ü—’œJ×0Ñ0¸'Ð0ÓBÓC€JØ
×
Ñ
  rÓ
*€CØ�W‰WÐ/Ó0×6Ð6°B€Fä.Ó0€LÜ5SÓ5UÑ2€LØÒÜ˜3Ð BÓCˆØ+7Ð(Ü�3Ð7Ó8€HÜ˜ÐWÓX€NÜ" 3Ó'€Jð €Jß˜Ò0°\Ô5PØ!-Õ!<ÐØ/Ð0°Ô2DÐE[Ð]kÐm{ð  ~Ló  3Mð  2Nð  NOÜ&Ð'=Ð?WÐYqð  tLó  Mð  Nð N5ð5‰
÷ 
ŸhðXˆ
ð 
Ô)¨,×*;Ð*;¸!Ð=dð  gNØCóEØFXÐZfð	hà	Ð9Ð;MÈ|Ð\Ø	Ð6Ð8JÈHÐUØ	Ð=Ð?QÐS]Ð^ð€Nð 	ÐYØ˜.Ø ØØÐ;Ð=OÐQW×Q[ÑQ[Ð\jÓQkØ 6§:¡:Ð.DÓ#EÐ"FÀaÜ.¨v¯z©zÐ:PÓ/Q×/VÐ/VÐUVÐXnð  qGð  Iaó  bð  cØIð!JðLð ÐIÐK]Ð_gØÐ_mÒ_yÐ"JÈ>ÐJZÑ [ØVðYð Ð;Ø Ø×lx 5¨¨Ð6gÑ!hØ_ç?ÐDdÔDtð KÐKkÐJlÑmØz|õ!~ð@ð
ð 	�#—'‘'˜(Ó#×TÐT¨Ð8SÐ'TØ#ð6ð+€CÐÑô> ×Ñœ$Ÿ*š* Z¸eÈAÔNÐQUÕUØ%ð ô 'ä	Ð
  7§<¡<ñ 0"á ó0"ó $"õ "ô #ñ r   Ú__main__)Ú__doc__r   Úpathlibr   Ú__file__ÚresolveÚparentô
   ПАПКАô   КОРЕНЬrK   r   r"   r   r    r.   r0   r=   r[   Ú__name__Ú
SystemExitrF   r   r   Ú<module>rf      sª   ðñó& Ý á�(‹^×#Ñ#Ó%×,Ñ,€
Ø× Ñ ×'Ñ'€Ø˜-Õ'€
Ø˜lÕ*Ð-OÕO€Ø Õ,Ð/CÕCÐFVÕV€òKò
òò,òBòGðT ˆzÔÙ
‘^Ó%Ó
&Ð&ñ r   