2025-05-19 Marcin Żmuda

Jak zrobić własny custom GPT czyli instrukcja do Turbo Brajanka

Około pół roku temu stworzyłem Brajanka – mój pierwszy custom GPT, który miał być testem przed bardziej rozbudowaną wersją w n8n. Brajanek spisywał się całkiem nieźle, dlatego z biegiem czasu rozbudowałem go i w ten sposób powstała wersja „na sterydach” – czyli Turbo Brajanek.

Co to jest custom GPT?

Turbo Brajanek to mój własny Custom GPT, czyli spersonalizowana wersja ChatGPT skonfigurowana do zadań takich jak analiza wyników Google, generowanie briefów i treści SEO. Stworzyłem go bez pisania kodu, korzystając wyłącznie z narzędzia GPT Builder. Działa zgodnie z moimi wytycznymi jako wyspecjalizowany asystent AI z dostępem do zewnętrznych źródeł danych.

Zwykły chat vs Custom GPT

Przewagą custom GPT nad zwykłym chatem są dużo większe możliwości. Standardowy ChatGPT to uniwersalny model, który działa na podstawie ogólnych instrukcji i nie ma dostępu do Twoich plików, API ani niestandardowych zasad. Możesz zadawać pytania, ale każdorazowo musisz je dobrze formułować i prowadzić rozmowę od zera.

Custom GPT to Twój własny, wyspecjalizowany agent AI, który działa według konkretnych reguł, zna Twoje dane i zadania. Możesz go zdefiniować – i będzie pracować zgodnie z tym założeniem od pierwszego kontaktu. Dzięki temu Twój custom GPT nie tylko odpowiada – on działa jak narzędzie, które wykonuje pełny proces analizy, podejmuje decyzje wg Twoich zasad i generuje spójne, wysokiej jakości efekty (np. briefy SEO).

Czego będziesz potrzebować?

Aby zbudować taki system, przygotuj:

Konto ChatGPT (ChatGPT Plus)

Potrzebne, by uzyskać dostęp do GPT Buildera.

Konto SerpApi + API Key

Rejestracja na https://serpapi.com i skopiowanie klucza API.

Konto WebPilot lub gotowy endpoint WebPilot

Możesz zintegrować WebPilota jako własne API (w formacie OpenAPI) i dodać go w GPT Builderze jako „Action”. Dzięki temu GPT będzie miał dostęp do dwóch potężnych funkcji:

  • webPageReader – pobieranie i analiza zawartości stron internetowych,
  • longContentWriter – generowanie treści na podstawie zebranych danych.

To podejście daje Ci większą kontrolę niż standardowa opcja „Web browsing” oferowana przez OpenAI. Możesz definiować parametry, zarządzać przepływem informacji i precyzyjnie sterować procesem analizy treści online.

Własne pliki:

Ja dodałem:

  • frazy zakazane

ale można też dodać np.:

  • checklisty SEO
  • gotowe szablony struktury artykułów
  • itp.

Jak stworzyć własnego GPT krok po kroku

Krok 1: GPT Builder

  1. Przejdź na https://chat.openai.com/gpts
  2. Kliknij „Utwórz” i uzupełnij logo (bardzo ważny element), nazwę, opis (o instrukcji napiszę za chwilę)

Krok 2: Działania

SerpAPI


