Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)
Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
This commit is contained in:
@@ -0,0 +1 @@
|
||||
{"specId": "2a1dd5ab-86c0-4f0f-b8fd-2c6e916fe712", "workflowType": "requirements-first", "specType": "feature"}
|
||||
@@ -0,0 +1,414 @@
|
||||
# Design Document: LinkedIn-Profil-Revamp
|
||||
|
||||
## Overview
|
||||
|
||||
Dieses Design beschreibt die technische Umsetzung eines neuen Kiro Skills `linkedin-profile` zur automatisierten Generierung und Optimierung von LinkedIn-Profilinhalten aus der bestehenden Knowledge Base. Der Skill erzeugt optimierte Texte für Headline, About-Section und Experience-Beschreibungen, generiert eine Content-Strategie und implementiert ein Tracking-System für LinkedIn-Metriken.
|
||||
|
||||
### Design-Entscheidungen
|
||||
|
||||
1. **Neuer Kiro Skill statt Standalone-Script** — Folgt dem etablierten Muster der bestehenden Skills (consultant-profile, cv-generate, talk-intro). Ermöglicht interaktive Nutzung und iterative Verfeinerung.
|
||||
2. **KB als Single Source of Truth** — Alle LinkedIn-Inhalte werden aus den bestehenden YAML-Entities generiert. Keine Duplizierung von Daten.
|
||||
3. **Tracking als YAML-Entity** — LinkedIn-Metriken werden als neue Entity-Kategorie `kb/tracking/` gespeichert, konsistent mit dem bestehenden Datenmodell.
|
||||
4. **Markdown-Output mit strukturierten Sektionen** — Output-Dateien enthalten alle generierten Profilsektionen in einem einzigen Dokument, analog zum Talk-Intro-Skill.
|
||||
5. **Constraint-Validierung zur Generierungszeit** — Zeichenlimits (220 für Headline, 2.600 für About) werden programmatisch validiert, nicht nur als Richtlinie.
|
||||
6. **Content-Strategie als Template** — Die Content-Strategie wird als wiederverwendbares Template generiert, das quartalsweise aktualisiert werden kann.
|
||||
|
||||
## Architecture
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
subgraph "Knowledge Base (kb/)"
|
||||
Profile[profiles/andre-knie.yaml]
|
||||
Experiences[experiences/*.yaml]
|
||||
Skills[skills/*.yaml]
|
||||
Projects[projects/*.yaml]
|
||||
Orgs[organizations/*.yaml]
|
||||
Tracking[tracking/*.yaml]
|
||||
end
|
||||
|
||||
subgraph "Kiro Skill (.kiro/skills/linkedin-profile/)"
|
||||
SkillMD[SKILL.md]
|
||||
end
|
||||
|
||||
subgraph "Source Modules (src/linkedin/)"
|
||||
HeadlineGen[headline-generator.ts]
|
||||
AboutGen[about-generator.ts]
|
||||
ExperienceGen[experience-generator.ts]
|
||||
ContentStrategy[content-strategy.ts]
|
||||
TrackingMgr[tracking-manager.ts]
|
||||
Constraints[constraints.ts]
|
||||
end
|
||||
|
||||
subgraph "Shared Modules (src/)"
|
||||
Validate[schemas/validate.ts]
|
||||
Types[schemas/types.ts]
|
||||
YamlUtils[io/yaml-utils.ts]
|
||||
EntityFiles[io/entity-files.ts]
|
||||
end
|
||||
|
||||
subgraph "Output (output/linkedin/)"
|
||||
ProfileDoc[profile-optimized.md]
|
||||
StrategyDoc[content-strategy.md]
|
||||
TrackingReport[tracking-report.md]
|
||||
end
|
||||
|
||||
SkillMD -->|orchestrates| HeadlineGen
|
||||
SkillMD -->|orchestrates| AboutGen
|
||||
SkillMD -->|orchestrates| ExperienceGen
|
||||
SkillMD -->|orchestrates| ContentStrategy
|
||||
SkillMD -->|orchestrates| TrackingMgr
|
||||
|
||||
HeadlineGen -->|reads| Profile
|
||||
HeadlineGen -->|reads| Experiences
|
||||
AboutGen -->|reads| Profile
|
||||
AboutGen -->|reads| Projects
|
||||
ExperienceGen -->|reads| Experiences
|
||||
ExperienceGen -->|reads| Skills
|
||||
ExperienceGen -->|reads| Projects
|
||||
ContentStrategy -->|reads| Profile
|
||||
TrackingMgr -->|reads/writes| Tracking
|
||||
|
||||
HeadlineGen -->|validates| Constraints
|
||||
AboutGen -->|validates| Constraints
|
||||
ExperienceGen -->|validates| Constraints
|
||||
|
||||
HeadlineGen -->|uses| EntityFiles
|
||||
AboutGen -->|uses| EntityFiles
|
||||
ExperienceGen -->|uses| EntityFiles
|
||||
TrackingMgr -->|uses| YamlUtils
|
||||
|
||||
HeadlineGen -->|writes| ProfileDoc
|
||||
AboutGen -->|writes| ProfileDoc
|
||||
ExperienceGen -->|writes| ProfileDoc
|
||||
ContentStrategy -->|writes| StrategyDoc
|
||||
TrackingMgr -->|writes| TrackingReport
|
||||
```
|
||||
|
||||
### Komponenten-Interaktionsfluss
|
||||
|
||||
1. **Profil-Generierung**: User aktiviert Skill → Skill liest KB-Entities → generiert optimierte Texte → validiert Constraints → schreibt Output
|
||||
2. **Content-Strategie**: User fordert Strategie an → Skill analysiert Profil und Themen → generiert Redaktionsplan → schreibt Template
|
||||
3. **Tracking**: User gibt Metriken ein → Skill speichert als YAML → berechnet Trends → generiert Report
|
||||
|
||||
## Components and Interfaces
|
||||
|
||||
### 1. LinkedIn Profile Skill (`.kiro/skills/linkedin-profile/`)
|
||||
|
||||
Orchestriert die gesamte LinkedIn-Optimierung als Kiro Skill.
|
||||
|
||||
**Interface**: Manuell aktiviert durch User-Request.
|
||||
|
||||
**Verantwortlichkeiten**:
|
||||
- Koordination der Generierungsmodule
|
||||
- Interaktive Verfeinerung mit dem User
|
||||
- Output-Management
|
||||
|
||||
### 2. Headline Generator (`src/linkedin/headline-generator.ts`)
|
||||
|
||||
Generiert optimierte LinkedIn-Headlines aus KB-Daten.
|
||||
|
||||
**Interface**:
|
||||
```typescript
|
||||
interface HeadlineOptions {
|
||||
personId: string;
|
||||
emphasis?: 'dual-role' | 'ai-expert' | 'leadership';
|
||||
variants?: number; // default: 3
|
||||
}
|
||||
|
||||
function generateHeadlines(options: HeadlineOptions): HeadlineResult;
|
||||
|
||||
interface HeadlineResult {
|
||||
variants: HeadlineVariant[];
|
||||
validation: ConstraintValidation;
|
||||
}
|
||||
|
||||
interface HeadlineVariant {
|
||||
text: string;
|
||||
charCount: number;
|
||||
keywords: string[];
|
||||
roles: string[];
|
||||
}
|
||||
```
|
||||
|
||||
**Constraints**:
|
||||
- Max 220 Zeichen
|
||||
- Muss beide Rollen enthalten (DB InfraGO + Data Hive Cassel)
|
||||
- Kein Fachjargon
|
||||
- Mindestens ein differenzierendes Element
|
||||
|
||||
### 3. About Section Generator (`src/linkedin/about-generator.ts`)
|
||||
|
||||
Generiert die About-Section mit Hook, Story und CTA.
|
||||
|
||||
**Interface**:
|
||||
```typescript
|
||||
interface AboutOptions {
|
||||
personId: string;
|
||||
tone?: 'nahbar' | 'fachlich' | 'inspirierend';
|
||||
includeStats?: boolean; // default: true
|
||||
}
|
||||
|
||||
function generateAbout(options: AboutOptions): AboutResult;
|
||||
|
||||
interface AboutResult {
|
||||
fullText: string;
|
||||
charCount: number;
|
||||
hookPreview: string; // erste 2 Zeilen (vor "mehr anzeigen")
|
||||
sections: {
|
||||
hook: string;
|
||||
mission: string;
|
||||
expertise: string;
|
||||
cta: string;
|
||||
};
|
||||
validation: ConstraintValidation;
|
||||
}
|
||||
```
|
||||
|
||||
**Constraints**:
|
||||
- Max 2.600 Zeichen
|
||||
- Hook in ersten 2 Zeilen sichtbar
|
||||
- Drei Kernthemen benannt
|
||||
- Konkrete Belege enthalten
|
||||
- CTA am Ende
|
||||
|
||||
### 4. Experience Generator (`src/linkedin/experience-generator.ts`)
|
||||
|
||||
Generiert wirkungsorientierte Experience-Beschreibungen.
|
||||
|
||||
**Interface**:
|
||||
```typescript
|
||||
interface ExperienceOptions {
|
||||
personId: string;
|
||||
experienceIds?: string[]; // specific experiences, or all if omitted
|
||||
keywords?: string[]; // SEO keywords to include
|
||||
}
|
||||
|
||||
function generateExperiences(options: ExperienceOptions): ExperienceResult[];
|
||||
|
||||
interface ExperienceResult {
|
||||
experienceId: string;
|
||||
title: string;
|
||||
organization: string;
|
||||
description: string;
|
||||
keywords: string[];
|
||||
achievements: string[];
|
||||
validation: ConstraintValidation;
|
||||
}
|
||||
```
|
||||
|
||||
**Constraints**:
|
||||
- Ergebnisse statt Aufgaben
|
||||
- Relevante Keywords für LinkedIn-Suche
|
||||
- Messbare Erfolge wo vorhanden
|
||||
|
||||
### 5. Content Strategy Generator (`src/linkedin/content-strategy.ts`)
|
||||
|
||||
Generiert einen strukturierten Content-Plan.
|
||||
|
||||
**Interface**:
|
||||
```typescript
|
||||
interface ContentStrategyOptions {
|
||||
personId: string;
|
||||
quarter: string; // e.g., "2026-Q3"
|
||||
existingFormats?: string[]; // podcast, column, etc.
|
||||
}
|
||||
|
||||
function generateContentStrategy(options: ContentStrategyOptions): ContentStrategy;
|
||||
|
||||
interface ContentStrategy {
|
||||
postingFrequency: string;
|
||||
themeCluster: ThemeCluster[];
|
||||
weeklyPlan: WeeklySlot[];
|
||||
engagementRoutine: EngagementRoutine;
|
||||
formatMix: FormatMix;
|
||||
}
|
||||
```
|
||||
|
||||
### 6. Tracking Manager (`src/linkedin/tracking-manager.ts`)
|
||||
|
||||
Verwaltet LinkedIn-Metriken als YAML-Entities.
|
||||
|
||||
**Interface**:
|
||||
```typescript
|
||||
interface TrackingEntry {
|
||||
id: string;
|
||||
type: 'linkedin-tracking';
|
||||
date: string; // ISO date
|
||||
metrics: {
|
||||
profileViews: number;
|
||||
searchAppearances: number;
|
||||
connectionRequests: number;
|
||||
postImpressions?: number;
|
||||
engagementRate?: number;
|
||||
comments?: number;
|
||||
reposts?: number;
|
||||
};
|
||||
posts?: PostMetric[];
|
||||
}
|
||||
|
||||
interface PostMetric {
|
||||
title: string;
|
||||
date: string;
|
||||
format: 'text' | 'carousel' | 'video' | 'newsletter';
|
||||
impressions: number;
|
||||
engagementRate: number;
|
||||
comments: number;
|
||||
reposts: number;
|
||||
isBestPractice?: boolean;
|
||||
}
|
||||
|
||||
function addTrackingEntry(entry: TrackingEntry): void;
|
||||
function getWeeklyReport(weekOf: string): WeeklyReport;
|
||||
function getMonthlyTrend(month: string): MonthlyTrend;
|
||||
```
|
||||
|
||||
### 7. Constraint Validator (`src/linkedin/constraints.ts`)
|
||||
|
||||
Validiert LinkedIn-spezifische Constraints.
|
||||
|
||||
**Interface**:
|
||||
```typescript
|
||||
interface ConstraintValidation {
|
||||
valid: boolean;
|
||||
errors: ConstraintError[];
|
||||
warnings: ConstraintWarning[];
|
||||
}
|
||||
|
||||
interface ConstraintError {
|
||||
field: string;
|
||||
constraint: string;
|
||||
actual: string | number;
|
||||
limit: string | number;
|
||||
}
|
||||
|
||||
function validateHeadline(text: string): ConstraintValidation;
|
||||
function validateAbout(text: string): ConstraintValidation;
|
||||
function validateExperience(text: string): ConstraintValidation;
|
||||
```
|
||||
|
||||
## Data Models
|
||||
|
||||
### LinkedIn Tracking Entity (`kb/tracking/<date>.yaml`)
|
||||
|
||||
```yaml
|
||||
id: linkedin-2026-w28
|
||||
type: linkedin-tracking
|
||||
created: 2026-07-13
|
||||
modified: 2026-07-13
|
||||
|
||||
date: 2026-07-13
|
||||
period: weekly
|
||||
|
||||
metrics:
|
||||
profile-views: 142
|
||||
search-appearances: 38
|
||||
connection-requests: 12
|
||||
post-impressions: 4500
|
||||
engagement-rate: 4.2
|
||||
comments: 23
|
||||
reposts: 8
|
||||
|
||||
posts:
|
||||
- title: "KI in der Bahn — was wirklich funktioniert"
|
||||
date: 2026-07-10
|
||||
format: text
|
||||
impressions: 2100
|
||||
engagement-rate: 5.1
|
||||
comments: 14
|
||||
reposts: 5
|
||||
is-best-practice: true
|
||||
- title: "Carousel: 5 Fehler bei der KI-Einführung"
|
||||
date: 2026-07-12
|
||||
format: carousel
|
||||
impressions: 2400
|
||||
engagement-rate: 3.8
|
||||
comments: 9
|
||||
reposts: 3
|
||||
is-best-practice: false
|
||||
```
|
||||
|
||||
### LinkedIn Profile Output (`output/linkedin/profile-optimized.md`)
|
||||
|
||||
```markdown
|
||||
# LinkedIn-Profil — Dr. Andre Knie
|
||||
Generated: 2026-07-13
|
||||
|
||||
## Headline (Variante 1)
|
||||
[Generated headline text]
|
||||
|
||||
## Headline (Variante 2)
|
||||
[Generated headline text]
|
||||
|
||||
## About Section
|
||||
[Generated about text]
|
||||
|
||||
## Experience: Experte für Digitalisierung — DB InfraGO
|
||||
[Generated experience description]
|
||||
|
||||
## Experience: Gründer & Geschäftsführer — Data Hive Cassel
|
||||
[Generated experience description]
|
||||
|
||||
...
|
||||
```
|
||||
|
||||
### Content Strategy Output (`output/linkedin/content-strategy.md`)
|
||||
|
||||
```markdown
|
||||
# Content-Strategie LinkedIn — Q3 2026
|
||||
Generated: 2026-07-13
|
||||
|
||||
## Posting-Frequenz
|
||||
2 Beiträge pro Woche (Di + Do)
|
||||
|
||||
## Themen-Cluster
|
||||
1. Innovation & Technologie (40%)
|
||||
2. Mensch & Kultur (35%)
|
||||
3. Verantwortung (25%)
|
||||
|
||||
## Wochenplan
|
||||
...
|
||||
|
||||
## Engagement-Routine
|
||||
...
|
||||
|
||||
## Format-Mix
|
||||
...
|
||||
```
|
||||
|
||||
### Erweiterung Graph Index
|
||||
|
||||
```yaml
|
||||
# Neue Entity-Typen in graph-index.yaml
|
||||
entities:
|
||||
- id: linkedin-2026-w28
|
||||
type: linkedin-tracking
|
||||
name: LinkedIn Tracking KW28 2026
|
||||
```
|
||||
|
||||
### Directory Structure (Erweiterungen)
|
||||
|
||||
```
|
||||
project-root/
|
||||
├── kb/
|
||||
│ └── tracking/ # NEU: LinkedIn-Metriken
|
||||
│ ├── linkedin-2026-w28.yaml
|
||||
│ └── linkedin-2026-w29.yaml
|
||||
├── src/
|
||||
│ └── linkedin/ # NEU: LinkedIn-Module
|
||||
│ ├── headline-generator.ts
|
||||
│ ├── about-generator.ts
|
||||
│ ├── experience-generator.ts
|
||||
│ ├── content-strategy.ts
|
||||
│ ├── tracking-manager.ts
|
||||
│ ├── constraints.ts
|
||||
│ └── linkedin.test.ts
|
||||
├── output/
|
||||
│ └── linkedin/ # NEU: LinkedIn-Outputs
|
||||
│ ├── profile-optimized.md
|
||||
│ ├── content-strategy.md
|
||||
│ └── tracking-report.md
|
||||
└── .kiro/
|
||||
└── skills/
|
||||
└── linkedin-profile/ # NEU: LinkedIn Skill
|
||||
└── SKILL.md
|
||||
```
|
||||
@@ -0,0 +1,136 @@
|
||||
# Requirements Document — LinkedIn-Profil-Revamp
|
||||
|
||||
## Einleitung
|
||||
|
||||
Dieses Dokument beschreibt die Anforderungen für die Überarbeitung des LinkedIn-Profils von Dr. Andre Knie. Ziel ist eine konsistente, professionelle und wirkungsvolle Präsenz, die seine Doppelrolle als Digitalisierungsexperte bei DB InfraGO und Gründer/Geschäftsführer von Data Hive Cassel widerspiegelt. Das Profil soll seine Expertise in KI, Change Management und Führung klar kommunizieren und ihn als Thought Leader im DACH-Raum positionieren.
|
||||
|
||||
## Glossar
|
||||
|
||||
- **Profil**: Das LinkedIn-Profil von Dr. Andre Knie (https://www.linkedin.com/in/knie)
|
||||
- **Headline**: Die Überschrift direkt unter dem Namen auf LinkedIn (max. 220 Zeichen)
|
||||
- **About_Section**: Der "Info"-Bereich des LinkedIn-Profils (max. 2.600 Zeichen)
|
||||
- **Featured_Section**: Der "Im Fokus"-Bereich für angeheftete Inhalte
|
||||
- **Experience_Section**: Der "Berufserfahrung"-Bereich mit Rollenbeschreibungen
|
||||
- **Content_Strategie**: Der Plan für regelmäßige Beiträge und Interaktionen
|
||||
- **Personal_Brand**: Die konsistente Außenwahrnehmung über alle Kanäle hinweg
|
||||
- **Zielgruppe**: Die primären Adressaten der LinkedIn-Aktivitäten
|
||||
- **Tracking_System**: Das System zur Erfassung und Auswertung von LinkedIn-Metriken
|
||||
- **KPI**: Key Performance Indicator — eine messbare Kennzahl zur Erfolgsbewertung
|
||||
|
||||
## Requirements
|
||||
|
||||
### Requirement 1: Profil-Headline
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich eine prägnante Headline haben, damit Besucher sofort verstehen, wofür ich stehe und welchen Mehrwert ich biete.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE Headline SHALL kommunizieren, dass Dr. Andre Knie an der Schnittstelle von KI, Digitalisierung und Führung arbeitet
|
||||
2. THE Headline SHALL beide Rollen (DB InfraGO und Data Hive Cassel) erkennbar machen
|
||||
3. THE Headline SHALL maximal 220 Zeichen umfassen
|
||||
4. THE Headline SHALL mindestens ein differenzierendes Element enthalten, das Neugier weckt
|
||||
5. THE Headline SHALL ohne Fachjargon für ein breites Business-Publikum verständlich sein
|
||||
|
||||
### Requirement 2: About-Section
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich eine überzeugende About-Section haben, damit Besucher meine Geschichte, Motivation und Expertise verstehen und zum Vernetzen motiviert werden.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE About_Section SHALL mit einem aufmerksamkeitsstarken Einstieg beginnen, der in den ersten zwei Zeilen (vor "mehr anzeigen") sichtbar ist
|
||||
2. THE About_Section SHALL die persönliche Mission kommunizieren: Angst vor Technologie und Veränderung überwinden und echten Mehrwert schaffen
|
||||
3. THE About_Section SHALL die drei Kernthemen (Innovation/Technologie, Mensch/Kultur, Verantwortung) klar benennen
|
||||
4. THE About_Section SHALL konkrete Belege für Expertise enthalten (60+ Publikationen, 13+ Jahre KI-Erfahrung, 50+ Projekte)
|
||||
5. THE About_Section SHALL maximal 2.600 Zeichen umfassen
|
||||
6. THE About_Section SHALL einen klaren Call-to-Action am Ende enthalten
|
||||
7. THE About_Section SHALL in einem authentischen, nahbaren Ton verfasst sein
|
||||
|
||||
### Requirement 3: Experience-Beschreibungen
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich aussagekräftige Beschreibungen meiner Berufserfahrungen haben, damit Besucher den Wert und die Wirkung meiner Arbeit nachvollziehen können.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. WHEN eine Experience-Beschreibung erstellt wird, THE Experience_Section SHALL konkrete Ergebnisse und Wirkung statt Aufgabenbeschreibungen enthalten
|
||||
2. WHEN eine Experience-Beschreibung erstellt wird, THE Experience_Section SHALL relevante Keywords für die LinkedIn-Suche enthalten
|
||||
3. THE Experience_Section SHALL die aktuelle Rolle bei DB InfraGO als primäre Position darstellen
|
||||
4. THE Experience_Section SHALL die Gründerrolle bei Data Hive Cassel mit messbaren Erfolgen beschreiben (50+ Projekte, 15+ Kunden, ROI über 2)
|
||||
5. THE Experience_Section SHALL das JobSharing-Experiment bei DB Netz als Innovation in Führung hervorheben
|
||||
6. THE Experience_Section SHALL die akademische Laufbahn (Promotion, Dozent) als Fundament für die KI-Expertise positionieren
|
||||
|
||||
### Requirement 4: Featured-Section-Strategie
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich eine kuratierte Featured-Section haben, damit Besucher sofort meine besten Inhalte und Referenzen sehen.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE Featured_Section SHALL maximal 5 Elemente enthalten, um Fokus zu gewährleisten
|
||||
2. THE Featured_Section SHALL mindestens einen Inhalt pro Kernthema (KI/Technologie, Mensch/Kultur, Verantwortung) enthalten
|
||||
3. THE Featured_Section SHALL regelmäßig (mindestens quartalsweise) aktualisiert werden
|
||||
4. WHEN ein neuer hochperformanter Beitrag veröffentlicht wird, THE Featured_Section SHALL geprüft und bei Bedarf aktualisiert werden
|
||||
5. THE Featured_Section SHALL eine Mischung aus Formaten enthalten (Beiträge, externe Links, Dokumente)
|
||||
|
||||
### Requirement 5: Content-Strategie
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich eine konsistente Content-Strategie haben, damit ich regelmäßig Sichtbarkeit aufbaue und als Thought Leader wahrgenommen werde.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE Content_Strategie SHALL eine Posting-Frequenz von mindestens 2 Beiträgen pro Woche vorsehen
|
||||
2. THE Content_Strategie SHALL die drei Kernthemen (Innovation/Technologie, Mensch/Kultur, Verantwortung) abdecken
|
||||
3. THE Content_Strategie SHALL bestehende Formate (Podcast "Almost Intelligent", Kolumne "Kniepunkt") als Content-Quellen einbinden
|
||||
4. THE Content_Strategie SHALL eine Mischung aus Formaten vorsehen (Text, Carousel, Video, Newsletter)
|
||||
5. THE Content_Strategie SHALL Interaktionszeiten und Engagement-Routinen definieren
|
||||
6. WHEN ein Beitrag veröffentlicht wird, THE Content_Strategie SHALL sicherstellen, dass der Beitrag einen klaren Mehrwert für die Zielgruppe bietet
|
||||
7. THE Content_Strategie SHALL Themen-Cluster definieren, die zur Personal_Brand passen
|
||||
|
||||
### Requirement 6: Skills und Endorsements
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich eine optimierte Skills-Section haben, damit der LinkedIn-Algorithmus mein Profil für relevante Suchanfragen vorschlägt.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE Profil SHALL maximal 50 Skills enthalten, priorisiert nach strategischer Relevanz
|
||||
2. THE Profil SHALL die Top-5-Skills so wählen, dass sie die Kernpositionierung widerspiegeln (KI, Digitalisierung, Change Management, Führung, Innovation)
|
||||
3. WHEN ein neuer Skill hinzugefügt wird, THE Profil SHALL sicherstellen, dass der Skill zur definierten Personal_Brand passt
|
||||
4. THE Profil SHALL eine Strategie zur aktiven Einholung von Endorsements für die Top-Skills enthalten
|
||||
|
||||
### Requirement 7: Netzwerk-Strategie
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich eine gezielte Netzwerk-Strategie haben, damit ich relevante Kontakte aufbaue und meine Reichweite in den Zielgruppen erhöhe.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE Profil SHALL eine definierte Zielgruppe für Vernetzungsanfragen haben (Entscheider in Digitalisierung, KI-Community, Startup-Ökosystem, Bahn-Branche)
|
||||
2. THE Profil SHALL personalisierte Vernetzungsnachrichten verwenden, die einen konkreten Anknüpfungspunkt benennen
|
||||
3. THE Content_Strategie SHALL aktives Kommentieren bei relevanten Thought Leadern vorsehen (mindestens 5 Kommentare pro Woche)
|
||||
4. WHEN eine Vernetzungsanfrage gesendet wird, THE Profil SHALL sicherstellen, dass die Anfrage einen Mehrwert oder gemeinsamen Kontext kommuniziert
|
||||
5. THE Profil SHALL die bestehenden Netzwerke (KI-Peergroup Nordhessen, KI-Bundesverband, Science Park Kassel) aktiv auf LinkedIn abbilden
|
||||
|
||||
### Requirement 8: Traktion und Erfolgsmessung
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich die Performance meiner Beiträge und meines Profils systematisch messen, damit ich datenbasiert entscheiden kann, welche Inhalte und Formate am besten funktionieren.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE Tracking_System SHALL definierte KPIs für Beiträge erfassen (Impressionen, Engagement-Rate, Kommentare, Reposts, Klicks)
|
||||
2. THE Tracking_System SHALL definierte KPIs für das Profil erfassen (Profilaufrufe, Suchergebnisse, Vernetzungsanfragen pro Woche)
|
||||
3. THE Tracking_System SHALL eine wöchentliche Auswertung der Beitrags-Performance ermöglichen
|
||||
4. THE Tracking_System SHALL eine monatliche Trendanalyse bereitstellen, die Wachstum und Top-Performer identifiziert
|
||||
5. WHEN ein Beitrag eine überdurchschnittliche Engagement-Rate erzielt, THE Tracking_System SHALL diesen Beitrag als Best Practice markieren
|
||||
6. THE Tracking_System SHALL die Daten in einem strukturierten Format speichern, das Vergleiche über Zeit ermöglicht
|
||||
7. THE Tracking_System SHALL Empfehlungen für Content-Optimierung auf Basis der gemessenen Daten ableiten
|
||||
|
||||
### Requirement 9: Personal Branding und Konsistenz
|
||||
|
||||
**User Story:** Als LinkedIn-Nutzer möchte ich eine konsistente Personal Brand haben, damit meine Außenwahrnehmung über alle Kanäle einheitlich und wiedererkennbar ist.
|
||||
|
||||
#### Acceptance Criteria
|
||||
|
||||
1. THE Personal_Brand SHALL ein konsistentes visuelles Erscheinungsbild definieren (Profilfoto, Banner, Farbwelt)
|
||||
2. THE Personal_Brand SHALL die Tonalität festlegen: nahbar, fachlich fundiert, inspirierend
|
||||
3. THE Personal_Brand SHALL die Doppelrolle (Konzern + Startup) als Stärke und Alleinstellungsmerkmal positionieren
|
||||
4. THE Personal_Brand SHALL mit der d-Hive Corporate Identity kompatibel sein (Schwarz/Neon-Grün als Akzente)
|
||||
5. WHEN Inhalte auf LinkedIn veröffentlicht werden, THE Personal_Brand SHALL sicherstellen, dass die Inhalte zur definierten Positionierung passen
|
||||
6. THE Personal_Brand SHALL einen wiedererkennbaren Claim oder Leitsatz enthalten
|
||||
|
||||
@@ -0,0 +1,199 @@
|
||||
# Implementation Plan: LinkedIn-Profil-Revamp
|
||||
|
||||
## Overview
|
||||
|
||||
Implementierung eines neuen Kiro Skills `linkedin-profile` zur automatisierten Generierung und Optimierung von LinkedIn-Profilinhalten. Der Skill nutzt die bestehende Knowledge Base als Datenquelle und erzeugt optimierte Texte für Headline, About-Section, Experience-Beschreibungen, eine Content-Strategie sowie ein Tracking-System für LinkedIn-Metriken. Die Implementierung folgt den etablierten Mustern der bestehenden Skills (consultant-profile, cv-generate, talk-intro).
|
||||
|
||||
## Tasks
|
||||
|
||||
- [x] 1. Constraint-Validator und Typen erstellen
|
||||
- [x] 1.1 LinkedIn-spezifische TypeScript-Interfaces in `src/linkedin/constraints.ts` definieren
|
||||
- `ConstraintValidation`, `ConstraintError`, `ConstraintWarning` Interfaces
|
||||
- Validierungsfunktionen: `validateHeadline(text)`, `validateAbout(text)`, `validateExperience(text)`
|
||||
- Headline-Limit: 220 Zeichen, About-Limit: 2.600 Zeichen
|
||||
- _Requirements: 1.3, 2.5_
|
||||
|
||||
- [x] 1.2 LinkedIn-Modul-Interfaces und Typen in `src/linkedin/types.ts` definieren
|
||||
- `HeadlineOptions`, `HeadlineResult`, `HeadlineVariant`
|
||||
- `AboutOptions`, `AboutResult`
|
||||
- `ExperienceOptions`, `ExperienceResult`
|
||||
- `ContentStrategyOptions`, `ContentStrategy`, `ThemeCluster`, `WeeklySlot`
|
||||
- `TrackingEntry`, `PostMetric`, `WeeklyReport`, `MonthlyTrend`
|
||||
- _Requirements: 1.1–1.5, 2.1–2.7, 3.1–3.6, 5.1–5.7, 8.1–8.7_
|
||||
|
||||
- [x] 1.3 Unit-Tests für Constraint-Validator schreiben
|
||||
- Teste Headline-Validierung (unter/über 220 Zeichen)
|
||||
- Teste About-Validierung (unter/über 2.600 Zeichen)
|
||||
- Teste Experience-Validierung
|
||||
- Teste Edge Cases (leere Strings, exakt am Limit)
|
||||
- _Requirements: 1.3, 2.5_
|
||||
|
||||
- [x] 2. Headline Generator implementieren
|
||||
- [x] 2.1 `src/linkedin/headline-generator.ts` erstellen
|
||||
- Funktion `generateHeadlines(options: HeadlineOptions): HeadlineResult`
|
||||
- KB-Entities lesen (Profile, Experiences) via `src/io/entity-files.ts`
|
||||
- Mehrere Varianten generieren (default: 3)
|
||||
- Beide Rollen (DB InfraGO + Data Hive Cassel) einbinden
|
||||
- Constraint-Validierung via `constraints.ts` anwenden
|
||||
- Keywords und differenzierende Elemente extrahieren
|
||||
- _Requirements: 1.1, 1.2, 1.3, 1.4, 1.5_
|
||||
|
||||
- [x] 2.2 Unit-Tests für Headline Generator schreiben
|
||||
- Teste korrekte Extraktion beider Rollen aus KB
|
||||
- Teste Zeichenlimit-Einhaltung
|
||||
- Teste Variantengenerierung
|
||||
- _Requirements: 1.1–1.5_
|
||||
|
||||
- [x] 3. About Section Generator implementieren
|
||||
- [x] 3.1 `src/linkedin/about-generator.ts` erstellen
|
||||
- Funktion `generateAbout(options: AboutOptions): AboutResult`
|
||||
- KB-Entities lesen (Profile, Projects) via `src/io/entity-files.ts`
|
||||
- Strukturierte Sektionen: Hook, Mission, Expertise, CTA
|
||||
- Hook-Preview (erste 2 Zeilen) separat bereitstellen
|
||||
- Konkrete Belege einbinden (60+ Publikationen, 13+ Jahre KI, 50+ Projekte)
|
||||
- Drei Kernthemen benennen (Innovation/Technologie, Mensch/Kultur, Verantwortung)
|
||||
- Constraint-Validierung (max. 2.600 Zeichen)
|
||||
- _Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6, 2.7_
|
||||
|
||||
- [x] 3.2 Unit-Tests für About Generator schreiben
|
||||
- Teste Zeichenlimit-Einhaltung
|
||||
- Teste Vorhandensein aller Sektionen (hook, mission, expertise, cta)
|
||||
- Teste Hook-Preview-Extraktion
|
||||
- _Requirements: 2.1–2.7_
|
||||
|
||||
- [x] 4. Checkpoint — Kernmodule validieren
|
||||
- Ensure all tests pass, ask the user if questions arise.
|
||||
|
||||
- [x] 5. Experience Generator implementieren
|
||||
- [x] 5.1 `src/linkedin/experience-generator.ts` erstellen
|
||||
- Funktion `generateExperiences(options: ExperienceOptions): ExperienceResult[]`
|
||||
- KB-Entities lesen (Experiences, Skills, Projects) via `src/io/entity-files.ts`
|
||||
- Ergebnisorientierte Beschreibungen statt Aufgabenlisten
|
||||
- Keywords für LinkedIn-Suche einbinden
|
||||
- Messbare Erfolge hervorheben (50+ Projekte, 15+ Kunden, ROI > 2)
|
||||
- DB InfraGO als primäre Position, Data Hive mit Gründer-Achievements
|
||||
- JobSharing-Experiment als Führungsinnovation positionieren
|
||||
- Akademische Laufbahn als KI-Expertise-Fundament
|
||||
- _Requirements: 3.1, 3.2, 3.3, 3.4, 3.5, 3.6_
|
||||
|
||||
- [x] 5.2 Unit-Tests für Experience Generator schreiben
|
||||
- Teste korrekte Zuordnung von Experiences aus KB
|
||||
- Teste Keyword-Einbindung
|
||||
- Teste Ergebnis-Struktur (title, organization, description, achievements)
|
||||
- _Requirements: 3.1–3.6_
|
||||
|
||||
- [x] 6. Content Strategy Generator implementieren
|
||||
- [x] 6.1 `src/linkedin/content-strategy.ts` erstellen
|
||||
- Funktion `generateContentStrategy(options: ContentStrategyOptions): ContentStrategy`
|
||||
- Posting-Frequenz: 2 Beiträge/Woche
|
||||
- Themen-Cluster mit Gewichtung (Innovation 40%, Mensch 35%, Verantwortung 25%)
|
||||
- Wochenplan mit konkreten Slots
|
||||
- Engagement-Routine (5+ Kommentare/Woche bei Thought Leadern)
|
||||
- Format-Mix (Text, Carousel, Video, Newsletter)
|
||||
- Bestehende Formate einbinden (Podcast "Almost Intelligent", Kolumne "Kniepunkt")
|
||||
- _Requirements: 5.1, 5.2, 5.3, 5.4, 5.5, 5.6, 5.7_
|
||||
|
||||
- [x] 6.2 Unit-Tests für Content Strategy Generator schreiben
|
||||
- Teste Struktur des generierten Plans
|
||||
- Teste Themen-Cluster-Vollständigkeit
|
||||
- Teste Format-Mix-Abdeckung
|
||||
- _Requirements: 5.1–5.7_
|
||||
|
||||
- [ ] 7. Tracking Manager implementieren
|
||||
- [x] 7.1 `src/linkedin/tracking-manager.ts` erstellen
|
||||
- Funktion `addTrackingEntry(entry: TrackingEntry): void`
|
||||
- Funktion `getWeeklyReport(weekOf: string): WeeklyReport`
|
||||
- Funktion `getMonthlyTrend(month: string): MonthlyTrend`
|
||||
- YAML-Entities in `kb/tracking/` lesen/schreiben via `src/io/yaml-utils.ts`
|
||||
- Best-Practice-Markierung bei überdurchschnittlicher Engagement-Rate
|
||||
- Trend-Berechnung über Zeiträume
|
||||
- Empfehlungen für Content-Optimierung ableiten
|
||||
- _Requirements: 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.7_
|
||||
|
||||
- [x] 7.2 KB-Verzeichnis `kb/tracking/` anlegen und Graph-Index erweitern
|
||||
- Verzeichnis `kb/tracking/` mit `.gitkeep` erstellen
|
||||
- Entity-Typ `linkedin-tracking` in `kb/graph-index.yaml` dokumentieren
|
||||
- _Requirements: 8.6_
|
||||
|
||||
- [-] 7.3 Unit-Tests für Tracking Manager schreiben
|
||||
- Teste YAML-Serialisierung/Deserialisierung von Tracking-Entries
|
||||
- Teste Weekly-Report-Aggregation
|
||||
- Teste Monthly-Trend-Berechnung
|
||||
- Teste Best-Practice-Markierung
|
||||
- _Requirements: 8.1–8.7_
|
||||
|
||||
- [x] 8. Checkpoint — Alle Module validieren
|
||||
- Ensure all tests pass, ask the user if questions arise.
|
||||
|
||||
- [ ] 9. Kiro Skill erstellen und Module verdrahten
|
||||
- [-] 9.1 `SKILL.md` für linkedin-profile Skill erstellen
|
||||
- Datei: `.kiro/skills/linkedin-profile/SKILL.md`
|
||||
- Skill-Metadaten (name, description, activation: manual)
|
||||
- Workflow-Beschreibung: Profil-Generierung, Content-Strategie, Tracking
|
||||
- Inputs dokumentieren (personId, emphasis, quarter, etc.)
|
||||
- Outputs dokumentieren (profile-optimized.md, content-strategy.md, tracking-report.md)
|
||||
- Shared Modules referenzieren
|
||||
- Rules und Constraints definieren
|
||||
- Muster von `talk-intro/SKILL.md` folgen
|
||||
- _Requirements: 1.1–1.5, 2.1–2.7, 3.1–3.6, 4.1–4.5, 5.1–5.7, 9.1–9.6_
|
||||
|
||||
- [x] 9.2 Output-Verzeichnis `output/linkedin/` anlegen
|
||||
- Verzeichnis mit `.gitkeep` erstellen
|
||||
- _Requirements: 2.5, 5.7, 8.3_
|
||||
|
||||
- [x] 9.3 Profil-Output-Generierung verdrahten
|
||||
- Headline, About und Experience Generatoren zu `output/linkedin/profile-optimized.md` zusammenführen
|
||||
- Markdown-Template mit strukturierten Sektionen
|
||||
- Generierungsdatum und Validierungsstatus einbinden
|
||||
- _Requirements: 1.1–1.5, 2.1–2.7, 3.1–3.6_
|
||||
|
||||
- [x] 9.4 Content-Strategy-Output-Generierung verdrahten
|
||||
- Content Strategy Generator zu `output/linkedin/content-strategy.md` zusammenführen
|
||||
- Quartalsweise Template-Struktur
|
||||
- _Requirements: 5.1–5.7_
|
||||
|
||||
- [x] 9.5 Tracking-Report-Output-Generierung verdrahten
|
||||
- Tracking Manager zu `output/linkedin/tracking-report.md` zusammenführen
|
||||
- Wöchentliche und monatliche Reports
|
||||
- _Requirements: 8.1–8.7_
|
||||
|
||||
- [x] 10. Integration und Abschluss
|
||||
- [x] 10.1 Export in `src/index.ts` ergänzen
|
||||
- LinkedIn-Module exportieren
|
||||
- _Requirements: alle_
|
||||
|
||||
- [x] 10.2 Integrationstests schreiben
|
||||
- Teste End-to-End-Flow: KB lesen → Generierung → Output schreiben
|
||||
- Teste Constraint-Validierung im Gesamtfluss
|
||||
- Teste Tracking-Persistenz
|
||||
- _Requirements: 1.1–1.5, 2.1–2.7, 3.1–3.6, 8.1–8.7_
|
||||
|
||||
- [x] 11. Final Checkpoint — Alle Tests und Integration validieren
|
||||
- Ensure all tests pass, ask the user if questions arise.
|
||||
|
||||
## Notes
|
||||
|
||||
- Tasks marked with `*` are optional and can be skipped for faster MVP
|
||||
- Each task references specific requirements for traceability
|
||||
- Checkpoints ensure incremental validation
|
||||
- Unit tests validate specific examples and edge cases
|
||||
- The design has no Correctness Properties section, so no property-based tests are included
|
||||
- All modules follow the existing project patterns (see `src/intro/`, `src/cv/`)
|
||||
- YAML conventions from `.kiro/steering/kb-conventions.md` apply to tracking entities
|
||||
|
||||
## Task Dependency Graph
|
||||
|
||||
```json
|
||||
{
|
||||
"waves": [
|
||||
{ "id": 0, "tasks": ["1.1", "1.2"] },
|
||||
{ "id": 1, "tasks": ["1.3", "2.1", "7.2", "9.2"] },
|
||||
{ "id": 2, "tasks": ["2.2", "3.1", "5.1", "6.1"] },
|
||||
{ "id": 3, "tasks": ["3.2", "5.2", "6.2", "7.1"] },
|
||||
{ "id": 4, "tasks": ["7.3", "9.1"] },
|
||||
{ "id": 5, "tasks": ["9.3", "9.4", "9.5"] },
|
||||
{ "id": 6, "tasks": ["10.1"] },
|
||||
{ "id": 7, "tasks": ["10.2"] }
|
||||
]
|
||||
}
|
||||
```
|
||||
Reference in New Issue
Block a user