Smart Message może podpisać post nazwami użytkowników, których autorzy artykułu używają w sieciach społecznościowych, na przykład By @camille.example.com and Noah Petit. Nonli odczytuje nazwiska autorów z artykułu, a następnie wyszukuje każde z nich w tabeli, którą prowadzisz: w Airtable lub bezpośrednio w szablonie.
Na tej stronie użyto fikcyjnych nazwisk i nazw użytkowników. Każdy z poniższych fragmentów kodu został wyrenderowany silnikiem szablonów Nonli w dniu 2026-10-26 na danych testowych i bez publikowania czegokolwiek.
1. Co to robi, a czego nie robi#
- Przypisuje nazwy użytkowników znanym autorom artykułu. Nie wyszukuje osób ani firm cytowanych w tekście artykułu i nie zgaduje konta na podstawie nazwiska.
- Szablon zapisuje tekst. To, czy ten tekst stanie się prawdziwym oznaczeniem, zależy od sieci (zob. poniżej „Które sieci zamieniają tekst w oznaczenie”).
- Nie umożliwia oznaczania osobistych profili na LinkedInie. Zobacz Czy mogę oznaczać osoby lub firmy w postach na LinkedInie?
2. Wymagania wstępne#
- Nazwiska autorów w artykułach. Nonli odczytuje autorów ze strony artykułu, z jej danych strukturalnych (Schema.org
authorw JSON-LD lub mikrodaneitemprop="author"zname). Gdy strona ich nie zawiera, Nonli używa jako wartości zastępczej metataguarticle:author, który niektóre serwisy wypełniają adresem URL profilu zamiast nazwiska: wyszukiwanie używa wtedy tego adresu URL. W szablonie są one dostępne jakoauthors, czyli lista nazwisk. Najpierw sprawdź rzeczywiste wartości na prawdziwym artykule: zobaczauthorsw artykule Jakie zmienne Twig są dostępne w Nonli?. Nie używajpost.author: to pojedynczy tekst, który może opisywać osobę, która utworzyła post w Nonli, a nie autora artykułu. - Nazwy użytkowników Twoich autorów w każdej sieci, w której publikujesz.
- W przypadku metody z Airtable token Airtable zapisany w Nonli oraz identyfikator Twojej bazy. Postępuj zgodnie z artykułem Jak utworzyć tajny klucz API Airtable dla Nonli. Nigdy nie wysyłaj swojego tokenu zespołowi wsparcia.
3. Metoda 1: tabela w Airtable#
3.1. Utwórz tabelę#
Utwórz tabelę o nazwie Authors z jednym wierszem na autora:
| Name | Bluesky |
|---|---|
| Camille Martin | camille.example.com |
| Léa Dubois | lea.example.com |
| Sam Lefèvre |
- Name to klucz wyszukiwania. Wpisz nazwisko dokładnie tak, jak występuje w
authors, z tymi samymi znakami diakrytycznymi, spacjami i wielkimi literami. Nonli nie poprawia ani nie normalizuje nazwisk, więc wariant taki jakLea DuboiszamiastLéa Duboisnie daje pewnego dopasowania. Jeśli autor podpisuje się na kilka sposobów, dodaj jeden wiersz dla każdej pisowni. - Każde nazwisko musi być unikalne. Jeśli dwa wiersze mają to samo nazwisko, Nonli używa pierwszego zwróconego przez Airtable, a drugi wiersz jest pomijany.
- Dodaj jedną kolumnę na sieć (na przykład
Bluesky,Mastodon). Pusta komórka oznacza „brak nazwy użytkownika w tej sieci”. - Zapisuj nazwy użytkowników bez
@: szablon dodaje ten znak. - Dla każdej kolumny sieci użyj pola typu single line text (tekst jednowierszowy). Pole typu linked record, lookup lub multiple select zwraca listę zamiast tekstu, a szablon zgłasza błąd zamiast użyć nazwiska jako wartości zastępczej.
3.2. Napisz szablon#
1{%- set signature = [] -%}2{%- for authorName in authors -%}3 {%- set handle = airtable('appYourBaseId', 'Authors', 'Name', authorName, 'Bluesky') -%}4 {%- set signature = signature|merge([handle ? '@' ~ handle : authorName]) -%}5{%- endfor -%}6{{ title }}7{%- if signature is not empty %}8
9By {{ signature|join(', ', ' and ') }}10{%- endif %}Zastąp appYourBaseId identyfikatorem swojej bazy, a Authors, Name i Bluesky nazwami swojej tabeli i kolumn. airtable(base, table, searchField, searchValue, fieldToReturn) zwraca wartość fieldToReturn z pierwszego wiersza, w którym searchField jest równe searchValue, albo nic, gdy takiego wiersza nie ma lub komórka jest pusta.