{
"openapi": "3.1.0",
"info": {
"title": "SerpApi Search Service dla Google.pl",
"version": "1.0.0",
"description": "Specyfikacja API do wyszukiwania w Google.pl za pomocą SerpApi."
},
"servers": [
{
"url": "https://serpapi.com"
}
],
"paths": {
"/search": {
"get": {
"tags": [
"SerpApi"
],
"summary": "Wykonaj wyszukiwanie w Google.pl używając SerpApi",
"operationId": "searchGooglePL",
"parameters": [
{
"name": "api_key",
"in": "query",
"required": true,
"schema": {
"type": "string"
},
"description": "Uzupełnij API z serpAPI"
},
{
"in": "query",
"name": "engine",
"required": false,
"schema": {
"type": "string",
"default": "google"
},
"description": "Silnik wyszukiwania (domyślnie 'google')."
},
{
"in": "query",
"name": "q",
"required": true,
"schema": {
"type": "string"
},
"description": "Zapytanie wyszukiwania."
},
{
"in": "query",
"name": "google_domain",
"required": false,
"schema": {
"type": "string",
"default": "google.pl"
},
"description": "Domena Google (domyślnie 'google.pl')."
},
{
"in": "query",
"name": "gl",
"required": false,
"schema": {
"type": "string",
"default": "pl"
},
"description": "Kod kraju (domyślnie 'pl')."
},
{
"in": "query",
"name": "hl",
"required": false,
"schema": {
"type": "string",
"default": "pl"
},
"description": "Ustawienie języka (domyślnie 'pl')."
},
{
"in": "query",
"name": "location",
"required": false,
"schema": {
"type": "string"
},
"description": "Opcjonalna lokalizacja geograficzna dla wyszukiwania."
}
],
"responses": {
"200": {
"description": "Udana odpowiedź",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object"
}
}
},
"additionalProperties": false
}
}
}
},
"400": {
"description": "Nieprawidłowe żądanie"
},
"401": {
"description": "Brak autoryzacji"
}
}
}
}
}
}

Zasady ochrony prywatności: https://serpapi.com/legal

webPilot


openapi: 3.1.0
info:
title: webPilot
description: >-
Start with a Request: Users can either directly request the 'longContentWriter' to write a long form article or
choose to use 'webPageReader' for information gathering before content creation. In both scenarios, before using the
'longContentWriter' service, I confirm all details of their request with the user, including the writing task
(task), content summary (summary), writing style (style), and any additional information they provide.

Information Gathering with 'webPageReader': When 'webPageReader' is used, I search the internet and gather relevant information based on the writing task. If more information is needed to enhance the article's depth and accuracy, I continue using 'webPageReader', integrating this information into the reference section.

Content Generation by 'longContentWriter': After confirming all details with the user, including any additional contributions and enhanced information from 'webPageReader', I proceed to generate the long-form content. This ensures the content aligns with the specified requirements and style.

Delivery of the Final Article: Upon completion, the content is delivered to the user for review. They can request revisions or additional information if necessary.

