Ru
ГлавнаяКаналыБлоги → Записки м̶о̶л̶о̶д̶о̶г̶о̶ вебмастера

Записки м̶о̶л̶о̶д̶о̶г̶о̶ вебмастера 🕘 история названий (1)

@yawebmaster · Блоги

Данный канал посвящён моему опыту в контентные проектах. Так сказать амбициозный новичок в вебмастерском деле с минимальным бюджетом. Стартуем? Для связи - @yawebmaster_vl

982подписчиков сейчас
43.0%ERR
4.0цитируемость
2постов/день
Русскийязык
Россиягео
Подписаться в Telegram
Данные обновлены 22.07.2020

Публикации всего: 31

Постов на странице: 10 30 50 Страница 1 из 4
С появлением ИИ я очень плотно с ним начал взаимодействовать, но не на уровне - "эт самое, сделай хорошо, а плохо не делай", а на уровне глубокой проработке запроса с корректировками, с вайбкодингом и тп. И так как статей было сгенерено огромное количество, через разные нейронки, начитанность и считывание нейросетевых паттернов писания у меня огромная. Нет, это не значит что при чтении текста я триггерюсь на длинное тире или кавычки елочки (для всех адептов таких патернов оговорка - крупные медиа в ред политике обязательно используют длинное тире и кавычки елочки, от*#*итесь вы уже от них), я триггерюсь уже на чуть более тонкие моменты, так как сам их регулярно встречаю и правлю. Вот пример - нейронка любит экспрессию, даже если ее об этом не просят. И когда ты работаешь с нейротекстами недавно, то для тебя это офигеть какой крутой речевой оборот и он кажется логичным в контексте написанной статьи, но когда ты работаешь с ИИ долго, это уже выглядит как заклинивание на одном и том же моменте: - "моментальный бан", "сразу же забанят", "улетит в моменте в бан" Все эти словосочетания в том или ином виде из статей про мультиаккаунтинг и антифрод. Нейронка всегда пихает эти обороты в тексты по данной тематике, хотя по факту как таковых моментальных банов там не так чтобы и много, в основном там постепенное ограничение. И вот к чему я это? Да просто, сижу читаю очередную партнерскую статью, за которую заплатили 30к, и понимаю что передо мной нейротворение с такими вот оборотами. И вот что делать? Статья пойдет к нему на сайт, фактически риски минимальны, да... Или нет? Это уже включается специалист, который мог бы поработать над алгоритмами ранжирования Гугла, ведь если статья нейросетевая, Гугл ее может не пустить в выдачу, ее не будет никто читать, а значит клиентов с этой статьи мы не получим, так? А зачем нам статья за 30к? Ради ссылки? Короче вопросики... Вы как считаете, нейротексты, хоть и переработанные человеком могут продаваться по 30к? А по 80к? Я считаю что не могут, но они продаются. Есть уважаемый в своей нише ресурс, который такие статьи продает по 190к (там правда размещение стоит 110, а написание те самые 80) и эти статьи читаются и читаются много (78к прочтений).
❤ 3 😁 1 Перейти к публикации →
Ох давненько я ничего не писал тут)) Аж скулы сводит)) Короче, прикольная штука приключилась со мной, начали мне писать в один день владельцы ТГ-каналов, с предложением купить у них рекламу. И так складно у них все выходит, пишут такой мед для моих ушей, что страшно становиться. Писали причем с перерывом в час где то и с одной и той же легендой - сделаем такую рекламу вашего проекта, что вы просто охренеете. Потом один из них меня познакомил меня со своим корефаном, который, вот повезло, тоже канал имеет свой в ТГ. Чувствую что где-то нагреть пытаются, но не могу понять где... Проверяю статистику - там тоже мед, все классно. Но благо добрые люди рассказали про схему одну - закупают ребята каналы по-дешевке, делают сетки, генерят на них тексты, что не отличить от реального человеческого и идут с предложениями. Сами друг друга пиарят, накручивают просмотры, показы комменты - в общем серьезный подход. Ну и с одного канала берут по 600-900 долларов. Ну и математика неплохая получается, 4 канала по 600 баксов, уже 2400 за месяц, а в сетке нифига не 4 канала. В общем, вот такие дела, малята)))
❤ 6 💯 1 Перейти к публикации →
Я в последнее время часто работаю с прокси, и обратил внимание, как изменились мобильные прокси. Вот что вы представляете, когда слышите (или видите) это сочетание слов? Я лично, до определённого момента, всегда ассоциировал мобильные прокси с фермой из нескольких мобильных устройств, ведь раньше именно так и поднимали сетку таких проксей. Куча мобильных девайсов, телефоны, модемы, все это мигает, пиликает (да, вот такая странная ассоциация, что сказать). В целом, рынок мобильных прокси на заре своего развития можно было сравнить с сетью автосалонов Бентли в какой-нибудь стране СНГ (они автосалоны вроде бы есть, где-то далеко. Один или два жителя даже заходил туда пару раз... Просто спросить, естественно. Но позволить себе что-то там купить могли далеко не все). Так продолжалось какое то время, пока в 2017 году в первый раз мир проксей не увидел такое явление, как пиринговые сети... Источники могут путаться в цифрах, но период примерно тот. Впервые такие сети стали появляться у крупных сервисов, типа Luminati и Oxylabs (в целом они то и были первыми). Сейчас ситуация сильно изменилась, мобильные прокси встали в один ряд с резидентными, за счет повсеместного внедрения этих самых пиринговых сетей. Пиринговые сети - это когда ip адреса мобильных операторов получают не через собственную мобильную ферму, а напрямую от пользователя, который подключен в сеть при помощи SDK-приложений. Другими словами, на смартфоне стоит игра или приложение, которое шарит ваш трафик провайдеру (вы можете знать об этом или нет, сути это не меняет - вы часть сети). Вот откуда эти бешеные цифры у провайдеров мобильных прокси в несколько миллионов ip-адресов на разные ГЕО. Ведь получить даже тысячу ip на своей ферме - был тот еще квест, а с peer-to-peer сетью это больше не задачка со звёздочкой. В целом технология peer-to-peer ничем не уступает по качеству мобильной ферме, но, как говориться есть нюансы. Провайдер не контролирует устройства, а значит он не может гарантировать скорость, устойчивость и латентность сети. Там все зависит от внешних факторов. Но плюсов тут бесспорно больше - цена снижена, от 80$ за порт мы пришли к 3-5$ за Гб, а ведь есть еще и безлимитные тарифы, от 20$ в месяц. Конечно, вопрос уже в добросовестности провайдера - у некоторых ручки так и чешутся подмешать в пул с мобильными прокси несколько резидентных, что они там выгадывают таким образом большой вопрос, а карму себе (да и просто репутацию) сильно портят. Лекарство тут одно, периодические и систематические проверки от пулов перед запуском их в работу.
Перейти к публикации →
Какой же трэш, Индусы дорвались до Кворка. Подыскиваю чувака на крауд, и полез на Кворк, а там... Страна чудес - автопереведенные БИО исполнителей из Индустана. Они уже тут Не так я себе представлял импортозамещение, конечно... "Здравствуйте сэр, я экспорт по SEO"
😁 9 Перейти к публикации →
Давно я ничего не писал, думаю пора обновить ленту. Я долгое время писал статьи на свой аккаунт Хабр, у меня свои заказчики, для кого я пишу тексты технической и полутехнической направленности, плюс по работе я часто сталкиваюсь с техническими копирайтерами и я знаю, что текст про технологии (что то с кодом, что то про автоматизацию и т.д.) не стоит дешево, авторам неинтересно писать дешево в этой тематике, так как они лучше потратят это время на что-то, что принесет им больше денег. И вот мне интересно почему Хабр, который позиционирует себя как супер крутой продукт так неуважительно относится к своим авторам, авторы, которые пишут ему технические тексты получают от 5 до 15к за проект (а проект это не одна статья может быть). Фактически Хабр берет с рекламодателя минимум 175к за три месяца за корпоративный блог (это самый минимальный тариф, на максимуме там 360к за 3 месяца просто за возможность писать статьи от лица компании), но своим авторам он готов платить не больше 15к😐😐😐 Я не говорю еще про какой-то кодекс, которого придерживаются сотрудники Хабра)) Кто эти технари, которые пишут им технические тексты за 15к (это кстати, верхняя планка, минимум 5к, и что то мне подсказывает платить стараются именно минимум)? Вы бы подвязались под такой проект за 5-15к? Я когда дошел до второго вопроса, где и указана цена, сразу закрыл анкету. Там же еще такой спрос бешеный, что они прям в анкете пишут - может быть, когда нибудь мы с вами свяжемся))) Хабр это не про заработок - это про команду мечты, вероятно))
😢 1 💯 1 🤝 1 Перейти к публикации →
Ну, с днём сеошника! 🎉🍾🎊
😁 1 Перейти к публикации →
А еще сегодня день пофигиста! - Что? - Что?
🤩 1 Перейти к публикации →
В комментах под предыдущим постом скинули мне это расширение - 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(relayoutData["xaxis.range[0]"])
            x_end = pd.to_datetime(relayoutData["xaxis.range[1]"])
            mask = (filtered_df['date'] >= x_start) & (filtered_df['date'] <= x_end)
            zoomed_df = filtered_df[mask]
            if not zoomed_df.empty:
                y_min = zoomed_df[selected_metrics].min().min()
                y_max = zoomed_df[selected_metrics].max().max()
                y_padding = (y_max - y_min) * 0.05
                fig.update_yaxes(range=[y_min - y_padding, y_max + y_padding])

    # Чтобы при переключении чекбоксов не сбрасывался зум или аннотации
    fig.update_layout(uirevision='fixed')

    return fig

