{"id":34549475,"url":"https://github.com/686f6c61/x-twitter-community-analysis","last_synced_at":"2026-04-18T05:03:40.628Z","repository":{"id":327797504,"uuid":"1107183414","full_name":"686f6c61/x-twitter-community-analysis","owner":"686f6c61","description":"Análisis de comunidades en X.com (Twitter) mediante grafos interactivos.","archived":false,"fork":false,"pushed_at":"2026-02-12T19:24:54.000Z","size":452,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-12T21:39:38.266Z","etag":null,"topics":["gephi-visualizations","graph","python","twitter","xcom"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/686f6c61.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-11-30T18:27:35.000Z","updated_at":"2026-02-12T18:51:09.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/686f6c61/x-twitter-community-analysis","commit_stats":null,"previous_names":["686f6c61/x-twitter-community-analysis"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/686f6c61/x-twitter-community-analysis","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fx-twitter-community-analysis","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fx-twitter-community-analysis/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fx-twitter-community-analysis/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fx-twitter-community-analysis/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/686f6c61","download_url":"https://codeload.github.com/686f6c61/x-twitter-community-analysis/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/686f6c61%2Fx-twitter-community-analysis/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31957158,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-18T00:39:45.007Z","status":"online","status_checked_at":"2026-04-18T02:00:07.018Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gephi-visualizations","graph","python","twitter","xcom"],"created_at":"2025-12-24T07:45:44.455Z","updated_at":"2026-04-18T05:03:40.621Z","avatar_url":"https://github.com/686f6c61.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ANÁLISIS DE COMUNIDADES EN X.COM\n\n**Versión Beta 0.6.8**\n\nSistema profesional de análisis de redes sociales para X.com (Twitter) mediante grafos interactivos. Procesa datos scrapeados para detectar comunidades, calcular métricas de red avanzadas, identificar influencers, detectar bots y visualizar interacciones con optimizaciones de rendimiento.\n\n**Público objetivo:** Investigadores SAR (Social Network Analysis and Research), ingenieros de software, analistas de datos, científicos sociales.\n\n---\n\n## TABLA DE CONTENIDOS\n\n- [Requisitos Previos](#requisitos-previos)\n- [Arquitectura del Proyecto](#arquitectura-del-proyecto)\n- [Instalación](#instalación)\n- [Uso](#uso)\n  - [Método Recomendado: Navegador](#método-recomendado-navegador)\n  - [Python CLI: Análisis Individual](#python-cli-análisis-individual)\n  - [Python CLI: Análisis Batch](#python-cli-análisis-batch)\n- [Características Principales](#características-principales)\n- [Métricas Calculadas](#métricas-calculadas)\n- [Interfaz Web](#interfaz-web)\n- [Exportación de Datos](#exportación-de-datos)\n- [Desarrollo y Personalización](#desarrollo-y-personalización)\n- [Troubleshooting](#troubleshooting)\n- [Control de Versiones](#control-de-versiones)\n- [Licencia](#licencia)\n\n---\n\n## REQUISITOS PREVIOS\n\n### OBTENER DATOS DE X.COM\n\n#### 🎯 Archivos de Ejemplo Incluidos\n\nEl repositorio incluye archivos JSON de ejemplo listos para usar en la carpeta **`example_data/`**:\n- `example_betis.json` - Conversaciones sobre Real Betis Balompié\n- `example_sevilla.json` - Conversaciones sobre Sevilla FC\n\nPuedes usar estos archivos para probar inmediatamente todas las funcionalidades.\n\n#### 📥 Obtener tus propios datos\n\nPara exportar tus propias conversaciones de X.com, usa nuestro scraper:\n\n**🔗 [x-twitter-scraper](https://github.com/686f6c61/x-twitter-scraper)**\n\nEl scraper genera el formato JSON compatible con este sistema de análisis.\n\n### DEPENDENCIAS\n\n**Python 3.7+** (opcional, solo para CLI)\n- networkx \u003e= 3.0\n- typing-extensions \u003e= 4.0\n\n**Navegador moderno** (recomendado)\n- Chrome/Firefox/Edge con soporte ES6 modules\n- JavaScript habilitado\n\n---\n\n## ARQUITECTURA DEL PROYECTO\n\n```\ngrafos/\n├── data/                          # Datasets de entrada\n│   └── tweets.json                # JSON de tweets scrapeados\n│\n├── example_data/                  # 📁 Archivos de ejemplo\n│   ├── README.md                  # Instrucciones de uso\n│   ├── example_betis.json         # Datos de ejemplo Real Betis\n│   └── example_sevilla.json       # Datos de ejemplo Sevilla FC\n│\n├── web/                           # Aplicación web (frontend)\n│   ├── index.html                 # Aplicación principal\n│   ├── style.css                  # Estilos globales\n│   ├── app.js                     # Entry point (294 líneas)\n│   ├── graph-worker.js            # Web Worker para procesamiento\n│   │\n│   ├── core/                      # Núcleo del sistema\n│   │   ├── state.js               # Estado global y gestión\n│   │   ├── utils.js               # Utilidades generales\n│   │   └── init.js                # Inicialización\n│   │\n│   ├── ui/                        # Interfaz de usuario\n│   │   ├── tabs.js                # Sistema de pestañas\n│   │   ├── modals.js              # Modales de ayuda\n│   │   ├── overlay.js             # Overlays y paneles\n│   │   └── footer.js              # Footer con changelog y disclaimer\n│   │\n│   ├── data/                      # Gestión de datos\n│   │   ├── loader.js              # Carga de archivos\n│   │   └── processor.js           # Procesamiento de tweets\n│   │\n│   ├── features/                  # Funcionalidades específicas\n│   │   ├── influencers/           # Sistema de influencers\n│   │   │   ├── table.js           # Tabla de influencers\n│   │   │   ├── profile.js         # Perfiles detallados\n│   │   │   ├── filters.js         # Filtros de búsqueda\n│   │   │   └── chart.js           # Gráficos de dispersión\n│   │   │\n│   │   ├── bots/                  # Detección de bots\n│   │   │   ├── table.js           # Tabla de bots\n│   │   │   ├── profile.js         # Perfiles de bots\n│   │   │   ├── filters.js         # Filtros de bots\n│   │   │   └── chart.js           # Gráficos de bots\n│   │   │\n│   │   └── statistics/            # Estadísticas generales\n│   │       └── index.js           # Renderizado de stats\n│   │\n│   ├── visualization/             # Visualización de grafos\n│   │   ├── graphs/                # Renderizado de grafos\n│   │   │   ├── renderer.js        # Inicialización de vis.js\n│   │   │   ├── controls.js        # Controles interactivos\n│   │   │   ├── styles.js          # Estilos de nodos/aristas\n│   │   │   └── events.js          # Eventos de interacción\n│   │   │\n│   │   └── word-cloud.js          # Nube de palabras\n│   │\n│   ├── utils/                     # Utilidades auxiliares\n│   │   ├── export.js              # Exportación ZIP/GraphML/CSV\n│   │   └── performance.js         # Caché y optimización\n│   │\n│   └── assets/\n│       └── favicon.ico\n│\n├── src/                           # Backend Python (CLI)\n│   ├── main.py                    # CLI principal - análisis individual\n│   ├── batch_analyze.py           # CLI batch - análisis múltiples\n│   │\n│   ├── core/                      # Núcleo del sistema\n│   │   ├── config.py              # Configuración y constantes\n│   │   └── types.py               # Type hints y dataclasses\n│   │\n│   ├── io/                        # Entrada/Salida\n│   │   ├── loaders.py             # Carga de tweets y grafos\n│   │   └── exporters.py           # Exportación GraphML/JSON\n│   │\n│   ├── processors/                # Procesamiento de datos\n│   │   ├── tweet_extractor.py     # Extracción de datos de tweets\n│   │   ├── graph_builder.py       # Construcción de grafos\n│   │   └── statistics.py          # Cálculo de estadísticas\n│   │\n│   ├── analysis/                  # Análisis de grafos\n│   │   ├── centrality.py          # Métricas de centralidad\n│   │   ├── communities.py         # Detección de comunidades\n│   │   ├── metrics_advanced.py    # Métricas avanzadas\n│   │   └── enrichment.py          # Enriquecimiento de nodos\n│   │\n│   └── batch/                     # Procesamiento múltiple\n│       └── processor.py           # Análisis de múltiples JSONs\n│\n├── output/                        # Resultados generados (Python CLI)\n│   ├── mentions_graph.graphml     # Grafo de menciones (Gephi/Cytoscape)\n│   ├── cohashtag_graph.graphml    # Grafo de co-hashtags\n│   ├── graph_mentions.json        # Grafo para visualización web\n│   ├── graph_cohashtags.json      # Grafo para visualización web\n│   └── statistics.json            # Estadísticas generales\n│\n├── logs/                          # Logs del servidor\n├── start_server.py                # Servidor web Python\n├── requirements.txt               # Dependencias Python\n└── README.md\n```\n\n**Total archivos JavaScript:** 30 módulos (app.js reducido de 3140 → 294 líneas, reducción del 90%)\n\n**Total módulos Python:** 20 archivos organizados (de 3 scripts monolíticos)\n\n---\n\n## INSTALACIÓN\n\n### MÉTODO 1: SOLO NAVEGADOR (RECOMENDADO)\n\nNo requiere instalación Python. Procesa datos directamente en el navegador.\n\n```bash\n# Iniciar servidor web\npython3 start_server.py\n\n# O usar script helper\n./restart_server.sh\n```\n\nAccede a: **http://localhost:8000**\n\n### MÉTODO 2: CON PYTHON CLI (ANÁLISIS AVANZADO)\n\nPara análisis batch de múltiples datasets o integración en pipelines.\n\n```bash\n# Crear entorno virtual\npython3 -m venv venv\nsource venv/bin/activate  # Linux/Mac\n# venv\\Scripts\\activate   # Windows\n\n# Instalar dependencias\npip install -r requirements.txt\n```\n\n---\n\n## USO\n\n### MÉTODO RECOMENDADO: NAVEGADOR\n\nProcesamiento completo en el navegador sin necesidad de Python.\n\n1. **Iniciar servidor:**\n```bash\npython3 start_server.py\n```\n\n2. **Abrir navegador:** http://localhost:8000\n\n3. **Cargar archivo:** Seleccionar `tweets.json` con el botón de carga\n\n4. **Procesar:** Click en \"Procesar y Visualizar\"\n\n5. **Exportar (opcional):** Click en \"Exportar ZIP\" para descargar todos los archivos generados\n\n### PYTHON CLI: ANÁLISIS INDIVIDUAL\n\nAnálisis de un único dataset con salida a disco.\n\n```bash\n# Básico\npython src/main.py data/tweets.json\n\n# Con directorio de salida personalizado\npython src/main.py data/tweets.json --output output/elecciones/\n\n# Sin métricas avanzadas (más rápido)\npython src/main.py data/tweets.json --no-advanced\n\n# Modo verbose\npython src/main.py data/tweets.json -v\n```\n\n**Salida generada:**\n```\noutput/\n├── mentions_graph.graphml      # Grafo de menciones (Gephi/Cytoscape)\n├── cohashtag_graph.graphml     # Grafo de co-hashtags\n├── graph_mentions.json         # Grafo para web\n├── graph_cohashtags.json       # Grafo para web\n└── statistics.json             # Estadísticas generales\n```\n\n### PYTHON CLI: ANÁLISIS BATCH\n\nProcesamiento de múltiples datasets simultáneamente con comparación opcional.\n\n```bash\n# Procesar todos los JSONs en data/\npython src/batch_analyze.py data/*.json\n\n# Con comparación entre datasets\npython src/batch_analyze.py data/*.json --compare\n\n# Salida personalizada\npython src/batch_analyze.py data/*.json --output output/batch/ --compare\n\n# Sin métricas avanzadas (más rápido)\npython src/batch_analyze.py data/*.json --no-advanced\n```\n\n**Ejemplo de uso real:**\n```bash\n# Comparar elecciones de diferentes años\npython src/batch_analyze.py \\\n    data/elecciones_2020.json \\\n    data/elecciones_2024.json \\\n    --compare \\\n    --output output/elecciones_comparacion/\n```\n\n**Uso como librería Python:**\n```python\nfrom src.main import analyze_dataset\nfrom src.batch.processor import process_multiple_datasets, compare_datasets\n\n# Análisis individual\nresult = analyze_dataset('data/tweets.json', output_dir='output/custom/')\nprint(result['mentions_json'])\n\n# Análisis batch\nresults = process_multiple_datasets([\n    'data/elecciones.json',\n    'data/debate.json'\n])\n\n# Comparación\ncomparison = compare_datasets(results)\nprint(comparison['summary'])\n```\n\n---\n\n## CARACTERÍSTICAS PRINCIPALES\n\n### PROCESAMIENTO DE DATOS\n\n- **Procesamiento en navegador:** Web Workers para cálculo paralelo sin bloqueo de UI\n- **Sistema de caché:** localStorage con TTL de 7 días para cargas instantáneas\n- **Detección de comunidades:** Algoritmo de Louvain para grafos de menciones y co-hashtags\n- **Métricas de red:** Centralidad (degree, betweenness, closeness, eigenvector, PageRank), clustering, k-core\n- **Análisis temporal:** Ventanas configurables para detección de Rising/Falling Stars\n\n### VISUALIZACIÓN INTERACTIVA\n\n- **Grafos a pantalla completa:** Visualización con vis.js\n- **4 dimensiones visuales:**\n  - Color: Comunidad detectada\n  - Tamaño: Número de tweets\n  - Grosor del borde: Clustering Coefficient (cohesión local)\n  - Opacidad/Brillo: Closeness Centrality (capacidad de difusión)\n- **Controles avanzados:**\n  - Búsqueda de usuarios\n  - Filtro por peso de aristas\n  - Toggle de etiquetas\n  - Configuración de métricas visuales\n  - Exportación de imagen PNG\n- **Nube de palabras:** Visualización de términos más frecuentes\n\n### DETECCIÓN DE INFLUENCERS\n\nSistema multi-métrica para identificación de influencers con puntuación compuesta (0-100):\n\n- **Influencer Score:** Combina PageRank (30%), Eigenvector (20%), Betweenness (15%), Degree (10%), Engagement (15%), Engagement Rate (10%)\n- **Categorización:** Mega (80-100), Macro (60-80), Micro (40-60), Nano (20-40)\n- **Tabla Top 20:** Ranking con filtros por categoría y comunidad\n- **Gráfico de dispersión:** Score vs Engagement\n- **Perfiles detallados:** Panel lateral con todas las métricas y tweet destacado\n\n### DETECCIÓN DE BOTS\n\nSistema de puntuación multi-señal para identificación de cuentas automatizadas:\n\n- **Bot Score (0-100):** Basado en patrones temporales, contenido repetitivo, interacciones y perfil\n- **Categorización:** Humano (0-30), Sospechoso (30-60), Bot Probable (60-80), Bot Confirmado (80-100)\n- **Ranking completo:** Ordenado por Bot Score con filtros\n- **Gráfico de dispersión:** Bot Score vs Actividad\n- **Análisis detallado:** Desglose de señales por cuenta\n\n**Disclaimer:** El sistema puede generar falsos positivos (usuarios legítimos con patrones automatizados) y falsos negativos. Ver pestaña \"Disclaimer\" en la aplicación para más información.\n\n### NETWORK MOTIFS\n\nAnálisis de patrones estructurales en las redes sociales:\n\n- **Triángulos:** Grupos cohesivos de 3 usuarios mutuamente conectados (clustering local)\n- **Estrellas:** Hubs centralizados con estructura hub-and-spoke\n- **Cadenas:** Flujos lineales de información a través de intermediarios\n- **Cohesión de red:** Métrica compuesta 0-100% que combina triángulos, clustering y densidad\n- **Selector de grafos:** Análisis en Menciones y Co-hashtags\n- **Exportación:** CSV/JSON individual y completo\n- **Documentación académica:** Fundamentos teóricos y referencias a papers clave\n\n### ESTADÍSTICAS GENERALES\n\n- Top 10 usuarios por actividad (tweets)\n- Top 10 usuarios por engagement (likes + views + replies)\n- Top hashtags más usados\n- Actividad temporal (timeline)\n- Métricas de red (densidad, modularidad, assortativity)\n- Distribución de comunidades con detalles interactivos\n\n---\n\n## MÉTRICAS CALCULADAS\n\n### CENTRALIDAD\n\n**DEGREE CENTRALITY**\nNúmero de conexiones directas de un nodo normalizado. Identifica usuarios altamente conectados.\n\n**BETWEENNESS CENTRALITY**\nMide cuántas rutas más cortas entre pares de nodos pasan por un nodo dado. Identifica conectores clave entre comunidades.\n\n**CLOSENESS CENTRALITY**\nInversa de la distancia promedio a todos los demás nodos. Valores altos indican capacidad de alcanzar rápidamente a otros usuarios (difusión de información).\n\n**EIGENVECTOR CENTRALITY**\nMide influencia basada en la importancia de las conexiones. Un nodo es importante si está conectado a otros nodos importantes.\n\n**PAGERANK**\nAlgoritmo de Google adaptado a grafos sociales. Mide influencia ponderada por la importancia de quienes te mencionan.\n\n### COHESIÓN\n\n**CLUSTERING COEFFICIENT**\nMide qué tan conectados están los vecinos de un nodo entre sí. Valores altos indican grupos cohesivos o \"cliques\".\n\n**K-CORE DECOMPOSITION**\nIdentifica el núcleo denso del grafo. Separa usuarios centrales (k-core alto) de periféricos (k-core bajo).\n\n**MODULARIDAD**\nCalidad de la división en comunidades. Valores altos (\u003e 0.3) indican comunidades bien definidas.\n\n**ASSORTATIVITY**\nMide si nodos similares tienden a conectarse. Valores positivos = homofilia (similar con similar), negativos = patrón hub-spoke.\n\n### INFLUENCIA COMPUESTA\n\n**INFLUENCER SCORE (0-100)**\n\nMétrica compuesta que combina múltiples indicadores de influencia mediante sistema de pesos basado en investigación:\n\n```\nScore = (PageRank × 30%) + (Eigenvector × 20%) + (Betweenness × 15%) +\n        (Degree × 10%) + (Engagement × 15%) + (Engagement Rate × 10%)\n```\n\n**Componentes:**\n- **PageRank (30%):** Influencia algorítmica basada en conexiones de calidad\n- **Eigenvector Centrality (20%):** Importancia por conectar con nodos importantes\n- **Betweenness Centrality (15%):** Capacidad de actuar como puente entre comunidades\n- **Degree Centrality (10%):** Número relativo de conexiones directas\n- **Engagement (15%):** Interacción total recibida (likes + views + replies)\n- **Engagement Rate (10%):** Eficiencia de engagement (engagement/tweets)\n\n**Categorías:**\n- **Mega Influencer (80-100):** Máxima influencia, líderes de opinión clave\n- **Macro Influencer (60-80):** Alta influencia, voces importantes en la comunidad\n- **Micro Influencer (40-60):** Influencia moderada, conectores relevantes\n- **Nano Influencer (20-40):** Influencia emergente o especializada\n\n**Interpretación:** Un score alto indica que el usuario combina múltiples factores de influencia: no solo tiene muchas conexiones, sino que son conexiones de calidad, actúa como puente entre grupos, y genera alto engagement. Esta métrica es más robusta que usar un solo indicador.\n\n---\n\n## INTERFAZ WEB\n\n### PESTAÑAS PRINCIPALES\n\n**GRAFO DE MENCIONES**\nVisualiza las menciones dirigidas entre usuarios (A → B = \"A menciona a B\").\n\n- **Nodos:** Color por comunidad, tamaño por tweets, grosor del borde por clustering, brillo por closeness\n- **Aristas:** Grosor indica frecuencia de menciones\n- **Interacción:** Click en nodo para ver información detallada y tweet destacado\n- **Controles:** Búsqueda, filtro por peso, toggle de etiquetas, configuración de métricas visuales\n\n**GRAFO DE CO-HASHTAGS**\nVisualiza usuarios que comparten hashtags similares (aristas no dirigidas).\n\n- **Nodos:** Mismo sistema de visualización multi-dimensional\n- **Aristas:** Grosor indica cantidad de hashtags compartidos\n- **Interacción:** Mismos controles que grafo de menciones\n\n**INFLUENCERS**\nSistema completo de detección y análisis de influencers.\n\n- **Tabla Top 20:** Ranking con filtros por categoría y comunidad\n- **Gráfico de dispersión:** Score vs Engagement coloreado por categoría\n- **Panel de perfil:** Click en influencer para ver detalles completos con todas las métricas y tweet destacado\n\n**BOTS**\nDetección de cuentas automatizadas con análisis multi-señal.\n\n- **Tabla de bots:** Ordenado por Bot Score con filtros\n- **Gráfico de dispersión:** Bot Score vs Actividad\n- **Panel de perfil:** Desglose de señales por cuenta\n\n**ESTADÍSTICAS**\nRankings, métricas de red y distribución de comunidades.\n\n- Top 10 por actividad y engagement\n- Top hashtags\n- Timeline de actividad\n- Métricas de red (densidad, modularidad, assortativity)\n- Distribución de comunidades con modal de detalles\n\n### CONTROLES INTERACTIVOS\n\n- **Búsqueda:** Encuentra usuarios por nombre (resalta en grafo)\n- **Peso mínimo:** Filtra conexiones débiles (tooltip explicativo disponible)\n- **Mostrar etiquetas:** Toggle de nombres de usuario en nodos\n- **Exportar imagen:** Descarga el grafo como PNG\n- **Resetear vista:** Vuelve al zoom inicial\n- **⚙ Avanzado:** Configura qué métricas visualizar (grosor del borde, opacidad/brillo)\n\n---\n\n## EXPORTACIÓN DE DATOS\n\n### DESDE NAVEGADOR\n\nClick en \"Exportar ZIP\" para descargar archivo comprimido con:\n\n```\nexport_[timestamp].zip\n├── mentions_graph.graphml       # Grafo de menciones (Gephi/Cytoscape)\n├── cohashtag_graph.graphml      # Grafo de co-hashtags (Gephi/Cytoscape)\n├── graph_mentions.json          # Grafo para visualización web\n├── graph_cohashtags.json        # Grafo para visualización web\n├── statistics.json              # Estadísticas generales\n├── influencers.json             # Ranking completo de influencers\n├── influencers.csv              # Influencers (Excel/Google Sheets)\n├── bots.json                    # Detección de bots\n├── bots.csv                     # Bots (Excel/Google Sheets)\n├── communities.json             # Comunidades detectadas\n├── communities.csv              # Comunidades (Excel/Google Sheets)\n├── word_frequencies.json        # Términos frecuentes\n└── README.txt                   # Documentación de archivos\n```\n\n**GraphML** es un formato XML estándar para grafos que puede ser importado en herramientas de análisis de redes como [Gephi](https://gephi.org/) o [Cytoscape](https://cytoscape.org/).\n\n### DESDE PYTHON CLI\n\nLos archivos se generan automáticamente en el directorio especificado con `--output` (por defecto `output/`).\n\n---\n\n## DESARROLLO Y PERSONALIZACIÓN\n\n### MODIFICAR DATOS\n\nReemplaza `data/tweets.json` con tu propio archivo y vuelve a procesar.\n\n### AJUSTAR PARÁMETROS PYTHON\n\nEdita `src/core/config.py` para:\n- Cambiar límites de rankings (TOP_LIMIT)\n- Ajustar configuración de algoritmos (LOUVAIN_CONFIG, PAGERANK_CONFIG)\n- Modificar directorios de entrada/salida\n\n### PERSONALIZAR VISUALIZACIÓN\n\n**Colores de comunidades:** Edita `web/core/state.js` (variable `COMMUNITY_COLORS`)\n\n**Física del grafo:** Modifica opciones de vis.js en `web/visualization/graphs/renderer.js`\n\n**Tooltips y ayuda:** Edita textos en modales desde `web/ui/modals.js`\n\n**Footer y changelog:** Actualiza `web/ui/footer.js` para modificar historial de versiones\n\n### AGREGAR NUEVAS MÉTRICAS\n\n**Python:**\n1. Implementar función en `src/analysis/centrality.py` o `src/analysis/metrics_advanced.py`\n2. Llamar desde `src/main.py` en el pipeline de análisis\n3. Exportar en `src/io/exporters.py`\n\n**JavaScript:**\n1. Agregar cálculo en `web/graph-worker.js` (para procesamiento paralelo)\n2. Actualizar visualización en `web/visualization/graphs/styles.js`\n3. Agregar opción en modal avanzado (`web/ui/modals.js`)\n\n---\n\n## TROUBLESHOOTING\n\n### ERROR: \"No module named 'networkx'\"\n\n```bash\npip install -r requirements.txt\n```\n\n### ERROR: \"File not found: data/tweets.json\"\n\nAsegúrate de que el archivo JSON esté en `data/tweets.json` o especifica la ruta correcta.\n\n### LA VISUALIZACIÓN NO CARGA\n\nSi usas Python CLI, verifica que ejecutaste `python src/main.py` antes de abrir el navegador.\n\nSi usas el navegador, revisa la consola del navegador (F12) para errores JavaScript.\n\n### EL GRAFO SE VE VACÍO\n\nAlgunos grafos pueden tener pocos nodos conectados. Ajusta el \"peso mínimo\" a 1 para ver todas las conexiones.\n\n### ERROR: \"ModuleNotFoundError\" EN PYTHON\n\nAsegúrate de ejecutar desde la raíz del proyecto:\n\n```bash\ncd /home/r/Escritorio/grafos\npython src/main.py data/tweets.json\n```\n\n### EL BOTÓN DE EXPORTAR NO APARECE\n\nRecarga la página. El botón se muestra automáticamente después de procesar datos.\n\n---\n\n## CONTROL DE VERSIONES\n\n### BETA 0.6.8 (2025-10-07) - Network Motifs\n\n- **Network Motifs:** Análisis de patrones estructurales (triángulos, estrellas, cadenas)\n- **Métrica de cohesión:** Indicador compuesto 0-100% de unión de red\n- **Selector de grafos:** Cambio dinámico entre Menciones y Co-hashtags en análisis de patrones\n- **Modales interactivos:** Click en motifs para ver listado completo de usuarios\n- **Exportación motifs:** CSV/JSON individual y completo por tipo de patrón\n- **Documentación académica:** Referencias a papers clave (Milo 2002, Newman 2003, Granovetter 1973)\n- **Sistema de caché v0.5.13:** Invalidación automática al actualizar código\n- **Diseño profesional:** Botones negros, UI mejorada en modales\n\n### BETA 0.6.6 (2025-10-06) - Exportación Avanzada\n\n- **PDF Report:** Informe completo con visualizaciones capturadas\n- **Excel XLSX:** 4 hojas (Nodos, Aristas, Métricas, Comunidades)\n- **GraphML mejorado:** 21 atributos por nodo para Gephi/Cytoscape\n- **Tab Exportar:** Selección granular de 16 formatos diferentes\n- **Búsqueda global:** Buscador universal en header\n\n### BETA 0.6.5 (2025-10-06)\n\n- **Refactorización JavaScript:** app.js reducido de 3140 a 294 líneas (reducción del 90%)\n- **Arquitectura modular:** 30 módulos organizados (core, ui, data, features, visualization, utils)\n- **Refactorización Python:** 3 scripts monolíticos transformados en 20 módulos organizados\n- **CLI moderno:** Soporte para análisis de múltiples datasets y comparación entre ellos\n- **Type hints completos:** Anotaciones de tipo en todo el código Python\n- **Correcciones:** Fix export.js como módulo ES6, graphData undefined, orden de carga\n- **Footer:** Añadido con enlaces, versiones y descargo de responsabilidad\n- **UX/UI:** Breadcrumbs, tooltips mejorados con Tippy.js, responsive para tablets\n\n### V0.5.12 (OCTUBRE 2025)\n\n- **Refactorización inicial:** Separación de responsabilidades en múltiples módulos\n- **Módulos creados:** 21 archivos JavaScript con estructura organizada\n- **Event-driven architecture:** CustomEvents para desacoplamiento entre componentes\n- **Overlay fix:** Corrección de z-index y gestión de cierre de paneles\n- **Documentación:** ARCHITECTURE.md con estructura del proyecto\n\n### V0.5\n\n- **Análisis Temporal de Influencia BETA:** Ventanas configurables para análisis dinámico\n- **Nube de Palabras:** Integrada en tab Estadísticas\n- **Export ampliado:** Incluye temporal_analysis y word_frequencies\n- **Rising/Falling Stars:** Identificación de usuarios con cambio de influencia\n\n### V0.4\n\n- **Detección de comunidades:** Algoritmo Union-Find implementado\n- **Modal de comunidades:** Exploración interactiva con estadísticas detalladas\n- **Export ZIP ampliado:** 12 archivos incluyendo communities.json y CSV\n- **Panel Avanzado:** Radio buttons descriptivos rediseñados\n- **Detección de bots BETA:** Mejoras en algoritmo multi-señal\n- **Branding:** GRAPHS - 686f6c61\n- **UX:** Botones blanco/negro consistentes\n\n### V0.3\n\n- **Sistema de influencers:** Detección completa con categorización\n- **UX/UI mejorada:** Tooltips, popups y ayuda contextual\n- **Exportación ampliada:** Influencers en JSON y CSV\n\n### V0.2\n\n- **Métricas avanzadas:** Cálculo en navegador con optimizaciones\n- **Web Workers:** Procesamiento paralelo sin bloqueo de UI\n- **Sistema de caché:** localStorage para datos procesados\n- **Exportación ZIP:** GraphML para Gephi y Cytoscape\n\n### V0.1\n\n- **Análisis básico:** Detección de comunidades con algoritmo de Louvain\n- **Visualización interactiva:** Grafos con vis.js\n- **Métricas fundamentales:** PageRank, betweenness, degree centrality\n\n---\n\n## TECNOLOGÍAS UTILIZADAS\n\n**Backend:** Python 3.7+, NetworkX\n\n**Frontend:** HTML, CSS, JavaScript (ES6 modules)\n\n**Visualización:** vis.js (grafos), Chart.js (estadísticas), wordcloud2.js (nube de palabras)\n\n**Algoritmos:** Louvain (comunidades), PageRank, métricas de centralidad, k-core, clustering\n\n**Optimización:** Web Workers API, localStorage API\n\n**Formatos:** GraphML (estándar XML para grafos), JSON, CSV\n\n---\n\n## DESCARGO DE RESPONSABILIDAD\n\nEsta herramienta está diseñada exclusivamente para investigación académica, análisis de tendencias y detección de comunidades. Los resultados son aproximaciones algorítmicas y heurísticas que **no constituyen verdades absolutas**.\n\n**El sistema de detección de bots puede generar falsos positivos y falsos negativos.** No utilizar para acoso, difamación, toma de decisiones automatizadas que afecten a personas, violación de privacidad o discriminación.\n\nTodos los análisis se realizan localmente en el navegador. Los datos no se envían a servidores externos.\n\nVer modal \"Disclaimer\" en la aplicación para información completa sobre uso responsable, limitaciones y prohibiciones.\n\n---\n\n## AUTOR\n\n**686f6c61**\n\n- GitHub: [github.com/686f6c61](https://github.com/686f6c61)\n- X.com: [@hex686f6c61](https://x.com/hex686f6c61)\n\n---\n\n## LICENCIA\n\nMIT License - Este proyecto es de código abierto y está disponible bajo la licencia MIT.\n\nSoftware distribuido \"tal cual\", sin garantías de ningún tipo. El autor no se hace responsable de uso indebido, inexactitudes en análisis, daños derivados del uso del software, o incumplimiento de leyes o regulaciones por parte del usuario.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F686f6c61%2Fx-twitter-community-analysis","html_url":"https://awesome.ecosyste.ms/projects/github.com%2F686f6c61%2Fx-twitter-community-analysis","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2F686f6c61%2Fx-twitter-community-analysis/lists"}