←

Validacion de longitud para posts de X: 280 chars max con warning

Contexto

Al crear un tool para generar drafts de posts para X (Twitter), necesitaba validar que el texto no exceda 280 caracteres antes de que el usuario lo copie y pegue.

Lo que aprendi

La validacion mas simple posible: len() + un warning descriptivo.

def generate_x_post(repo, description, link):
    # Generar post desde template
    post = f"{description}\n\n{link}\n\n#OpenSource #DevLife"

    # Validar longitud
    if len(post) > 280:
        print(f"WARNING: Post is {len(post)} chars (max 280). Trim before posting.")

    return post

El output completo del tool

$ python social_post.py --platform x \
    --repo "claude-agent-patterns" \
    --description "8 patterns para agentes IA autonomos" \
    --link "https://github.com/user/repo"

--- DRAFT ---
8 patterns para agentes IA autonomos

https://github.com/user/repo

#OpenSource #DevLife
--- END ---

Length: 89/280 chars

Por que len() y no una regex

X cuenta caracteres Unicode, no bytes. len() en Python 3 cuenta code points, que es suficientemente preciso para la mayoria de posts. Las excepciones:

Contenidolen()X cuenta
URLslargo real23 chars (t.co shortener)
Emojis simples11
Emojis compuestos1-71
CJK caracteres11

Para drafts rapidos, len() con warning es suficiente. Si necesitas precision exacta, X tiene una libreria oficial: twitter-text-python.

Pattern reutilizable

Este patron de "genera + valida + advierte" aplica a cualquier output con limites:

  • SMS: 160 chars
  • Meta descriptions: ~155 chars
  • Git commit first line: ~72 chars
  • Slack messages: 40,000 chars

Referencia