Szablon wklejony do nowego szablonu Smart message przed zapisaniem. appYourBaseId to symbol zastępczy.
3.3. Oczekiwany wynik#
Dla tytułu Budget 2027: what changes i powyższej tabeli:
authors | Wynik |
|---|---|
| (brak) | Budget 2027: what changes |
Camille Martin | Budget 2027: what changesBy @camille.example.com |
Noah Petit (brak w tabeli) | Budget 2027: what changesBy Noah Petit |
Léa Dubois, Noah Petit, Camille Martin | Budget 2027: what changesBy @lea.example.com, Noah Petit and @camille.example.com |
Sam Lefèvre (pusta komórka) | Budget 2027: what changesBy Sam Lefèvre |
Ten szablon stosuje następujące reguły:
- Brak autora, brak podpisu. Wiersz
Byjest dodawany tylko wtedy, gdy jest co najmniej jeden autor, więc post nigdy nie kończy się samotnymBy. - Nazwisko jako wartość zastępcza. Autor bez nazwy użytkownika zachowuje pełne imię i nazwisko, więc każdy autor jest wymieniony.
- Kolejność jest zachowana. Autorzy pojawiają się w kolejności z artykułu, oddzieleni przecinkami, z
andprzed ostatnim.
3.4. Wariant: pokaż tylko dopasowanych autorów#
Jeśli wolisz wymieniać tylko autorów, którzy mają nazwę użytkownika, pomiń pozostałych:
1{%- set handles = [] -%}2{%- for authorName in authors -%}3 {%- set handle = airtable('appYourBaseId', 'Authors', 'Name', authorName, 'Bluesky') -%}4 {%- if handle -%}5 {%- set handles = handles|merge(['@' ~ handle]) -%}6 {%- endif -%}7{%- endfor -%}8{{ title }}9{%- if handles is not empty %}10
11By {{ handles|join(', ', ' and ') }}12{%- endif %}Dla Léa Dubois, Noah Petit, Camille Martin wynikiem jest By @lea.example.com and @camille.example.com. Gdy żaden autor nie jest dopasowany, nie ma wiersza By. Wybierz ten wariant świadomie: pomija on autorów bez nazwy użytkownika.
3.5. Wariant: podpis tylko wtedy, gdy dopasowano wszystkich autorów#
Niektóre zespoły wolą zasadę „wszystko albo nic”: podpis jest dodawany tylko wtedy, gdy każdy autor ma nazwę użytkownika, a w przeciwnym razie całkowicie pomijany. Zachowaj pętlę z poprzedniego wariantu i zmień tylko warunek:
1{%- if handles is not empty and handles|length == authors|length %}Dla Léa Dubois, Camille Martin wynikiem jest By @lea.example.com and @camille.example.com. Dla Léa Dubois, Noah Petit, Camille Martin nie ma w ogóle wiersza By, ponieważ Noah Petit nie ma nazwy użytkownika.
| Zasada | Niedopasowany autor | Najlepsza, gdy |
|---|---|---|
| Nazwisko jako wartość zastępcza (szablon główny) | Wymieniony z nazwiska | Każdy autor musi zawsze zostać wymieniony |
| Pokaż tylko dopasowanych autorów | Pominięty | Liczą się tylko nazwy użytkowników, częściowe wymienienie autorów jest dopuszczalne |
| Podpis tylko wtedy, gdy dopasowano wszystkich autorów | Pominięty cały podpis | Częściowy podpis byłby mylący |
Żadna z tych zasad nie jest domyślnym ustawieniem Nonli: decyduje szablon, więc wybierz zasadę, która odpowiada Twoim regułom redakcyjnym.
4. Metoda 2: tabela w szablonie#
Przy niewielkiej liczbie autorów możesz przechowywać tabelę w samym Smart Message, bez Airtable. Dane wejściowe (authors) i reguła wartości zastępczej są takie same jak w metodzie 1:
1{%- set blueskyHandles = {2 'Camille Martin': 'camille.example.com',3 'Léa Dubois': 'lea.example.com',4 'Alex Moreau': 'alex.example.com',5} -%}6{%- set signature = [] -%}7{%- for authorName in authors -%}8 {%- set handle = blueskyHandles[authorName] ?? null -%}9 {%- set signature = signature|merge([handle ? '@' ~ handle : authorName]) -%}10{%- endfor -%}11{{ title }}12{%- if signature is not empty %}13
14By {{ signature|join(', ', ' and ') }}15{%- endif %}Dla tych samych nazwisk daje takie same wyniki jak metoda 1: na przykład Camille Martin, Noah Petit daje By @camille.example.com and Noah Petit. Nazwiska są dopasowywane dokładnie: Lea Dubois (bez znaku diakrytycznego) lub camille martin (małymi literami) nie dają żadnego dopasowania i są wyświetlane tak, jak zostały zapisane.
Ta metoda jest przykładem do dostosowania, a nie konfiguracją skopiowaną od klienta.
4.1. Którą metodę wybrać#
| Airtable | Tabela w szablonie | |
|---|---|---|
| Gdzie edytujesz przypisania | W jednej tabeli Airtable | W każdym szablonie |
| Współdzielona przez kilka szablonów | Tak: jedna zmiana działa wszędzie | Nie: każdą kopię szablonu trzeba zaktualizować |
| Wymaga tokenu Airtable | Tak | Nie |
| Najlepsza dla | Redakcji z wieloma autorami | Kilku stałych autorów |
Żadna z metod nie zmienia tego, jakie oznaczenia akceptuje dana sieć.
5. Przetestuj przed publikacją#
W edytorze szablonów Smart Message przetestuj szablon na reprezentatywnych artykułach przed zapisaniem: artykule bez autora, z jednym autorem z nazwą użytkownika, z jednym bez niej i z kilkoma autorami. Następnie przetestuj od początku do końca post nieprodukcyjny opublikowany przez bota: nazwy użytkowników na Bluesky są zamieniane w oznaczenia tylko w publikacjach botów (zob. poniżej). Zobacz Jak utworzyć Smart Message.
Sprawdź, co faktycznie zawiera wynik:
- nazwisko (
Noah Petit): zwykły tekst; - nazwa użytkownika (
@camille.example.com): tekst, który niektóre sieci mogą zamienić w oznaczenie; - adres URL profilu: link, a nie oznaczenie;
- klikalne oznaczenie: widoczne tylko w opublikowanym poście i tylko wtedy, gdy sieć je utworzyła.
6. Które sieci zamieniają tekst w oznaczenie#
- Bluesky: gdy post publikuje bot, Nonli wyszukuje każdą pełną nazwę użytkownika zapisaną w wiadomości, np.
@camille.example.com. Gdy konto zostanie znalezione, Nonli publikuje prawdziwe oznaczenie na Bluesky. Gdy nie zostanie znalezione, tekst pozostaje zwykłym tekstem. W poście tworzonym ręcznie wpisane nazwy użytkowników nie są zamieniane: zamiast tego wybierz konto z podpowiedzi oznaczeń w edytorze. Używaj pełnej nazwy użytkownika wraz z domeną (na przykładname.bsky.social) i nie stawiaj bezpośrednio po niej znaków interpunkcyjnych, takich jak kropka: zostałyby odczytane jako część nazwy użytkownika. - LinkedIn: nazwa użytkownika lub nazwisko zapisane przez szablon pozostaje zwykłym tekstem. Nonli tworzy oznaczenia na LinkedInie tylko dla stron firmowych wybranych w edytorze posta i nie obsługuje jeszcze oznaczania profili osobistych. Aby oznaczyć osobę, edytuj post na LinkedInie po publikacji, jak wyjaśniono w artykule Czy mogę oznaczać osoby lub firmy w postach na LinkedInie?
- Inne sieci: ta strona ich nie obejmuje. Zanim zaczniesz polegać na wyniku, sprawdź jeden opublikowany post testowy.
7. Rozwiązywanie problemów#
| Problem | Przyczyna i rozwiązanie |
|---|---|
W ogóle brak wiersza By | Lista authors jest pusta dla tego artykułu. Sprawdź dane strukturalne autora na stronie artykułu. |
| Autor pojawia się jako nazwisko zamiast nazwy użytkownika | Nazwisko w Airtable jest zapisane inaczej (znak diakrytyczny, wielka litera, drugie imię), komórka dla tej sieci jest pusta lub nazwa kolumny w szablonie jest błędna. |
| Pojawia się niewłaściwa nazwa użytkownika | Dwa wiersze mają to samo nazwisko. Zachowaj jeden wiersz na nazwisko. |
| Żaden autor nie otrzymuje nazwy użytkownika | Sprawdź token Airtable w Nonli, identyfikator bazy oraz nazwy tabeli i kolumn. |
| Nazwa użytkownika jest opublikowana, ale nie jest klikalna | Sieć nie rozpoznała jej jako oznaczenia. Na Bluesky sprawdź pełną nazwę użytkownika i to, czy post opublikował bot. Na LinkedInie tekst z szablonu nigdy nie jest oznaczeniem. |