Generatore di incorporamento X (Twitter)

Social Media Video Codice
Tema
Allineamento

Introduzione

Il Generatore di incorporamento X (Twitter) di Toollect trasforma qualsiasi URL di post nel codice di incorporamento ufficiale che X pubblica per mostrare post su altri siti web – il blockquote twitter-tweet più widgets.js – con un clic, un'anteprima live prima di copiare e tutte le opzioni di visualizzazione che l'interfaccia di X offre. Incolla un link, scegli le opzioni, anteponi, copia, incolla. Tutto il ciclo richiede secondi.

L'attrito che elimina è familiare a chiunque abbia incorporato un post a mano. La finestra del publisher di X produce il codice, ma sparge le scelte su schermate separate, non espone controlli per nascondere i media o per l'allineamento, e non offre alcun controllo numerico della larghezza per i clip. Scrivere il blockquote a mano funziona finché un attributo scritto male non lascia il post come link nudo per sempre. Questo strumento assembla il markup esatto che widgets.js si aspetta, traduce le tue opzioni nei giusti attributi data-* e ti mostra il render reale prima che qualcosa raggiunga la tua pagina.

Il generatore offre due modalità dietro una barra di schede. Messaggio costruisce la classica scheda per qualsiasi post – testo, foto, anteprime dei link – con tema, larghezza da 220 a 550 px, lingua dell'interfaccia, allineamento, visibilità di conversazione e media, Do Not Track e un'opzione per omettere il tag script condiviso. Clip ottimizza lo stesso post per il suo player, con una larghezza fino a 1920 px scritta nell'attributo data-media-max-width che i video grandi meritano. Entrambe le modalità parlano direttamente con l'endpoint oEmbed pubblico di X – senza chiave API, senza registrazione e senza server Toollect in mezzo.

Casi d'uso

Incorporare contenuti di X appare in più luoghi di un articolo di blog, e le due modalità si dividono il lavoro in modo naturale.

Blog e contenuti editoriali

Un articolo di commento che cita una figura pubblica, un articolo tech con il post di annuncio incorporato, un blog sportivo con il clip del momento – i casi classici. La modalità Messaggio con le impostazioni predefinite copre i post di testo; passa alla modalità Clip quando il post è principalmente un video e il player deve possedere la colonna.

Redazioni e copertura dal vivo

I giornalisti incorporano post di testimoni e comunicati ufficiali nella copertura continua. La velocità conta e anche la verifica – il generatore normalizza qualunque link condiviso sul momento, che sia un link di condivisione dall'app con parametri di tracciamento, forme legacy di twitter.com o varianti di vista foto, in un riferimento canonico al post, e l'anteprima conferma che il post si rende ancora prima che l'articolo esca. Nascondere la conversazione tiene il filo centrato sulla citazione dichiarata invece che sulla discussione che la precede.

Documentazione e scrittura tecnica

Note di rilascio, changelog e tutorial citano sempre più spesso thread di sviluppatori come fonti primarie. Nascondi media comprime le anteprime dei link in testo per una lettura più tranquilla, il selettore della lingua mostra pulsanti di azione e timestamp nella lingua della documentazione, e Ometti script tiene libere da tag duplicati le pagine che già caricano widgets.js globalmente – librerie di componenti, temi di documentazione.

Siti di marketing e portfolio

Post di elogi dei clienti come prova sociale, thread dei fondatori come storia del brand. L'allineamento Centrato colloca un'unica testimonianza in una colonna stretta; Do Not Track segnala rispetto della privacy al pubblico europeo; l'anteprima verifica ogni scheda prima della spedizione.

Come funziona