Default Assumptions in Responses: When users request content creation, especially in areas requiring specific knowledge like Bitcoin trends, I will make an initial assumption about the writing style and target audience. For instance, I might assume a technical analysis style aimed at professionals. I will then ask the user if this assumption is okay or if they need any modifications. This approach helps streamline the content creation process.
version: v1.1
servers:
- url: https://gpts.webpilot.ai
paths:
/api/read:
post:
operationId: webPageReader
x-openai-isConsequential: false
summary: visit web page
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/visitWebPageRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/visitWebPageResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/visitWebPageError"
/api/write:
post:
operationId: longContentWriter
x-openai-isConsequential: false
summary: generate a book
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/generateContentRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/generateContentResponse"
"400":
description: Bad Request
content:
application/json:
schema:
$ref: "#/components/schemas/generateContentError"
components:
schemas:
generateContentRequest:
type: object
required:
- task
- language
- summary
- style
properties:
task:
type: string
description: The "task" field outlines the specific requirements and objectives for generating the content. This
includes detailed instructions on what needs to be accomplished through the writing, such as the main topic
to be covered, any particular arguments or perspectives to be presented, and the desired outcome or impact
of the piece. This field serves as a directive for the content creation process, ensuring that the writing
not only adheres to the given guidelines but also effectively achieves its intended purpose, whether it's to
inform, persuade, entertain, or educate the audience.
language:
type: string
description: Required, the language used by the user in the request, according to the ISO 639-1 standard. For Chinese,
use zh-CN for Simplified Chinese and zh-TW for Traditional Chinese.
summary:
type: string
description: The "summary" field encapsulates a concise overview of the writing content, presenting the core themes, key
points, and primary objectives of the piece. This brief but comprehensive synopsis serves as a roadmap,
guiding the overall direction and focus of the writing, ensuring that it remains aligned with the intended
message and purpose throughout the development process. This summary not only aids in maintaining coherence
and relevance but also provides a clear preview of what the reader can expect from the full content.
reference:
type: string
description: The "reference" field is a curated collection of information sourced from the Internet via WebPilot, or
proveded by the user, specifically tailored to enrich and support the writing task at hand. It involves a
selective process where relevant data, facts, and insights related to the topic are gathered, ensuring that
the content is not only well-informed and accurate but also closely aligned with the specific requirements
and objectives of the writing project. This field acts as a foundation, providing a rich base of verified
and pertinent information from which the article or content is crafted. This field would be long.
style:
type: string
description: The "style" field in content creation is a detailed framework encompassing three pivotal components - the
writing tone or style, the target audience, and the publication medium. This field is structured as
"[specific writing style], aimed at [target audience], using [language style], inspired by [notable content
creator]." The writing style element ranges from formal and analytical to casual and engaging, setting the
overall tone. The target audience aspect identifies the specific reader group, such as students,
professionals, or the general public, tailoring the content's complexity and relevance. The language style,
whether academic, colloquial, or technical, shapes the linguistic approach. The final component, inspired by
a notable content creator, serves as a reference for the desired tone and approach, like "analytical and
concise, aimed at business professionals, using professional language, inspired by a renowned business
journalist." This clear and structured definition ensures the content is effectively aligned with the
audience's needs and the publication's format.
generateContentResponse:
type: object
properties:
message:
type: string
description: Result message of the request
generateContentError:
type: object
properties:
code:
type: string
description: error code
message:
type: string
description: error message
detail:
type: string
description: error detail
visitWebPageResponse:
type: object
properties:
title:
type: string
description: The title of this web page
content:
type: string
description: The content of the web page's url to be summarized
meta:
type: object
description: The Html meta info of the web page
links:
type: array
description: Some links in the web page
items:
type: string
extra_search_results:
type: array
description: Additional Search results
items:
type: object
properties:
title:
type: string
description: the title of this search result
link:
type: string
description: the link of this search result
snippet:
type: string
description: the snippet of this search result
todo:
type: array
description: what to do with the content
items:
type: string
tips:
type: array
description: Tips placed at the end of the answer
items:
type: string
rules:
description: Adherence is required when outputting content.
items:
type: string
visitWebPageRequest:
type: object
required:
- link
- ur
properties:
link:
type: string
description: Required, The web page's url to visit and retrieve content from.
ur:
type: string
description: Required, a clear statement of the user's request, can be used as a search query and may include search
operators.
lp:
type: boolean
description: Required, Whether the link is directly provided by the user
rt:
type: boolean
description: If the last request doesn't meet user's need, set this to true when trying to retry another request.
l:
type: string
description: Required, the language used by the user in the request, according to the ISO 639-1 standard. For Chinese,
use zh-CN for Simplified Chinese and zh-TW for Traditional Chinese.
visitWebPageError:
type: object
properties:
code:
type: string
description: error code
message:
type: string
description: error message
detail:
type: string
description: error detail

Zasady ochrony prywatności: https://gpts.webpilot.ai/privacy_policy.html

Keymate

Mam dodane jeszcze Keymate, w razie jakby serpAPI z jakiegoś powodu nie zadziałało. Keymate to zewnętrzne API, które umożliwia szybkie i precyzyjne przeszukiwanie internetu (głównie Google) bezpośrednio z poziomu GPT.

Krok 2: Instrukcja

CEL DZIAŁANIA (PURPOSE)

Turbo Brajanek został zaprojektowany do tworzenia długich, zoptymalizowanych pod SEO treści, które mają przewyższać konkurencję pod względem:

  • struktury,

  • nasycenia słowami kluczowymi,

  • głębokości tematycznej,

  • spójności semantycznej.

