https://github.com/8infinitecloud/notion-api-integration-github
[PREVIEW] Sincroniza repositorios de GitHub con Notion: estrellas, issues y actividad.
https://github.com/8infinitecloud/notion-api-integration-github
github notion
Last synced: about 2 months ago
JSON representation
[PREVIEW] Sincroniza repositorios de GitHub con Notion: estrellas, issues y actividad.
- Host: GitHub
- URL: https://github.com/8infinitecloud/notion-api-integration-github
- Owner: 8infinitecloud
- License: mit
- Created: 2025-09-09T03:42:24.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-09T04:35:27.000Z (10 months ago)
- Last Synced: 2025-10-05T13:51:30.307Z (9 months ago)
- Topics: github, notion
- Language: JavaScript
- Homepage:
- Size: 1.63 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# GitHub to Notion Sync
Sincroniza automáticamente tus repositorios de GitHub con una base de datos de Notion, generando insights y métricas útiles.
## 🚀 Características
- Sincronización automática de repositorios públicos y privados
- Extracción de métricas: estrellas, forks, issues, lenguajes
- Análisis de insights: actividad reciente, estadísticas de lenguajes
- Integración completa con Notion para visualización y reportes
## 📋 Requisitos
- Node.js 16+
- Cuenta de GitHub
- Workspace de Notion
- Tokens de acceso para ambas plataformas
## ⚡ Instalación
1. **Clona el repositorio:**
```bash
git clone
cd github-notion-sync
```
2. **Instala dependencias:**
```bash
npm install
```
3. **Configura variables de entorno:**
```bash
cp .env.example .env
```
## 🔧 Configuración
### 1. Token de GitHub
- Ve a https://github.com/settings/tokens
- Genera un nuevo token (classic)
- Permisos necesarios: `repo`, `user`
- Copia el token a `.env`
### 2. Token de Notion
- Ve a https://www.notion.so/my-integrations
- Crea nueva integración
- Copia el token a `.env`
### 3. Base de datos de Notion
Crea una base de datos con estas propiedades:
| Propiedad | Tipo | Descripción |
|-----------|------|-------------|
| Name | Title | Nombre del repositorio |
| Description | Text | Descripción del repo |
| Language | Select | Lenguaje principal |
| Stars | Number | Número de estrellas |
| Forks | Number | Número de forks |
| Issues | Number | Issues abiertas |
| Size (KB) | Number | Tamaño en KB |
| Created | Date | Fecha de creación |
| Updated | Date | Última actualización |
| URL | URL | Link al repositorio |
| Private | Checkbox | Si es privado |
| Topics | Multi-select | Tags del repo |
### 4. Archivo .env
```env
NOTION_TOKEN=secret_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
NOTION_DATABASE_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
```
## 🏃♂️ Uso
### Sincronización manual
```bash
npm run sync
```
### Sincronización automática con GitHub Actions
El proyecto incluye un GitHub Action que se ejecuta automáticamente:
- **Diariamente a las 9:00 AM UTC**
- **Manualmente** desde la pestaña Actions
#### Configurar secrets en GitHub:
1. Ve a tu repositorio → Settings → Secrets and variables → Actions
2. Agrega estos secrets:
- `NOTION_TOKEN`: Tu token de Notion
- `GB_TOKEN`: Tu token de GitHub
- `NOTION_DATABASE_ID`: ID de tu base de datos
#### Ejecución manual:
- Ve a Actions → "Sync GitHub Repos to Notion" → "Run workflow"
### Programar sincronización local (alternativa)
```bash
0 9 * * * cd /ruta/al/proyecto && npm run sync
```
## 📊 Insights Generados
El script genera automáticamente:
- **Total de repositorios**
- **Estadísticas de lenguajes** (top 5)
- **Total de estrellas** y promedio
- **Repositorio más popular**
- **Actividad reciente** (últimos 30 días)
## 📁 Estructura del Proyecto
```
├── github-notion-sync.js # Clase principal
├── sync.js # Script de ejecución
├── package.json # Dependencias
├── .env.example # Template de configuración
└── README.md # Documentación
```
## 🔄 Casos de Uso en Notion
Una vez sincronizado, puedes:
- **Dashboards:** Crear vistas por lenguaje, popularidad, fecha
- **Reportes:** Generar informes automáticos de actividad
- **Portfolio:** Mostrar proyectos destacados
- **Análisis:** Identificar patrones en tu desarrollo
- **Planificación:** Priorizar mantenimiento de repos
## 🛠️ Personalización
### Agregar nuevas métricas
Modifica el método `getRepositories()` en `github-notion-sync.js`:
```javascript
// Ejemplo: agregar commits recientes
const commits = await this.github.rest.repos.listCommits({
owner: repo.owner.login,
repo: repo.name,
per_page: 1
});
```
### Filtrar repositorios
Agrega filtros en `getRepositories()`:
```javascript
return repos.data
.filter(repo => !repo.fork) // Excluir forks
.filter(repo => repo.stargazers_count > 0) // Solo con estrellas
.map(repo => ({...}));
```
## 🚨 Troubleshooting
### Error de autenticación
- Verifica que los tokens sean válidos
- Asegúrate de que la integración de Notion tenga acceso a la base de datos
### Límites de API
- GitHub: 5000 requests/hora
- Notion: 3 requests/segundo
### Base de datos no encontrada
- Verifica el `NOTION_DATABASE_ID`
- Confirma que la integración tenga permisos
## 📝 Licencia
MIT License - Úsalo libremente para tus proyectos.
## 🤝 Contribuciones
¡Las contribuciones son bienvenidas! Abre un issue o envía un PR.