Migracja infrastruktury linków to działanie o wysokich stawkach. Każdy krótki link, który kiedykolwiek wydrukowałeś, osadząłeś w stopce e-maila lub umieściłeś na kodzie QR, jest teraz zależnością. Wykonasz migrację niezgrabnie i przez tygodnie serwujesz 404 dla pokaźnej części ruchu przychodzącego, zanim ktokolwiek to zauważy.
Ten przewodnik opisuje przeniesienie z Bitly do Elido. Zakłada, że już podjąłeś decyzję o zmianie - zwykle z powodu rezydencji danych w UE, czystszego doświadczenia darmowego planu, odsprzedaży white-label lub dostępu do API niewymagającego planu Premium (199 $/miesiąc rocznie lub 300 $/miesiąc miesięcznie na maj 2026 r.). Jeśli wciąż oceniasz, strona porównawcza pod adresem /compare/vs-bitly jest lepszym punktem startowym.
Co faktycznie musisz migrować#
Trzy rzeczy się przenoszą; nic innego nie ma znaczenia na poziomie sieci.
- Aktywne krótkie linki. Slug, miejsce docelowe, opcjonalne tagi i foldery oraz domena własna (jeśli istnieje).
- DNS domeny własnej. Rekord CNAME wskazujący na edge Bitly musi wskazywać na edge Elido.
- Historia kliknięć. Zagregowane liczniki Bitly - nie surowe zdarzenia (te nie są eksportowalne).
Wszystko inne - dashboardy Bitly Sights, brandowane kody QR, konfiguracje deep-link - to konfiguracja od zera na Elido, a nie migracja. Nie próbuj ich przenosić; odbuduj je na nowym stosie.
Krok 1: Inwentaryzacja#
Bitly ogranicza eksport historycznych danych według planu. Eksport CSV z dashboardu działa do około 10 tys. linków; powyżej tej liczby przekracza timeout lub paginuje słabo. Dla większych inwentarzy przejdź bezpośrednio przez API:
curl -H "Authorization: Bearer $BITLY_TOKEN" \
"https://api-ssl.bitly.com/v4/groups/$GROUP_GUID/bitlinks?size=100"
Paginuj przez URL pagination.next w każdej odpowiedzi. Maksymalny rozmiar strony to 100. Utrwalaj wyniki jako JSONL - jeden link na linię - żebyś mógł wznowić, gdy eksport się zatrzyma.
Czego chcesz z każdego wiersza:
link- pełny krótki URL (https://bit.ly/abclubhttps://twojadomena.pl/abc)long_url- miejsce docelowetags,archived,created_atlink_clicks(łączna suma w całym czasie) - jedyna historia kliknięć, którą dostaniesz z Bitly
Odfiltruj zarchiwizowane linki, chyba że masz powód, by je zachować. Większość zespołów odkrywa, że 30–50% inwentarza to martwe linki - stare kampanie, jednorazowe udostępnienia - a migracja to właściwy moment, by pozbyć się szumu.
Krok 2: Pre-provisioning na Elido#
Przed ruszeniem z DNS zarezerwuj każdy link na Elido pod tą samą domeną własną i slugiem.
Dla dużych inwentarzy użyj links.bulkCreate zamiast tworzenia per link. Będziesz potrzebować ID workspace'u Elido i numerycznego ID domeny (najpierw znajdź domenę za pomocą workspaceDomains.list(workspaceId)):
import { ElidoApi } from "@elido/sdk";
const api = new ElidoApi({ apiKey: process.env.ELIDO_API_KEY! });
// Jednorazowo rozwiąż numeryczne ID swojej domeny własnej przed pętlą importu
const { items: domains } = await api.workspaceDomains.list(WORKSPACE_ID);
const domain = domains.find((d) => d.hostname === "links.twojamarka.pl");
if (!domain) throw new Error("Domain not registered in workspace");
// Podziel JSONL na fragmenty po 100 (maksimum endpointu bulk)
async function migrateChunk(rows: BitlyRow[]) {
return api.links.bulkCreate(
WORKSPACE_ID,
{
domain_id: domain.id,
links: rows.map((row) => ({
slug: row.slug,
destination_url: row.long_url,
tags: [
...row.tags,
`bitly-migrated`, // tag do filtrowania w analityce
],
title: row.title ?? undefined,
})),
},
{ idempotencyKey: `mig-batch-${rows[0].slug}` },
);
}
Endpoint links.bulkCreate (POST /v1/workspaces/{workspace_id}/links/bulk) przyjmuje do 100 linków na wywołanie i zwraca status sukcesu/niepowodzenia per element, więc częściowy błąd nie przerywa całej partii. Dla importów pojedynczych linków links.create(workspaceId, input, { idempotencyKey }) przyjmuje te same pola domain_id / slug / destination_url / tags oraz opcjonalny klucz idempotencji, by częściowy skrypt mógł bezpiecznie wznowić pracę.
Kilka rzeczy do wiedzenia przed uruchomieniem skryptu:
- Najpierw rejestracja domeny.
domain_idw treści żądania musi dotyczyć domeny już zarejestrowanej w twoim workspace'ie. Zarejestruj i zweryfikuj domenę przez przepływ własnych domen przed rozpoczęciem importu. Domena nie musi jeszcze być live - możesz zarejestrować ją w Elido przed przełączeniem DNS. - Limity planu. Elido egzekwuje limity linków na poziomie workspace'u według planu. Pre-provisioning inwentarza 100 tys. linków wymaga planu Business.
- Limity szybkości. Bulk create podlega tym samym limitom szybkości na poziomie workspace'u co pojedyncze tworzenie. Migracja 50 tys. linków zajmuje około 10 minut, jeśli batchujesz po 100 linków na wywołanie z umiarkowaną równoległością. Utrzymuj to seryjnie lub z lekką współbieżnością z jednego runnera, by dziennik audytu pokazywał czysty blok importu.
Krok 3: Przekierowanie domeny własnej#
To jest przełączenie. Wszystko przed tym jest odwracalne; wszystko po tym jest live.
Obniż TTL na istniejącym CNAME Bitly co najmniej 24 godziny przed oknem przełączenia:
links.twojamarka.pl. 300 IN CNAME cname.bitly.com.
Jeśli twoje TTL wynosi 86400 od lat, „obniżenie TTL" to 24-godzinne czekanie, a nie pięciominutowe zadanie. Zaplanuj to.
Gdy otwiera się okno zmian, zamień cel:
links.twojamarka.pl. 300 IN CNAME edge.elido.me.
Edge Elido używa automatycznego TLS na żądanie. Pierwsze żądanie po propagacji DNS wyzwala wydanie Let's Encrypt - zazwyczaj 1–3 sekundy opóźnienia przy tym jednym żądaniu, potem certyfikat jest buforowany, a kolejne żądania są serwowane z brzegu w regionie UE w czasie jednocyfrowych milisekund. Certyfikat jest provisionowany automatycznie; nie ma ręcznego kroku wnioskowania o certyfikat.
Zweryfikuj za pomocą dig z kilku sieci przed ogłoszeniem zakończenia przełączenia. Propagacja DNS jest nierówna; sprawdzanie tylko z laptopa oznacza sprawdzenie tylko jednego resolwera.
Krok 4: Uzgadnianie historii kliknięć#
Bitly nie eksportuje surowych zdarzeń kliknięć. Nie budżetuj czasu na „import historii" - to niemożliwe, a każde narzędzie, które to obiecuje, czyta agregaty i nazywa je zdarzeniami.
To, co dostaniesz, to licznik link_clicks per link z eksportu API Bitly. Przechowaj to gdzieś, gdzie możesz połączyć z inwentarzem linków Elido - oddzielna kolumna w zbiorze danych Metabase, tag jeśli chcesz to inline. Elido zaczyna liczyć od zera przy przełączeniu.
Dla warstwy raportowania formuła to: total_clicks = elido_clicks + bitly_lifetime_clicks. API analityki udostępnia dane kliknięć Elido pod adresem /v1/analytics/workspaces/{workspace_id}/timeseries; 20-liniowe zapytanie Metabase lub Hex łączy obie liczby, jeśli przechowałeś bazę Bitly.
Jeśli potrzebujesz szczegółowej historycznej analityki - podział geo według miesiąca, trendy referrerów - nie odzyskasz ich. Odbuduj pytania na surowym logu zdarzeń Elido od tej pory; migracja to twarda granica.
Pięć pułapek, które gryzą w drugim tygodniu#
1. Zakodowane linki bit.ly w statycznych zasobach. Pliki PDF, materiały drukowane, fragmenty kodu embed w e-mailach powitalnych. Te wskazują na domenę Bitly, a nie na twoją własną. Działają dopóki utrzymujesz konto Bitly; przestają działać w chwili anulowania. Albo utrzymaj darmowe konto Bitly żywe jako cmentarz tylko do przekierowań, albo zaakceptuj stratę i nie anuluj przez co najmniej rok.
2. CDN double-redirect. Jeśli frontujesz swoją domenę przez Cloudflare w trybie proxy (pomarańczowa chmurka), handshake SSL do Elido może kolidować z Universal SSL Cloudflare. Ustaw SSL Cloudflare na „Full (Strict)" i usuń wszelkie Reguły Stron, które odwoływały się do starego celu Bitly. Lub tymczasowo ustaw rekord na szarą chmurę podczas okna przełączenia.
3. Obcinanie UTM w eksporcie. Bitly czasami pokazuje skrócony URL docelowy w dashboardzie, ale przechowuje kanoniczny pełny URL. Eksport CSV zazwyczaj ma pełny URL; widok dashboardu może nie mieć. Jeśli scrapujesz dashboard zamiast wywoływać API, stracisz UTM. Zawsze używaj API.
4. Limity szybkości API Bitly po stronie odczytu. API Bitly agresywnie throttluje GET /bitlinks dla kont o dużym wolumenie. Naiwne sekwencyjne odczytywanie 1M linków może trwać dni. Paginuj równolegle (4–8 równoległych paginatorów), ale obserwuj 429; wycofuj się, gdy się pojawiają.
5. Zasięg na poziomie konta Bitly vs. grupy. Grupy Bitly to nie workspace'y. Jedno konto Bitly może posiadać wiele grup, każda ze swoją konfiguracją własnej domeny. Jeśli twój zespół przez lata dodawał domeny pod różnymi grupami, eksport musi wyliczyć wszystkie grupy, a nie tylko domyślną. Pomiń grupę i ta domena nie migruje.
Compliance: dlaczego większość zespołów faktycznie się przenosi#
Migracja jest zazwyczaj napędzana przez compliance, a nie funkcje. Wzorzec:
- IOD oznacza Bitly jako podprzetwarzającego zlokalizowanego w USA; poleganie na Data Privacy Framework spotyka się z oporem podczas audytu.
- Zamówienia publiczne proszą o listę podprzetwarzających; lista Bitly sięga 20+ dostawców.
- BAA w planie Premium (300 $/miesiąc rozliczane miesięcznie lub 199 $/miesiąc na rocznym zobowiązaniu, na maj 2026 r. - zweryfikuj aktualne ceny) staje się wymaganiem dla klientów powiązanych z ochroną zdrowia, a skok planu jest wyzwalaczem.
Elido jest domyślnie hostowany w UE - zdarzenia kliknięć routowane są przez region UE, z regionami USA Wschód i Azja-Pacyfik dostępnymi jako opcjonalne regiony Business+. Lista podprzetwarzających obejmuje pięciu dostawców, opublikowana pod /legal/subprocessors. ISO 27001 jest aktualny; SOC 2 Type II jest w audycie. BAA jest dostępne w planie Business+. Schrems II nie jest problemem w domyślnej konfiguracji, bo dane nie opuszczają EOG, chyba że workspace wyraźnie przypina się do regionu spoza UE.
Jeśli compliance jest motorem, plan migracji powinien zawierać diagram przepływu danych pokazujący obie strony: gdzie były zdarzenia kliknięć wcześniej, gdzie są teraz. To jest diagram, którego twój audytor chce przy następnej ocenie.
Self-host jako alternatywa#
Dla zespołów, których postawa bezpieczeństwa wyklucza wszelkie SaaS shortanery - usługi finansowe, rząd, ochrona zdrowia - Elido dostarcza wykres Helm na licencji Apache 2.0. Te same binaria, które działają we Frankfurcie, wdrożone w twoim VPC, BYO KMS dla szyfrowania, bez zewnętrznych podprzetwarzających. Migracja wygląda identycznie z wyjątkiem kroku 3 (DNS), gdzie wskazujesz swój ingress in-cluster zamiast edge.elido.me.
Runbook self-host omawia instalację Helm, bootstrapping sekretów i podłączenie warstwy uwierzytelniania; zaplanuj pół dnia na świeże wdrożenie na istniejącym klastrze k8s.
Przepływ pracy dewelopera po migracji#
Po przejściu na Elido API jest główną powierzchnią dla każdego zespołu tworzącego więcej niż kilka linków tygodniowo. Specyfikacja OpenAPI 3.1 znajduje się pod adresem /help; pakiet @elido/sdk obejmuje API w TypeScript, a SDK Go dostarcza packages/sdk-go.
Dla przepływów pracy napędzanych przez agentów, serwer MCP open source łączy Elido z Claude, Cursor lub dowolnym klientem obsługującym MCP:
{
"mcpServers": {
"elido": {
"command": "npx",
"args": ["-y", "@elido/mcp-server"],
"env": { "ELIDO_API_KEY": "elido_pk_..." }
}
}
}
Domyślnie tylko do odczytu - agenci mogą odpytywać analitykę i szukać linków bez zapisów. Przyznanie zasięgu zapisu to celowe ustawienie per workspace.
Ostatnia lista kontrolna przed przełączeniem#
- Token API Bitly ma dostęp do wszystkich grup, nie tylko do domyślnej
- Inwentarz wyeksportowany jako JSONL, zarchiwizowane linki odfiltrowane, liczba skontrolowana względem dashboardu Bitly
- Wszystkie slugi pre-provisionowane na Elido pod właściwą domeną własną; skrypt zwrócił 100% sukces w dry-run
- Domena własna zarejestrowana i zweryfikowana w workspace'ie Elido przed dotknięciem DNS
- TTL DNS na istniejącym CNAME Bitly obniżone do 300s, co najmniej 24 godziny przed przełączeniem
- Tryb proxy Cloudflare i ustawienie SSL zweryfikowane jako kompatybilne z edge Elido
- Łączna liczba kliknięć Bitly przechwycona w godzinie przełączenia i przechowana do raportowania
- Co najmniej jeden link testowy wsteczny wydrukowany i zeskanowany dla potwierdzenia end-to-end
- Konto Bitly zaplanowane do pozostania aktywnym przez 90 dni po przełączeniu jako ubezpieczenie dla zakodowanych linków
bit.ly
Zrobione właściwie, zmiana z perspektywy użytkownika jest niewidoczna. Zrobione źle, spędzasz dwa tygodnie obsługując zgłoszenia „dlaczego bit.ly nie działa?" od kogoś, kto nie zdaje sobie sprawy, że to nie jego wina.
Praca techniczna jest prosta. Dyscyplina leży w staging.
Powiązane na blogu#
Wypróbuj Elido
Wklej URL, otrzymaj krótki link
Bez rejestracji. Link działa 30 dni. Zarejestruj się, aby zachować go na zawsze.
Za darmo, bez rejestracji · 2 dziennie