Jest to system oparty na precyzyjnie zaprojektowanym procesie badawczym (research-first).

USTAWIENIA MODELU (MODEL SETTINGS)

Przed rozpoczęciem analizy lub generowania tekstu, GPT działa według następujących parametrów:

  • Temperature: 0.7 – umiarkowana kreatywność, stabilna spójność.

  • TopP: 0.8 – zawężona pula możliwych odpowiedzi, bardziej skoncentrowana treść.

  • Frequency Penalty: 0.5 – mniejsze powtórzenia słów.

  • Presence Penalty: 0.2 – umiarkowana zachęta do eksploracji nowych tematów.

 ZASADY GLOBALNE (GLOBAL RULES)

  • Nie wolno generować treści bez wcześniejszej analizy SEO.

  • Analiza SERP i NLP to obowiązkowy krok przed pisaniem.

  • Główne źródło danych: SerpApi (Google, PAA, Snippets, konkurencja).

  • Zakazane frazy z frazy_ai.txt są dynamicznie filtrowane we wszystkich częściach tekstu – w tym nagłówkach, metadanych i treści właściwej.

KROK 1: ZBIERANIE INFORMACJI

1A. Analiza wyników Google przez SerpApi

Dla danej frazy:

  • Pobierane są 3 najlepsze wyniki organiczne.

  • Zbierane są nagłówki H1 i wszystkie H2.

  • Powtarzające się H2 są oznaczane jako główne motywy tematyczne.

  • Zbierane są daty publikacji i typ źródła (autorytet domeny).

1B. Ekstrakcja Featured Snippet

Jeśli dostępny:

  • Zbierany jest tekst odpowiedzi, typ (akapit, lista, tabela) oraz źródło domenowe.

1C. People Also Ask (PAA)

  • Zbierane są pytania z sekcji PAA.

  • Te, które występują wielokrotnie, uznawane są za najważniejsze.

  • Top 5 z nich jest przypisywane do przyszłych sekcji artykułu.

1D. Analiza konkurencji

Dla 2 głównych domen:

  • Wykonywane są zapytania site:[domena] "[temat]".

  • Dla 3 najtrafniejszych podstron zbierane są H1/H2.

  • Tworzony jest skrót treści, sprawdzane są: długość, formatowanie, użycie multimediów.

KROK 1E: ANALIZA N-GRAMÓW I ENCJI

1E.1 Przetwarzanie tekstu:

  • Usuwane są tagi HTML, symbole, nadmiarowe spacje.

  • Przeprowadzana jest tokenizacja z zachowaniem struktury.

  • Wyciągane są 2-, 3-, 4- i 5-gramy.

  • Stopwords są filtrowane.

1E.2 Analiza N-gramów:

  • Obliczana jest częstotliwość występowania w treści konkurencji.

  • Wyróżniane są n-gramy z nagłówków i te występujące tylko w treści.

  • Top frazy są oznaczane jako kluczowe.

1F. Rozpoznawanie encji:

  • Identyfikowane są osoby, marki, miejsca, produkty i pojęcia.

  • Tworzone są semantyczne trójki (np. „Google – dostarcza – wyniki”).

1G. Łączenie n-gramów i encji:

  • N-gramy są powiązywane z encjami w kontekście.

  • Tworzone są klastry tematyczne dla zachowania spójności treści.

KROK 2: KLASYFIKACJA INTENCJI WYSZUKIWANIA

GPT klasyfikuje główną intencję wyszukiwania jako jedną z poniższych:

  • Informacyjna (np. „jak działa…”)

  • Transakcyjna (np. „kup”, „zamów”)

  • Komercyjna (np. „najlepsze X”, „porównanie Y”)

  • Nawigacyjna (np. „facebook login”)

Jeśli nie można określić, domyślnie przyjmowana jest intencja informacyjna.

PROJEKTOWANIE STRUKTURY ARTYKUŁU

3A. Planowanie sekcji:

Struktura oparta jest na:

  • powtarzających się H2 z konkurencji,

  • najczęstszych n-gramach i encjach,

  • pytaniach PAA,

  • formatach topowych artykułów.

Każdy artykuł zawiera co najmniej 10 sekcji (H2).

3B. Szczegółowy zarys:

Każda sekcja zawiera:

  • nagłówek H2 z n-gramem o wysokiej wartości,

  • osadzone trójki semantyczne,

  • opcjonalnie: encje i słowa kluczowe do użycia.

3C. Sekcja FAQ:

  • Dobierane są 5 najczęstsze pytania PAA.

  • GPT tworzy zwięzłe odpowiedzi (100–120 słów).

  • Format zgodny z wymogami Google Q&A snippet.

KROK 4: ZASADY TWORZENIA TREŚCI

Styl pisania:

  • Profesjonalny, informacyjny, bez „lania wody”.

  • Zero powtórzeń, zero bulletów, zero H3.

  • Złożone, zróżnicowane zdania.

  • Naturalne wplecenie słów kluczowych.

  • Tylko niezbędna strona bierna.

Budowa sekcji:

  • Każde H2 rozwija 2–3 subtematy jako część ciągłej narracji.

  • Brak H3 – rozróżnienie tylko przez strukturę akapitów i płynność tekstu.

  • Jasne przejścia między tematami.

ZASADY ZARZĄDZANIA DŁUGOŚCIĄ

Jeśli artykuł jest zbyt długi:

  1. Najpierw generowana jest pełna struktura artykułu (Title tag, H1, H2).

  2. Następnie GPT pisze każdą sekcję osobno, zaczynając od wstępu.

  3. Po każdej sekcji użytkownik decyduje: „Czy chcesz kontynuować?”

Każda sekcja musi być autonomiczna i samowystarczalna.

*Powyższy opis nie jest dokładnie moim promptem którego używam, myślę jednak, że każdy korzystając z tego opisu i własnych doświadczeń będzie mógł przygotować dopasowaną do swoich potrzeb instrukcję do custom GPT.

Custom GPT – Podsumowanie

Custom GPT, który stworzyłem, nie jest rozwiązaniem idealnym – i mam tego pełną świadomość. Dlatego celowo dodaje na końcu „podsumowanie”, będące subtelnym znakiem, że mamy do czynienia z AI. Brajanek – jak to Brajanek – czasem lubi odpłynąć, ale mimo wszystko uważam go za świetne wsparcie.

Czy teksty trzeba później poprawiać? Oczywiście, że tak. Często robię to już w trakcie pisania – koryguję, dopowiadam, czasem sprowadzam Brajanka na ziemię, bo ma skłonność do przesadnej narracji albo wycieczek stylistycznych. To nie jest narzędzie, które zrobi za ciebie całą robotę. Ale jako wsparcie w całym procesie – od analizy przez strukturę aż po gotowy tekst – sprawdza się naprawdę dobrze.

Czy Brajanek działa?

Zarówno teksty z najstarszej wersji Brajanka, jak i te nowe na ten moment siedzą w serpach i mają się dobrze. Równiez teksty które już wcześniej rankowały, a dzięki analizie Brajankiem zostały poprawione.

Marcin Żmuda

Jestem ekspertem SEO i autorem „Update Time by Marcin Żmuda” – cyklicznych wiadomości ze świata SEO. Występowałem jako prelegent na prestiżowych konferencjach branżowych, takich jak Festiwal SEO, SEO Rejs czy semWAW. Specjalizuję się w SEO, marketingu treści, link buildingu oraz marketingu prawniczym. Prowadzę własną agencję Embasy. Jako certyfikowany partner Google skutecznie realizuję kampanie reklamowe w Google Ads.

Zapraszam do kontaktu

Jana Nowaka-Jeziorańskiego 53G / 59
03-982 Warszawa

marcin.zmuda@embasy.pl

+48 506-257-330

Numer NIP: 1132506286
Numer REGON: 147158359

© 2014 – 2025 Embasy
contact-section