if __name__ == '__main__':
    app.run(debug=True)
В данном коде необходимо изменить следующее: Строка 14 - вписать ваши домены, которые нужно вывести на графике Строка 19 - указываем период, за который нужны данные (если проектов много, рекомендую не брать слишком большой период - будет долго подгружать) Строка - 25-46 - тут я вписал апы Гугла - вы можете добавить если что то не указано Строка 48 - тут вписываете события, которые хотите видеть на графике (они будут показаны вертикальной линией, как на скрине выше) Строка 84 - название вашего JSON - файла (который расположен в той же папке, что и сам скрипт) Все - вы почти готовы начинать... Устанавливаем зависимости этой командой
pip install dash plotly pandas google-auth google-auth-oauthlib google-auth-httplib2 google-api-python-client
И запускаем скрипт
python main.py
Когда скрипт запустится вы увидите в терминале, что дашборд доступен по локальному адресу, в моем случае это - http://127.0.0.1:8050 - переходим по этому адресу и работаем с дашбордом Ну и да, новые апы нужно будет добавлять руками уже самостоятельно, а как вы хотели, некоммерческие проекты они такие🤷
👍 4 Перейти к публикации →

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 df

def 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_df

app = 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]
            value=[],  
            inline=True
        ),
    ]),

    html.Div([
        html.Label("Показать Google Updates:"),
        dcc.Checklist(
            id='updates-toggle',
            options=[{'label': u['name'], 'value': u['name']} for u in GOOGLE_UPDATES],
            value=[],  
            inline=True
        ),
    ]),

    html.Div([
        html.Label("Показать события:"),
        dcc.Checklist(
            id='events-toggle',
            options=[{'label': e['name'], 'value': e['name']} for e in EVENTS],
            value=[],  
            inline=True
        ),
    ]),

    dcc.Graph(id='gsc-graph')
])