Lo strumento gira in quattro passaggi:

  1. Analizzare e canonizzare l'URL – l'input viene confrontato con la grammatica dei link X per i post – un nome utente (senza @, 1–15 lettere, cifre o underscore), la rotta status e un ID snowflake di 15–19 cifre su x.com o twitter.com con prefissi opzionali www./mobile./m. I parametri di query come ?s=20&t=… vengono ignorati invece che ripuliti – l'URL canonico ricostruito semplicemente non li include mai. Le rotte senza nome utente come /i/web/status/… del client web vengono rifiutate con un messaggio dedicato perché l'endpoint oEmbed non può risolverle.
  2. Costruire la richiesta ufficiale – le tue opzioni diventano parametri di query sull'endpoint oEmbed pubblico di X (publish.x.com/oembed?url=…) – maxwidth, theme, lang, hide_thread, hide_media, align, dnt, omit_script. L'endpoint è senza chiave e progettato senza limite di frequenza – esiste proprio perché i CMS convertano URL in incorporamenti.
  3. Recuperare il markup ufficiale – una sola GET HTTPS restituisce l'HTML del blockquote esattamente come lo formatta X, con le tue opzioni già infornate come attributi data-*. Il tuo browser parla direttamente con X; nessun server Toollect tocca la richiesta.
  4. Post-elaborare e previsualizzare – il tag script del server viene rimosso e gestito separatamente (così l'anteprima carica widgets.js esattamente una volta indipendentemente da quante volte rigeneri), la modalità Clip riscrive l'attributo di larghezza lato client (vedi sotto perché), e il blockquote entra nell'area di anteprima. Lo strumento osserva l'iframe renderizzato e riporta onestamente se non compare mai.

Cambiare qualsiasi opzione rigenera tutta la catena – nuova richiesta, markup fresco, anteprima rifatta – così il codice che copi corrisponde sempre a ciò che stai guardando.

Formati URL supportati

Il generatore accetta ogni forma di URL che identifichi un post con il suo nome utente, e rifiuta tutto il resto con un messaggio specifico.

Formati accettati

Formato Esempio Risultato
Post canonico x.com/nomeutente/status/1234567890123456789 Incorporamento di quel post
Dominio legacy twitter.com/jack/status/20 Incorporamento di quel post
Sottodominio mobile mobile.twitter.com/nomeutente/status/… Incorporamento di quel post
Prefisso www www.x.com/nomeutente/status/… Incorporamento di quel post
Senza schema x.com/nomeutente/status/… Incorporamento di quel post
Variante di vista foto x.com/nomeutente/status/…/photo/1 Incorporamento di quel post
Variante di vista video x.com/nomeutente/status/…/video/1 Incorporamento di quel post
Con parametri di tracciamento …?s=20&t=…&ref_src=twsrc%5Etfw Incorporamento di quel post – parametri ignorati

Le varianti di vista e i parametri spazzatura dopo l'ID del post sono semplicemente ignorati – l'incorporamento punta sempre al post stesso, che renderizza i suoi propri media. Il prefisso https:// e la barra finale sono opzionali.

Formati rifiutati

Forma di URL Motivo del rifiuto
x.com/i/web/status/1234567890123456789 La rotta senza nome utente del client web – l'endpoint oEmbed risponde 404. Apri il link e copia l'indirizzo completo con il nome utente
x.com/nomeutente Un profilo – nessun post da incorporare
x.com/intent/tweet?text=… o x.com/intent/retweet?tweet_id=… Intent di condivisione – azioni, non contenuti
x.com/hashtag/argomento o x.com/search?q=… Pagine hashtag e ricerca – nessun singolo post
facebook.com/…, qualsiasi altro host Non è un dominio X

Il caso senza nome utente sotto /i/web/status/… merita enfasi perché è la sorpresa più comune. X consegna quella forma quando l'URL di un post viene copiato dal client web senza aprirlo. Il generatore la rifiuta deliberatamente – passarla all'endpoint produrrebbe un fallimento silenzioso – e ti chiede il link completo. Il parser di URL X (Twitter) di questo sito risolve questi link alla loro forma canonica se preferisci riparare l'URL piuttosto che ricopiarlo.

Anatomia del codice di incorporamento

L'output è lo stesso codice che produce la macchinaria di X, con le tue opzioni applicate. Un incorporamento di messaggio con le impostazioni predefinite appare così (contenuto abbreviato):

<blockquote class="twitter-tweet" data-width="550">
  <p lang="en" dir="ltr">Just setting up my twttr</p>
  &mdash; Jack (@jack)
  <a href="https://x.com/jack/status/20?ref_src=twsrc%5Etfw">21 marzo 2006</a>
</blockquote>
<script async src="https://platform.x.com/widgets.js" charset="utf-8"></script>

Percorrendo le parti:

  • La classe del blockquote – twitter-tweet è l'amo che widgets.js cerca. Ogni elemento con questa classe sulla pagina diventa una scheda renderizzata.
  • data-width (messaggi) – la larghezza massima di renderizzazione in pixel. X la comprime internamente intorno a 250–550 indipendentemente da ciò che è scritto – il generatore quindi mantiene il valore scelto nel range onesto.
  • data-media-max-width (clip) – quanto larghi possono espandersi i media dentro la scheda, fino a 1920 px. Presente solo in modalità Clip – vedi Messaggio contro clip per perché il generatore scrive questo attributo da sé.
  • data-theme="dark" – presente solo quando è scelto Scuro. Renderizza testo chiaro su fondo scuro con il look scuro della scheda.
  • data-lang – presente ogni volta che è selezionata una lingua precisa, inglese compreso. Localizza i testi propri del widget – formato del timestamp, il ponte Continua a leggere, etichette delle azioni – ma mai il testo del post stesso. Soltanto Automatico omette l'attributo; widgets.js ripiega allora sulla lingua della pagina.
  • data-conversation="none" – aggiunto da Nascondi conversazione su una risposta. Senza di esso, widgets.js antepone un riassunto compresso del post padre.
  • data-cards="hidden" – aggiunto da Nascondi media. Le anteprime dei link, foto e video restano compresse; solo il testo si renderizza.
  • data-align – flotta la scheda a sinistra o destra, o la centra, relativamente al suo contenitore. Assente con allineamento Nessuno.
  • data-dnt="true" – aggiunto dal rinuncia alla personalizzazione. Dice a X di non usare l'incorporamento né le sue visualizzazioni di pagina per suggerimenti personalizzati o pubblicità personalizzata.
  • Il paragrafo con la riga di attribuzione – il contenuto visibile prima che widgets.js giri – testo del post, autore, e un link al post. È l'esperienza permanente per i visitatori senza JavaScript o con lo script bloccato, e degrada con grazia in una normale citazione.
  • Il tag script – widgets.js da platform.x.com, caricato async. Uno per pagina basta per quanti incorporamenti si vogliono – esattamente lo scopo dell'opzione Ometti script.

Messaggio contro clip

Due schede, un post, due compiti diversi. Cambiare scheda rigenera immediatamente – non c'è stato stantio.

Scheda Messaggio Scheda Clip
Ideale per Post di testo, foto, anteprime dei link Post il cui punto è il video
Intervallo di larghezza 220–550 px (predefinito 550) 560–1920 px (predefinito 560)
Attributo di larghezza data-width dal server data-media-max-width, riscritto dallo strumento
Tema (chiaro/scuro) Disponibile Nascosto – il player non ha variante chiara
Nascondi conversazione Disponibile Nascosto – il contesto padre di una risposta è testo, non il video
Nascondi media Disponibile Nascosto – i media sono il punto
Lingua, allineamento, Do Not Track, Ometti script Disponibili Disponibili

Perché lo strumento scrive da sé data-media-max-width? Perché l'endpoint oEmbed di X non può. I test confermano che l'endpoint comprime ogni parametro maxwidth – compresi i post con video – nell'intervallo messaggio 220–550, e non emette mai l'attributo data-media-max-width che portano gli incorporamenti di clip. Quell'attributo appartiene al flusso interno di publish.x.com, dove il generatore di video incorporati decora il markup dopo. Il generatore riproduce esattamente quella decorazione – rimuove il data-width compresso del server e scrive la larghezza scelta in data-media-max-width, così un incorporamento di clip da 1200 px è davvero largo 1200 px sulla tua pagina.

In pratica la regola decisionale è semplice. Se il post si legge bene come scheda – Messaggio. Se togliere il player lo svuota – Clip, e dai al player lo spazio di cui ha bisogno.

Opzioni di incorporamento

Ogni controllo mappa su un attributo o un parametro di richiesta. Predefiniti tra parentesi.

Lingua (predefinita: la lingua della pagina) – offre Automatico più le 34 lingue che X fornisce per i testi del widget. Ogni selezione precisa, inglese compreso, viene inviata come parametro lang e scritta in data-lang – così il chrome del widget resta identico ovunque incolli il codice. Localizza timestamp ed etichette delle azioni attorno al post, mai le parole del post. Automatico omette sia il parametro sia l'attributo – widgets.js renderizza allora nella lingua dichiarata dalla pagina ospite; conviene ai siti multilingue, ma rende l'output dipendente dal punto di incollaggio.

Tema (Chiaro, solo scheda Messaggio) – Scuro invia theme=dark e scrive data-theme="dark". Chiaro è l'assenza dell'attributo.

Larghezza (550 messaggio, 560 clip) – digitata come numero esatto, compressa all'intervallo valido appena lasci il campo. I messaggi inviano maxwidth; i clip pilotano la riscrittura client-side di data-media-max-width. I valori fuori dall'intervallo di una scheda non sopravvivono al campo – 9999 in Messaggio diventa 550, 100 in Clip diventa 560.

Allineamento (Nessuno) – Sinistra, Destra o Centro scrive align nella richiesta e data-align nel blockquote. Centro è il modo discreto di collocare una singola scheda in un articolo ampio; Destra lascia fluire il testo dell'articolo attorno ad essa.

Nascondi conversazione (spento, solo scheda Messaggio) – invia hide_thread=true, che il server traduce in data-conversation="none". Significativo solo sulle risposte; su un post autonomo non cambia nulla.

Nascondi media (spento, solo scheda Messaggio) – invia hide_media=true, tradotto in data-cards="hidden". L'incorporamento diventa una pura citazione.

Ometti il tag script di widgets.js (spento) – invia omit_script=true e sopprime il tag script nell'output. Per siti che già caricano widgets.js una volta globalmente – più incorporamenti, uno script. Se la tua pagina non ha widgets.js, lascialo spento; il blockquote da solo si renderizza per sempre come testo statico.

Rinuncia alla personalizzazione di X (spento) – invia dnt=true e scrive data-dnt="true". X documenta questo come esclusione dell'incorporamento e delle sue pagine dai suggerimenti personalizzati e dalla pubblicità personalizzata.

Utilizzo

  1. Incolla l'URL del post nel campo di input – qualsiasi formato accettato dalla tabella sopra.
  2. Premi Genera (o Invio). Il codice appare nella casella di output e l'anteprima si apre automaticamente con il render reale di X.
  3. Scegli la scheda – Messaggio per la scheda standard, Clip per post centrati sul video. Cambiare rigenera con le opzioni e l'intervallo di larghezza di quella scheda.
  4. Regola le opzioni – lingua, tema, larghezza, allineamento, le caselle di visibilità. Ogni cambio richiede e renderizza di nuovo; la casella del codice non diverge mai dall'anteprima.
  5. Controlla la diagnostica – se non appare nessuna scheda, l'avviso sopra l'output dice se lo script di X era bloccato o il post non può essere incorporato.
  6. Copia il codice e incollalo nell'HTML della tua pagina dove il post deve apparire.

Un input che non corrisponde a nessun formato supportato pulisce l'output e si spiega – oppure il messaggio di link non valido o, per rotte senza nome utente, la richiesta del link completo. Cancella reimposta input, codice e anteprima in un passo.

Tutorial

Segui un link reale attraverso entrambe le schede.

Passo 1 – Incolla un link di condivisione dall'app. Copia l'URL di un post così come lo condivide l'app mobile, parametri di tracciamento inclusi:

https://twitter.com/new27brigade/status/2090248985391014324?s=20&t=FakeNonce

Premi Genera. Il parser legge oltre il dominio legacy e i parametri s e t fino al post stesso – new27brigade, stato 2090248985391014324 – e il codice generato punta alla forma canonica. L'anteprima si apre e la scheda si renderizza.

Passo 2 – Scurisci. Imposta il Tema su Scuro. Il codice guadagna data-theme="dark" e l'anteprima si renderizza nella palette scura. Nota la nuova richiesta – il tema è infornato lato server, ecco perché ogni cambio di opzione richiama l'endpoint invece di modificare la stringa localmente.

Passo 3 – Restringi. Digita 350 in Larghezza e premi Invio. L'attributo diventa data-width="350" e la scheda si restringe. Prova a digitare 9999 e clicca altrove – il campo torna a 550, perché X lì comprimerebbe comunque.

Passo 4 – Localizza l'interfaccia. Imposta la Lingua su giapponese (日本語). Il codice guadagna data-lang="ja" e il timestamp nell'anteprima si riformatta secondo la convenzione giapponese. Il testo del post resta esattamente com'è – l'impostazione governa solo le etichette proprie di X.

Passo 5 – Passa a Clip. Clicca sulla scheda Clip. Lo strumento richiede di nuovo con il set di parametri clip e riscrive il markup – data-width scompare, data-media-max-width="560" appare, e il selettore del tema scompare dal pannello. Trascina la larghezza a 1200 – il player si espande. Questo post è un video di esercitazione militare, quindi la modalità Clip gli si addice; per un annuncio testuale torneresti indietro.

Passo 6 – Copia e spedisce. Premi Copia e incolla in una semplice pagina HTML. Aprila – il player si renderizza a piena larghezza. Questo è il contratto completo – lo stesso codice, lo stesso render, sulla tua pagina.

Anteprima e diagnostica

L'anteprima esegue il vero widgets.js di X contro il tuo esatto blockquote, così fallisce esattamente dove fallirà la tua pagina. Due avvisi, due significati distinti:

Avviso Cosa significa Cosa fare
«Caricamento di widgets.js di X non riuscito – spesso un ad blocker» Il browser non è riuscito affatto a scaricare platform.x.com/widgets.js Consenti il dominio nel blocker o prova una finestra privata pulita. L'incorporamento pubblicato fallirà allo stesso modo per i visitatori con quel blocker
«L'incorporamento ufficiale non è stato visualizzato» Lo script è girato ma non ha prodotto scheda Il post potrebbe essere eliminato, l'account protetto, l'URL errato o l'autore ha disabilitato l'incorporamento. Verifica su x.com; se lì riproduce ma qui no, l'incorporamento è disattivato dall'autore

Entrambi gli avvisi si attivano solo dopo attese generose – venti secondi per il download dello script, quindici ulteriori per il render – così le connessioni lente non producono falsi allarmi. Un post incorporabile si renderizza bene dentro quelle finestre.

Un dettaglio meccanico degno di nota – la prima generazione scarica widgets.js e lo conserva per la sessione. Le rigenerazioni – nuove opzioni, cambi di scheda – lo riutilizzano e lo invitano a processare il nuovo blockquote, così le anteprime successive appaiono più veloci della prima.

Consigli da pro

  • Abbinalo al parser di URL. Il parser analizza e pulisce un link – tipo, ID snowflake, chiavi di tracciamento; il generatore trasforma il link pulito in codice. Archivia con il parser, pubblica con il generatore.
  • Un tag script, molti incorporamenti. Le pagine con più post dovrebbero caricare widgets.js una volta – spunta Ometti script su ogni output tranne il primo, o caricalo tu stesso nel template del sito e omettilo ovunque.
  • Nascondi media trasforma il post in citazione. Per citazioni editoriali dove un'anteprima di link distrae, Nascondi media più Nascondi conversazione lasciano solo le parole e l'attribuzione.
  • Centra le testimonianze singole. Allineamento Centrato in un layout ampio si legge come design intenzionale; l'allineamento a sinistra predefinito di ogni CMS raramente è ciò che vuole una pagina di marketing.
  • Abbina la lingua del widget alla lingua della pagina. Una pagina giapponese con pulsanti RETWEET inglesi sembra incompleta – le lingue precise fissano il chrome, la parte di cui sei responsabile; se lo stesso embed gira su template multilingue, scegli piuttosto Automatico e lascia che widgets.js segua ogni pagina ospite.
  • Attiva Do Not Track per pagine orientate all'UE. Il flag è documentato da X e si propaga attraverso l'incorporamento – un segnale di un clic che la scheda rispetta la privacy del visitatore.
  • Progetta per la colonna, poi fissa la larghezza. I messaggi finiscono fisicamente a 550 px; l'anteprima mostra il risultato reale alla dimensione del tuo contenitore prima di impegnarti.

Alternative

In quali altri modi puoi mettere un post su una pagina?

Metodo Markup ufficiale Copertura delle opzioni Anteprima live Dipendenze
Questo strumento Sì – generato lato server Set completo, entrambe le modalità Nessuna
Menu condividi di x.com → Incorpora post (publish.x.com) Parziale – niente nascondi media, niente allineamento, niente ometti script, niente larghezza clip numerica Solo nella finestra di dialogo Nessuna
Blockquote scritto a mano + widgets.js Corretto se sei accurato Tutto quello che digiti – facile sbagliare No widgets.js
X API v2 + renderer fatto in casa No – solo JSON Totale, costruito da te Costruiscilo Accesso API a pagamento
Servizi di incorporamento di terze parti Il loro proprio markup avvolto Varia A volte Il loro script e tracciamento

La finestra di condivisione di X è l'alternativa più vicina e la fonte dello stesso blockquote – ma la sua personalizzazione si ferma a lingua, nascondere la conversazione, opt-out della personalizzazione e una dimensione clip grezza, e non offre strada verso hide_media, align o un maxwidth preciso. La via API compra controllo totale a prezzi pay-per-use e ti lascia comunque il rendering. I servizi di terze parti frappongono i loro script. Il generatore occupa il giusto mezzo pratico – markup ufficiale, opzioni complete, conferma visiva immediata.

Di fronte alle API ufficiali

Tre superfici ufficiali toccano l'incorporamento dei post, e il generatore è costruito direttamente sulla più benigna.

Capacità Endpoint oEmbed pubblico Finestra publish.x.com X API v2
Scopo URL → HTML di incorporamento, programmatico URL → HTML di incorporamento, a mano Dati completi della piattaforma e pubblicazione
Autenticazione Nessuna Nessuna Chiavi + fatturazione pay-per-use
Costo Gratuito Gratuito Circa $0,005 per lettura di post da febbraio 2026 – nessun tier gratuito
Limiti di frequenza Nessuno documentato Solo limiti pratici Crediti misurati
Restituisce codice pronto da incollare Sì – blockquote + script No – JSON che renderizzi tu
Copertura dei parametri maxwidth, theme, lang, hide_thread, hide_media, align, dnt, omit_script Sottinsieme – vedi Alternative Irrilevante – costruisci tu la vista

Il generatore chiama l'endpoint oEmbed esattamente come documentato – la stessa richiesta che farebbe un plugin CMS, fatta dal tuo browser. Aggiunge ciò che manca all'endpoint – normalizzazione dell'input, la decorazione data-media-max-width della modalità clip, gestione dei tag script e diagnostica. La X API v2 è deliberatamente fuori – da quando il suo cambio tariffario di febbraio 2026 ha eliminato il tier gratuito, leggere post attraverso di essa costa denaro per capacità che l'endpoint gratuito copre già a fini di incorporamento.

Generatore di incorporamento contro parser di URL

Toollect offre due strumenti X che accettano gli stessi link, e la divisione del lavoro merita un'occhiata:

Domanda Parser di URL Questo generatore
Quali tipi di link? Tutti e sette i tipi – post, profili, liste, space, eventi, hashtag, ricerche Solo post
Cosa consegna? URL canoniche pulite, URL iframe del widget, intent di condivisione Codice di incorporamento pronto da incollare
Pulisce i parametri di tracciamento? Sì – ed elenca ogni chiave rimossa Inutile – l'output è codice appena generato
Risolve /i/web/status/…? Sì – lo mappa alla forma canonica con nome utente No – chiede il link completo
Richieste di rete? Zero – tutto parsing locale Una GET oEmbed per generazione, più gli script di X per l'anteprima
Mostra i metadati del post? Solo struttura – nessun contenuto L'anteprima mostra il post realmente renderizzato

Il parser è l'analista; il generatore è il costruttore. Un flusso di pubblicazione usa legittimamente entrambi in ordine – analizzare per identificare e normalizzare a cosa punta un link caotico, poi generare per metterlo sulla pagina. Concordano grammaticalmente per costruzione – un link che il parser accetta come post è un link che il generatore incorpora.

Cosa non fa

I confini, nominati perché allo strumento non sia mai data troppa fiducia:

  • Non incorpora timeline, profili, liste, space né hashtag. Sono altre superfici di X con altro markup; il supporto dei profili dell'endpoint oEmbed produce ancore di timeline, non schede di post, e il generatore le rifiuta. Uno strumento dedicato sarebbe il veicolo onesto se ci fosse domanda.
  • Non risolve i link senza nome utente. /i/web/status/… arriva senza il nome utente che la forma canonica richiede, e lo strumento non indovina. Apri il link, copia l'URL completa.
  • Non risolve gli accorciatori t.co. Un link accorciato nudo non porta identità di post; incolla la destinazione.
  • Non aggira privacy né cancellazione. Account protetti, post eliminati e autori che hanno disabilitato l'incorporamento producono codice corretto che non renderizza nulla. Nessuno strumento può cambiarlo.
  • Non verifica i post prima della richiesta. La validazione è grammaticale. Se il post esiste lo risponde solo l'endpoint – un post non disponibile emerge come richiesta fallita.
  • Non stilizza il widget. Colori, font e chrome dentro la scheda renderizzata sono affari di X. Solo la collocazione (allineamento, larghezza) e la presenza (conversazione, media) sono tue.
  • Non installa il codice. Ciò che copi è ciò che incolli; lo strumento non può entrare nel tuo CMS o page builder.

Risoluzione dei problemi

Problema Causa Soluzione
«Nessun post trovato in questo URL» Link di profilo, intent, ricerca o esterno – o un ID malformato Usa la forma completa nomeutente/status/id; verifica che l'ID abbia 15–19 cifre
«Usa il link completo del post» incollando /i/web/status/… Rotta del client web senza nome utente Apri il link nel browser e copia l'indirizzo completo con il nome utente
«Impossibile raggiungere X» alla generazione Offline, bloccato o l'endpoint ha risposto un errore – compresi post che non esistono più Controlla la connessione; consenti publish.x.com nei blocker; apri il post su x.com per confermarne l'esistenza
«Caricamento di widgets.js di X non riuscito» Ad blocker o estensione per la privacy che blocca platform.x.com Consenti il dominio per questa pagina – e ritesta per il bene dei tuoi visitatori
«L'incorporamento ufficiale non è stato visualizzato» con un link apparentemente valido Post eliminato, account protetto o incorporamento disabilitato dall'autore Verifica su x.com; il permesso di incorporamento è un'impostazione dell'autore, non tua
La scheda Clip rifiuta una larghezza di 400 px Le larghezze dei clip partono da 560 per design Usa la scheda Messaggio per 220–550; i due intervalli servono layout diversi
La mia larghezza digitata è saltata a 550 o 560 I valori fuori intervallo vengono compressi quando il campo perde il focus Intenzionale – X li comprime lato server comunque; digita entro l'intervallo
Funziona nell'anteprima, morto sul mio sito La CSP del sito blocca i domini di X, o il CMS ha sanificato il tag script Aggiungi https://platform.x.com (e https://platform.twitter.com per snippet legacy) a script-src e frame-src; incolla in HTML grezzo
Ho cambiato lingua ma il testo del post è rimasto inglese Per progetto – data-lang localizza il chrome del widget, mai il contenuto Comportamento previsto; il post viene mostrato come è stato scritto

Privacy e trattamento dei dati

Questo strumento è onesto sul suo traffico, maggiore di quello delle sorelle a zero richieste ma comunque diretto verso X.

  • Generare invia l'URL del post a X, una volta per azione. Premere Genera o cambiare qualsiasi opzione fa esattamente una GET HTTPS a publish.x.com/oembed con l'URL canonica del post e le tue opzioni. La richiesta va dal tuo browser all'infrastruttura di X – nessun server Toollect la proxya, la registra o la vede.
  • L'anteprima carica la macchinaria propria di X. Renderizzare la scheda recupera widgets.js da platform.x.com, l'iframe renderizzato dall'infrastruttura di syndication di X e i media dai suoi host di immagini – precisamente il traffico che il codice copiato produrrà sui browser dei tuoi lettori.
  • Do Not Track si propaga. Con l'opzione attiva, il codice generato porta data-dnt="true", il segnale documentato da X per escludere l'incorporamento e le sue visualizzazioni di pagina da suggerimenti e pubblicità personalizzate.
  • Nessun account, nessuno storage, nessuna analytics. Lo strumento non conserva stato tra le visite; chiudere la scheda termina tutto.
  • Pubblicare il codice significa che i tuoi visitatori parlano con X. È la natura dell'incorporamento – vale la pena dirlo chiaramente. Se ti serve un flusso di lavoro X strettamente offline, il parser di URL X (Twitter) di questo sito compie l'intero suo lavoro con zero richieste di rete.

Specifiche tecniche

Dettagli:

  • Endpoint – GET https://publish.x.com/oembed?url={canonical}, senza chiave, risposta JSON, nessun limite di frequenza documentato; parametri maxwidth, theme, lang, hide_thread, hide_media, align, dnt, omit_script
  • Grammatica di input – host x.com / twitter.com con prefissi opzionali www. / mobile. / m.; nome utente [A-Za-z0-9_]{1,15}; ID del post di 15–19 cifre; schema, barra finale, varianti di vista (/photo/1, /video/1, …) e query string tollerati e scartati
  • URL canonica di output – https://x.com/{username}/status/{id}
  • Contratto di larghezza messaggio – 220–550 px inclusi (l'endpoint comprime i valori esterni; storico predefinito 325, predefinito dello strumento 550); larghezza clip 560–1920 px applicata client-side a data-media-max-width perché l'endpoint non può emetterla
  • Lingue – Automatico o una delle 34 localizzazioni del widget X; ogni selezione precisa scrive data-lang, inglese compreso – solo Automatico lo omette
  • Gestione degli script – i tag script del server vengono rimossi; https://platform.x.com/widgets.js caricato una volta per sessione con un timeout di 20 secondi; il watcher di render interroga l'iframe ogni 500 ms fino a 15 secondi, poi riporta
  • Politica di ri-richiesta – ogni cambio di opzione o scheda emette una nuova richiesta oEmbed; le richieste identiche in volo vengono collassate da un guard di occupazione
  • Self-hosting dell'output richiede – script-src e frame-src che consentano https://platform.x.com (più https://platform.twitter.com per snippet legacy) e img-src che consenta https://abs.twimg.com e https://pbs.twimg.com
  • Supporto browser – tutti i browser moderni (clipboard API; runtime ES5 richiesto dal widgets.js stesso)

Caratteristiche

  • Genera il codice di incorporamento ufficiale di X (Twitter) da qualsiasi URL di post con un clic – modalità messaggio e clip in un unico strumento
  • Riproduce le opzioni del publisher di X – tema chiaro/scuro, Automatico più 34 lingue dell'interfaccia, larghezza precisa, allineamento, nascondi conversazione, nascondi media
  • Guarda un'anteprima live renderizzata dal widgets.js ufficiale di X prima di incollare il codice
  • Controlla la larghezza con precisione – 220–550 px per i messaggi, 560–1920 px per i clip tramite data-media-max-width
  • Rispetta i tuoi visitatori – interruttore Do Not Track integrato e un'opzione per omettere tag widgets.js duplicati
  • Generatore gratuito nel browser con diagnostica chiara quando lo script di X è bloccato – senza chiave API, senza registrazione

Domande frequenti

Cos'è un codice di incorporamento X (Twitter)?
È il frammento di HTML che X pubblica per mostrare un post dentro un altro sito web. Il codice è un blockquote con la classe twitter-tweet più un piccolo tag script che carica il widgets.js di X. Quando un visitatore apre la tua pagina, widgets.js trova il blockquote, recupera il post da X e lo sostituisce con la scheda completamente renderizzata con autore, media e pulsanti di azione dentro un iframe.
Qual è la differenza tra l'incorporamento di messaggio e di clip?
Entrambe le modalità incorporano lo stesso post, ma lo ottimizzano per contenuti diversi. Un incorporamento di messaggio mostra la consueta scheda con testo, autore e media, supporta il tema chiaro/scuro e accetta una larghezza tra 220 e 550 px scritta nell'attributo data-width. Un incorporamento di clip dà priorità al player, nasconde i controlli di tema e conversazione perché non si applicano, e porta la sua larghezza fino a 1920 px in un attributo data-media-max-width perché i clip grandi possano espandersi oltre la scheda standard. Cambiare scheda rigenera automaticamente il codice.
Perché il mio incorporamento non si renderizza nell'anteprima?
Lo strumento mostra uno dei due avvisi. «Caricamento di widgets.js di X non riuscito» significa che il browser non è riuscito a scaricare lo script di X, di solito bloccato da un ad blocker o da un'estensione per la privacy. «L'incorporamento ufficiale non è stato visualizzato» significa che widgets.js è girato ma non ha prodotto alcuna scheda – il post potrebbe essere eliminato o pubblicato da un account protetto, l'URL potrebbe essere sbagliato o l'autore ha disabilitato l'incorporamento per quel post. L'anteprima esegue esattamente lo script che eseguirà la tua pagina, quindi coglie questi problemi prima della pubblicazione.
Perché la larghezza del mio messaggio è limitata a 550 px?
Quel limite viene da X. L'endpoint oEmbed ufficiale accetta solo una larghezza massima tra 220 e 550 px per gli incorporamenti di messaggio e taglia silenziosamente i valori fuori intervallo – un valore maggiore produrrebbe comunque una scheda di 550 px. I clip sono diversi – il loro player può espandersi molto oltre, e il generatore scrive quel valore più ampio direttamente nell'attributo data-media-max-width, fino a 1920 px.
Lo strumento richiede una chiave API o carica i miei dati?
Né chiave API né account. Quando premi Genera, il tuo browser invia una sola richiesta HTTPS direttamente all'endpoint oEmbed pubblico di X su publish.x.com – l'URL del post viaggia dal tuo browser a X, mai attraverso un server Toollect. Poi l'anteprima carica il widgets.js di X e l'iframe di incorporamento, esattamente come farà il codice copiato sul tuo sito. Nulla viene salvato e chiudere la scheda non lascia nulla dietro.
In cosa differisce dal parser di URL X (Twitter)?
Il parser smonta un link – tipo, nome utente, ID snowflake, variante di vista – pulisce i suoi parametri di tracciamento e ricostruisce URL puliti. Questo generatore funziona al contrario – trasforma un link di post riconosciuto in codice di incorporamento pronto da incollare. Passa lo stesso post attraverso entrambi e ciascuno dà una risposta diversa per un compito diverso – analisi contro output.
ESC