By 37Design |

SnapPress 2.0.1 è appena entrato in revisione, e la novità principale non è una nuova funzionalità. È la localizzazione completa dei metadati dell'App Store in nove lingue, con tutta l'idraulica tecnica per mantenerla nel tempo. Questo post racconta la storia dietro a questa release.

Il contesto

SnapPress è stato lanciato a marzo 2026. La promessa era semplice: smettere di sprecare 30 minuti caricando le foto una alla volta su WordPress, e spedire 20 foto nella media library in 10 secondi direttamente dall'iPhone. La release 2.0 di fine aprile ha aggiunto un piano freemium, l'acquisto a vita e una Share Extension più solida. Le vendite erano modeste ma reali, soprattutto blogger WordPress giapponesi che acquistavano direttamente dall'App Store giapponese.

La sorpresa

Sono arrivati due acquisti dall'Australia. Senza pubblicità. Senza articoli. Nessuna persona che conoscevo. I clienti avevano trovato SnapPress da soli tramite la ricerca dell'App Store, su metadati che, lo capisco ora, erano a malapena localizzati.

È stato il momento in cui ho guardato la dashboard di App Store Connect con gli occhi di un esterno. E ho notato qualcosa che ha cambiato la lista delle priorità per il resto della giornata.

Il problema

Il campo sottotitolo dell'App Store, quella riga da 30 caratteri sotto il nome dell'app che compare nei risultati di ricerca e nello sfoglio delle categorie, era vuoto. In ogni mercato. In tutte e nove le lingue per cui l'App Store offre uno slot di localizzazione, incluso inglese e giapponese, i due mercati con più utenti esistenti.

Il sottotitolo è uno dei campi con maggior peso nel ranking di ricerca dell'App Store. Apple gli assegna un peso indicizzabile paragonabile al nome dell'app stessa, ed è il primo elemento di copy di supporto che chi cerca vede prima di toccare l'icona. Lasciarlo vuoto significava che SnapPress stava di fatto rinunciando a 30 caratteri di spazio per parole chiave per ogni mercato, moltiplicato per 9 mercati, su ogni query di ricerca che conta.

Le keyword erano compilate solo parzialmente, e solo in inglese e giapponese, e mancavano termini fondamentali come "bulk", "iPhone" e "blogger". La descrizione esisteva solo in inglese e giapponese. Il testo promozionale era vuoto ovunque. L'unica cosa popolata in modo completo in tutte le lingue era, ironicamente, le note di rilascio impostate in precedenza.

La soluzione

Ho passato un pomeriggio di domenica scrivendo due piccoli toolkit CLI.

Il primo dialoga con la App Store Connect API per leggere lo stato attuale di ogni localizzazione, generare una nuova versione dell'app, inviare il sottotitolo tramite l'endpoint appInfoLocalizations, inviare keyword / descrizione / testo promozionale / what's new / support URL / marketing URL tramite l'endpoint appStoreVersionLocalizations, e allegare una build appena archiviata. L'autenticazione è basata su una API key di App Store Connect, quindi nessun intervento umano nel flusso e nessun prompt di two-factor a metà strada.

Il secondo dialoga con la Apple Search Ads Advanced API. Stesso schema: JWT firmato ES256, OAuth client credentials grant, Bearer token con header X-AP-Context. Le credenziali sono gestite tramite la CLI di 1Password, così nessun segreto finisce mai su disco in chiaro. Il risultato è che "crea una campagna", "elenca le keyword" o "scarica il report di ieri" diventano comandi shell di una sola riga invece di click sulla dashboard.

Tempo totale di esecuzione per pubblicare i nuovi metadati in tutte e 9 le lingue: meno di tre minuti. Inclusi archive del binario e upload della nuova build: circa 10 minuti. L'intera release 2.0.1 è stata assemblata e inviata dalla riga di comando.

Cosa è ora disponibile in 9 lingue

I nuovi sottotitoli, tutti entro il limite di 30 caratteri:

  • English: Bulk Upload to WordPress Media (Caricamento in blocco su WordPress Media)
  • Japanese: WordPressに写真を一括アップロード (Carica foto in blocco su WordPress)
  • Spanish: Sube fotos a WordPress en masa (Carica foto in massa su WordPress)
  • German: Foto-Upload für WordPress (Caricamento foto per WordPress)
  • Portuguese (Brazil): Upload em massa para WordPress (Caricamento di massa su WordPress)
  • French: Photos en masse vers WordPress (Foto in massa verso WordPress)
  • Korean: 워드프레스 사진 일괄 업로드 (Caricamento foto in blocco su WordPress)
  • Italian: Foto in blocco su WordPress (Foto in blocco su WordPress)
  • Traditional Chinese: 批次上傳照片到 WordPress (Carica foto in blocco su WordPress)

Ogni mercato riceve anche una descrizione personalizzata (circa 1.400 caratteri in inglese e nelle lingue europee, naturalmente più compatta in giapponese, coreano e cinese), una stringa di keyword di 100 caratteri ottimizzata per il comportamento di ricerca di quel mercato, un blocco di testo promozionale che fa riferimento al prezzo nella valuta locale, e una riga what's new che annuncia il rollout multilingua.

La lezione

Se sviluppi app per l'App Store e non hai controllato di persona il campo sottotitolo per ogni mercato in cui la tua app è pubblicata, considera questo un promemoria. Verificare richiede 5 minuti, e un sottotitolo vuoto è il pezzo di spazio più economico che Apple ti permette di sprecare. Lo stesso vale per le keyword, il testo promozionale e le note di rilascio dopo ogni release.

L'altra lezione è che App Store Connect e Apple Search Ads hanno entrambi API complete, e una volta sistemata la configurazione di autenticazione sono drasticamente più veloci da operare rispetto alle dashboard web. Se rilasci più di qualche release all'anno, uno script bash di 100 righe che incapsula l'API ti farà risparmiare ore per ogni release, ed eliminerà gli errori lenti-ma-reversibili che si insinuano quando clicchi 27 dropdown a mano.

Cosa viene dopo

La revisione di Apple richiede dalle 24 alle 48 ore. Una volta che la 2.0.1 sarà live, la Fase 1 è una piccola campagna Apple Search Ads in Giappone: 7.500 yen di budget mensile, target di costo per installazione intorno a 250 yen, dieci keyword giapponesi a partire da "ワードプレス アプリ" e "wordpress 写真 アップロード". L'obiettivo non è la scala. L'obiettivo è ottenere dati reali di LTV e ROAS per utente acquisito, in modo che la prossima decisione di budget sia informata da numeri invece che da ottimismo.

Se quei numeri funzionano, la stessa pipeline automatizzata estende la campagna agli Stati Uniti, e poi ai prossimi due o tre mercati dove il traffico ASO sembra promettente. Se i numeri non funzionano, il budget si mette in pausa, gli screenshot e il pricing ricevono un'occhiata più attenta, e l'esperimento prosegue con input più economici.

La parte divertente di gestire un piccolo prodotto da soli è che puoi spedire una cosa del genere in un pomeriggio. La parte noiosa, e quella che conta davvero, è ciò che succede nei 60 giorni successivi, quando i dati cominciano ad arrivare.

Scarica SnapPress dall'App Store →