@app.callback(
    Output('gsc-graph', 'figure'),
    [
        Input('site-selector', 'value'),
        Input('metric-selector', 'value'),
        Input('updates-toggle', 'value'),
        Input('events-toggle', 'value'),
        Input('gsc-graph', 'relayoutData')
    ]
)
def update_graph(selected_sites, selected_metrics, selected_updates, selected_events, relayoutData):
    global GLOBAL_DF
    if GLOBAL_DF is None:
        GLOBAL_DF = load_all_data()

    print("=== CALLBACK ===")
    print("Selected events: ", selected_events)  # Проверяем в консоли, что выбрано

    fig = go.Figure()

    # Фильтруем общий DF по выбранным доменам
    filtered_df = GLOBAL_DF[GLOBAL_DF['domain'].isin(selected_sites)]

    # Если выбраны метрики, строим линии
    if selected_metrics:
        for site in selected_sites:
            df_site = filtered_df[filtered_df['domain'] == site].sort_values('date')
            for metric in selected_metrics:
                fig.add_trace(go.Scatter(
                    x=df_site['date'],
                    y=df_site[metric],
                    mode='lines',
                    name=f"{site} - {metric}"
                ))
Перейти к публикации →
1 2 3 4

История названий канала

14.08.2026 название Записки молодого вебмастера Записки м̶о̶л̶о̶д̶о̶г̶о̶ вебмастера
Дата — момент, когда изменение заметил наш обход.

Другие каналы категории