А еще сегодня день пофигиста!- Что?- Что?
Записки м̶о̶л̶о̶д̶о̶г̶о̶ вебмастера
@yawebmaster
Данный канал посвящён моему опыту в контентных проектах. Так сказать амбициозный новичок в вебмастерском деле с минимальным бюджетом. Стартуем? Навигация по каналу - https://telegra.ph/Navigaciya-po-kanalu-08-15
Похожие каналы
Все →Последние посты
В комментах под предыдущим постом скинули мне это расширение - https://chromewebstore.google.com/detail/gsc-guardian/aomiehgfjgolamlllgbkjbnfmdmffcchОно накладывает апы гугла на график в серч консоли, то есть если просто надо посмотреть как себя вёл сайт (один сайт) после и во время апа - нормальный вариант.Но если у вас несколько проектов и надо их сравнивать друг с другом, я все же буду использовать скрипт, который описал выше.Он выводит на один график все проекты, которые туда добавить, но за расширение спасибо, я не знал о нем

# Добавляем прямоугольники (vrect) для Google Updates for upd in GOOGLE_UPDATES: if upd['name'] in selected_updates: fig.add_vrect( x0=upd['start'], x1=upd['end'], fillcolor='red', opacity=0.1, layer='below', line_width=0, annotation_text=upd['name'], annotation_position="top left" ) # Добавляем события (вертикальные линии) для выбранных ev for ev in EVENTS: if ev['name'] in selected_events: date_str = pd.to_datetime(ev['date']).strftime('%Y-%m-%d') print(f"Adding event line: {ev['name']} at {date_str}") # Диагностика fig.add_vline( x=date_str, line_color='blue', opacity=1.0, line_width=2, layer='above' ) fig.add_annotation( x=date_str, y=1, xref='x', yref='paper', text=ev['name'], showarrow=True, arrowhead=2, ax=0, ay=-40, font=dict(color='blue', size=12) ) # Настройка осей fig.update_layout( title="GSC Трафик", xaxis_title="Дата", yaxis_title="Значение", legend_title="Сайты и метрики", xaxis=dict( tickmode='linear', tick0=pd.to_datetime(START_DATE), dtick=86400000.0, # один день (в мс) tickformat="%d-%m-%Y", rangeslider=dict(visible=True), ) ) # Если метрик нет => вручную задаём X-ось (иначе range может оказаться [0..1]) if not selected_metrics: print("No metrics selected -> Forcing x-range to START..END") fig.update_xaxes(range=[START_DATE, END_DATE]) # Обработка зума (для Y-оси) if relayoutData: if "xaxis.range[0]" in relayoutData and "xaxis.range[1]" in relayoutData and selected_metrics: x_start = pd.to_datetime(relayoutDat
Палю годноту - рабочее решение для сопоставления вашего трафика (показов, кликов, позиций) из Серч консоли с апдейтами ГуглаНе прям автоматизированное решение, где вся инфа подгружается автоматом, понадобится провести настройку, но все работает в итоге, без мам пап и всяких платных посредников.Настраиваем свой персональный дашбоард у себя на компе, для чего нужно:1 - Создать проект в Google Cloud ConsoleПереходим на https://console.cloud.google.com/Создаем новый проектПереходим в APIs & Services → LibraryНаходим и включаем API:Google Search Console API2. Создать Service AccountПереходим в IAM & Admin → Service AccountsНажимаем Create Service Account и создаем егоДалее создаем и скачаем JSON-файл с ключом (credentials.json)Сохраняем этот файл – он понадобится в корне проекта (в той же папке, где будет основной скрипт)Почту из строки client_email необходимо будет добавить в качестве админа в вашей Серч Консоли (для нужного сайта).Далее в той же папке, где у вас лежит JSON-файл создаем файл с расширением .py, я делаю всегда так - main.pyimport osimport jsonimport pandas as pdimport plotly.graph_objs as goimport dashfrom dash import dcc, htmlfrom datetime import datetimefrom dash.dependencies import Input, Outputfrom google.oauth2 import service_accountfrom googleapiclient.discovery import build# Ваши константыSITES = [ "sc-domain:Ваш домен", "sc-domain:Ваш домен",]# Даты, за которые берем данныеSTART_DATE = "2024-01-01"END_DATE = "2025-04-12"# ============================================================# Обновленный список Google Updates с дополнительными данными# ============================================================GOOGLE_UPDATES = [ {"name": "March 2025 core update", "start": "2025-03-13", "end": "2025-03-26"}, {"name": "December 2024 spam update", "start": "2024-12-19", "end": "2024-12-26"}, {"name": "December 2024 core update", "start": "2024-12-12", "end": "2024-12-18"}, {"name": "November 2024 core update", "start": "2024-11-11", "end":
def fetch_gsc_data(property_uri, start_date, end_date, creds): service = build('searchconsole', 'v1', credentials=creds) body = { 'startDate': start_date, 'endDate': end_date, 'dimensions': ['date'], 'rowLimit': 10000 } response = service.searchanalytics().query(siteUrl=property_uri, body=body).execute() rows = response.get('rows', []) data = [] for r in rows: d = r['keys'][0] data.append({ 'date': d, 'clicks': r.get('clicks', 0), 'impressions': r.get('impressions', 0), 'position': r.get('position', 0) }) df = pd.DataFrame(data) df['date'] = pd.to_datetime(df['date']) return dfdef load_all_data( start_date=START_DATE, end_date=END_DATE, sites=SITES, creds_file="Название вашего JSON-файла"): creds = service_account.Credentials.from_service_account_file( creds_file, scopes=["https://www.googleapis.com/auth/webmasters.readonly"] ) all_df = [] for s in sites: df_s = fetch_gsc_data(s, start_date, end_date, creds) df_s['domain'] = s all_df.append(df_s) big_df = pd.concat(all_df, ignore_index=True) return big_dfapp = dash.Dash(__name__)GLOBAL_DF = None # кешируем загруженные данныеapp.layout = html.Div([ html.H1("GSC Дашборд - Клики, Показы, Позиция"), html.Div([ html.Label("Выберите сайт(-ы):"), dcc.Checklist( id='site-selector', options=[{'label': site, 'value': site} for site in SITES], value=SITES, inline=True ), ]), html.Div([ html.Label("Метрики:"), dcc.Checklist( id='metric-selector', options=[ {'label': 'Клики', 'value': 'clicks'}, {'label': 'Показы', 'value': 'impressions'}, {'label': 'Позиция', 'value': 'position'}, ], # Если тут пусто, у нас нет рядов данных => ось X может стать [0..1]
Когда написал статью на Хабре и ждал хороших комментариев, а тебе накидали минусов
Накипело в очередной раз, с этим Хабром блин...Почему вот так получается - пишешь статью, ну полная хрень, прям откровенно воняет рекламой, публикуешь скрепя сердцем на Хабре - статья попадает в Топ выдачи, проходит мимо едких и говнокомментаторов и все в целом с ней гуд. Она не портит карму аккаунту, и спокойненько сидит себе в топе.Но вот ты взял интересную тему, разобрался в вопросе (не глубоко, вероятно, но все же), потратил неделю в общей сложности на сбор информации, осознание ее у себя в голове - написал статью, потратил пару часов на оформление, чтоб было не так сухо читать.Налетели говнокоммментаторы и убивают карму своими минусами? Думал короче ты Лев Толстой, а на деле... Ну вы поняли.И нет бы еще че нить дельное писали - а то обзываются, говорят нейротекст и тп.Короче Хабр - сука, сложная штука, а аудитория там еще сложнее..
Нашел в интернетах гайд, как настроить у себя на локальном компьютере мощщщщную Нейросеть, чтобы она могла поглощать большие файлы, и не упиралась в лимит строк. Условно, если даешь объемный файл нейросети на анализ в рамках чата, она не сможет обработать больше своего лимита, а вот если настроить через этот гайд - будет есть большие файлы без проблем.Сразу спойлер - на бесплатной версии это особо не помогло. Я скормил ей файд на 1600 строк, она пыхтела, пыхтела.. Пыхтела пыхтела, несколько раз я писал ей продолжай, она продолжала пыхтеть и в конце концов уперлась в ограничение по бесплатным запросам. Результат не былоGPT о3 с первого раза смог интерпретировать эти 1600 запросов. Дальше думатйте сами, надо оно вам или нет, но вот гайд по установке такого себе на локаль. работает с Claude1 - Ставим себе декстопную версию Claude2 - Ставим Питон (если еще не)3 - Ставим зависимости, я через VSCode ставил, вот команда powershell -ExecutionPolicy Bypass -c "pip install uv" 4 - Клонируем себе на комп этот репо (Это MCP сервер, на котором и будут обрабатываться большие файлы)5 - Авторизуемся в Клоде и включаем там режим разработчика (слева вверху меню - Help - Enable Developer Mode)6 - Открываем настройки (File - Settings - Developer - Edit Config)7 - Открываем этот файл claude_desktop_config.json блокнотом или любым другим расширением для работы с файлами)8 - Прописываем в нем такой код:{ "mcpServers": { "data_explore": { "command": "uv", "args": [ "--directory", "C:\\Users\\<your-username>\\Documents\\mcp_servers\\mcp-server-data-exploration\\src\\mcp_server_ds", "run", "mcp-server-ds" ] } }}Вот тут - C:\\Users\\<your-username>\\Documents\\mcp_servers\\mcp-server-data-exploration\\src\\mcp_server_ds Нужно будет поменять путь к вашему серверу (тот который мы клонировали из Гитхаба. Обратите внимание - концовка там такая же как у меня (mcp-server-data-exploration
Нейросети не страшны прогрессу, мы сами его остановим (но это не точно)В общем - возился я давеча с визуализацией в Google Data Studio, нужно было создать агрегированные данные по нескольким источникам, там и формулы и вычисляемые поля, короче все по харду.Сделал, все собрал, все гуд.На следующий день идем допиливать и случайно добавляю дополнительное поле в агрегированные данные (дату) и начинается жесточайший секс с Данныим и мозгом, что не так, где ошибка и почему данные такие кривые.Воевал часов 5 наверное, Чат ГПТ вообще меня уже собрался послать нахрен, я отчаялся и дошел до чата сторонников Google Data Studio, такой телеграмм аналог узкотематичного Stackoverflow.По поиску нашел пару чатов (русский и англоязычный) и изложил свой вопрос максимально подробно (форумное прошлое и неоднократноые рекомендации от специалистов идти поискать в Гугле то что я воспрошаю дают о себе знать) и отправил в русскоязычный сат.ЖдемСекундаБан, нахер...Идем к модератору - так мол и так, что нарушил, что не так?Минут 10 - вас забанили за ваш Ник (у вас там много эмодзи), хорошо что хоть вернули текст, который я составлял. Пробуем еще раз, уже с другого аккаунта, предварительно сообщив об этом модератору...Секунда - Бан.Ладно, понимаю что это какая то неведомая херота, иду к англичанам, перевожу на английский, запуливаю.Надо отдать должное, тут секунд пять сообщение висело, потом снова Бан...Проблему я в итоге нашел сам, через минут сорок еще, а сегодня мне написал модератор - вас за код в сообщении забанили))) Можете вернуться...Так и становятся интровертами, нахер не нужна ваша социализация с такими заскоками...Реально, уже нейросеть оказалась бессильна, идешь к кожаным за советом, и там тебя шлют нахер алгоритмы... Где то не там мы свернули судя по всему.На Stackoverflow не вернусь, не просите...