¿Tienes prisa? Cuenta tus palabras clave en bytes directamente en el navegador: gratis, sin registro, no se sube nada.
Lo que dice Apple (y lo que se observa)
Las propias páginas de Apple no coinciden:
- La referencia de App Store Connect describe así el campo Keywords: «You can provide up to 100 bytes of content.», es decir, en bytes.
- La página Creating Your Product Page habla de 100 caracteres.
- En los foros para desarrolladores, en 2022, un miembro del equipo de Apple probó palabras clave en tailandés a través de la API: 100 caracteres pasaron, 106 fueron rechazados. Y 100 caracteres tailandeses pesan mucho más que 100 bytes.
Así que la documentación de referencia dice bytes, y al menos una observación muestra que se cuentan caracteres. Hasta que Apple lo aclare, tienes que elegir una regla.
Por qué importa la diferencia
En UTF-8, las letras latinas sin acento ocupan un byte, una letra acentuada dos, un carácter japonés o tailandés tres.
| Palabra clave | Caracteres | Bytes |
|---|---|---|
| shopping | 8 | 8 |
| épicerie | 8 | 9 |
| supermarché | 11 | 12 |
| Einkaufsliste | 13 | 13 |
| 買い物リスト | 6 | 18 |
| รายการ | 6 | 18 |
Para el inglés, la cuestión no se plantea. Para el francés o el español, la diferencia es de unos pocos bytes en una lista completa («canción», por ejemplo, tiene 7 caracteres y 8 bytes). Para el japonés o el tailandés, el mismo campo admite tres veces menos texto si cuentas bytes.
Contarlo tú mismo
En una terminal, sobre tu archivo de fastlane ($(cat …) elimina el salto de línea final):
printf '%s' "$(cat fastlane/metadata/fr-FR/keywords.txt)" | wc -c # bytes
printf '%s' "$(cat fastlane/metadata/fr-FR/keywords.txt)" | wc -m # characters
wc -m cuenta caracteres según la configuración regional de tu terminal; con una configuración que no sea UTF-8 devuelve el mismo número que wc -c. En Dart:
import 'dart:convert';
final keywords = 'courses,épicerie,liste,famille,partagée';
print(utf8.encode(keywords).length); // 41 bytes
print(keywords.runes.length); // 39 characters
La regla que aplicamos
Contar bytes. Es lo que dice la documentación de referencia, y es la opción más estricta: un campo que cabe en 100 bytes cabe necesariamente en 100 caracteres, así que nunca será rechazado. LocalePilot la aplica en su pantalla de ficha de App Store, que muestra por ejemplo «94 / 100 bytes» mientras escribes.
En japonés, chino, coreano o tailandés esta regla tiene un coste: puede que dejes espacio sin usar. Si esos mercados te importan, prueba una lista más larga en App Store Connect: rechaza de inmediato un campo demasiado largo, así sabrás qué pasa hoy.
Lo que no depende de la unidad
- Separa con comas, sin espacios alrededor: cada espacio después de una coma gasta un byte.
- No repitas tu nombre ni tu subtítulo. La mayoría de las guías de ASO desaconsejan repetir en las palabras clave lo que ya dicen esos dos campos.
- Hay un archivo por idioma. Con fastlane, cada localización tiene su propio
fastlane/metadata/<locale>/keywords.txt. Traducir la lista en inglés palabra por palabra rara vez te da los términos que la gente escribe de verdad: parte de las búsquedas en el idioma de destino.