npm package: @iflow-mcp/yt-to-linkedin-mcp
Description: [![MseeP.ai Security Assessment Badge](https://mseep.net/pr/nvkanirudh-linkedin-post-generator-badge.png)](https://mseep.ai/app/nvkanirudh-linkedin-post-generator)
Latest version: 1.0.0

[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/nvkanirudh-linkedin-post-generator-badge.png)](https://mseep.ai/app/nvkanirudh-linkedin-post-generator)

[![Verified on MseeP](https://mseep.ai/badge.svg)](https://mseep.ai/app/a222762a-577e-431d-a7d3-0b5474d7973e)

# LinkedIn Post Generator

[![smithery badge](https://smithery.ai/badge/@NvkAnirudh/linkedin-post-generator)](https://smithery.ai/server/@NvkAnirudh/linkedin-post-generator)

A Model Context Protocol (MCP) server that automates generating professional LinkedIn post drafts from YouTube videos. This tool streamlines content repurposing by extracting transcripts from YouTube videos, summarizing the content, and generating engaging LinkedIn posts tailored to your preferences.

<a href="https://glama.ai/mcp/servers/@NvkAnirudh/LinkedIn-Post-Generator">
  <img width="380" height="200" src="https://glama.ai/mcp/servers/@NvkAnirudh/LinkedIn-Post-Generator/badge" />
</a>

## Table of Contents
- [Features](#features)
- [Installation](#installation)
  - [Local Development](#local-development)
  - [Using with Claude Desktop](#using-with-claude-desktop)
- [Configuration](#configuration)
- [Usage](#usage)
  - [Available Tools](#available-tools)
  - [Workflow Example](#workflow-example)
- [Deployment](#deployment)
- [License](#license)

## Features

- **YouTube Transcript Extraction**: Automatically extract transcripts from any YouTube video
- **Content Summarization**: Generate concise summaries with customizable tone and target audience
- **LinkedIn Post Generation**: Create professional LinkedIn posts with customizable style and tone
- **All-in-One Workflow**: Go from YouTube URL to LinkedIn post in a single operation
- **Customization Options**: Adjust tone, audience, word count, and more to match your personal brand
- **MCP Integration**: Works seamlessly with AI assistants that support the Model Context Protocol

## Installation

### Local Development

1. Clone the repository:
   ```bash
   git clone https://github.com/NvkAnirudh/LinkedIn-Post-Generator.git
   cd LinkedIn-Post-Generator
   ```

2. Install dependencies:
   ```bash
   npm install
   ```

3. Create a `.env` file based on the example:
   ```bash
   cp .env.example .env
   ```

4. Add your API keys to the `.env` file:
   ```
   OPENAI_API_KEY=your_openai_api_key
   YOUTUBE_API_KEY=your_youtube_api_key
   ```

5. Run the server:
   ```bash
   npm run dev
   ```

6. Test with MCP Inspector:
   ```bash
   npm run inspect
   ```

### Using with Claude Desktop

This MCP server is designed to work with Claude Desktop and other AI assistants that support the Model Context Protocol. To use it with Claude Desktop:

1. Configure Claude Desktop by editing the configuration file at `~/Library/Application Support/Claude/claude_desktop_config.json` (Mac) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):

   ```json
   {
     "mcpServers": {
       "linkedin-post-generator": {
         "command": "npx",
         "args": [
           "-y",
           "@smithery/cli@latest",
           "run",
           "@NvkAnirudh/linkedin-post-generator",
           "--key",
           "YOUR_SMITHERY_API_KEY",
           "--config",
           "{\"OPENAI_API_KEY\":\"YOUR_OPENAI_API_KEY\",\"YOUTUBE_API_KEY\":\"YOUR_YOUTUBE_API_KEY\"}",
           "--transport",
           "stdio"
         ]
       }
     }
   }
   ```

   Replace:
   - `YOUR_SMITHERY_API_KEY` with your Smithery API key
   - `YOUR_OPENAI_API_KEY` with your OpenAI API key
   - `YOUR_YOUTUBE_API_KEY` with your YouTube API key (optional)

2. Restart Claude Desktop

3. In Claude Desktop, you can now access the LinkedIn Post Generator tools without needing to set API keys again

## Configuration

The application requires API keys to function properly:

1. **OpenAI API Key** (required): Used for content summarization and post generation
2. **YouTube API Key** (optional): Enhances YouTube metadata retrieval

You can provide these keys in three ways:

### 1. Via Claude Desktop Configuration (Recommended)

When using with Claude Desktop and Smithery, the best approach is to include your API keys in the Claude Desktop configuration file as shown in the [Using with Claude Desktop](#using-with-claude-desktop) section. This way, the keys are automatically passed to the MCP server, and you don't need to set them again.

### 2. As Environment Variables

When running locally, you can set API keys as environment variables in a `.env` file:
```
OPENAI_API_KEY=your_openai_api_key
YOUTUBE_API_KEY=your_youtube_api_key
```

### 3. Using the Set API Keys Tool

If you haven't provided API keys through the configuration or environment variables, you can set them directly through the MCP interface using the `set_api_keys` tool.

## Usage

### Available Tools

#### Set API Keys
- Tool: `set_api_keys`
- Purpose: Configure your API keys
- Parameters:
  - `openaiApiKey`: Your OpenAI API key (required)
  - `youtubeApiKey`: Your YouTube API key (optional)

#### Check API Keys
- Tool: `check_api_keys`
- Purpose: Verify your API key configuration status

#### Extract Transcript
- Tool: `extract_transcript`
- Purpose: Get the transcript from a YouTube video
- Parameters:
  - `youtubeUrl`: URL of the YouTube video

#### Summarize Transcript
- Tool: `summarize_transcript`
- Purpose: Create a concise summary of the video content
- Parameters:
  - `transcript`: The video transcript text
  - `tone`: Educational, inspirational, professional, or conversational
  - `audience`: General, technical, business, or academic
  - `wordCount`: Approximate word count for the summary (100-300)

#### Generate LinkedIn Post
- Tool: `generate_linkedin_post`
- Purpose: Create a LinkedIn post from a summary
- Parameters:
  - `summary`: Summary of the video content
  - `videoTitle`: Title of the YouTube video
  - `speakerName`: Name of the speaker (optional)
  - `hashtags`: Relevant hashtags (optional)
  - `tone`: First-person, third-person, or thought-leader
  - `includeCallToAction`: Whether to include a call to action

#### All-in-One: YouTube to LinkedIn Post
- Tool: `youtube_to_linkedin_post`
- Purpose: Complete workflow from YouTube URL to LinkedIn post
- Parameters:
  - `youtubeUrl`: YouTube video URL
  - `tone`: Desired tone for the post
  - Plus additional customization options

### Workflow Example

1. Set your API keys using the `set_api_keys` tool
2. Use the `youtube_to_linkedin_post` tool with a YouTube URL
3. Receive a complete LinkedIn post draft ready to publish

## Deployment

This server is deployed on [Smithery](https://smithery.ai), a platform for hosting and sharing MCP servers. The deployment configuration is defined in the `smithery.yaml` file.

To deploy your own instance:

1. Create an account on Smithery
2. Install the Smithery CLI:
   ```bash
   npm install -g @smithery/cli
   ```
3. Deploy the server:
   ```bash
   smithery deploy
   ```

## Contributing

Contributions are welcome and appreciated! Here's how you can contribute to the LinkedIn Post Generator:

### Reporting Issues

- Use the [GitHub issue tracker](https://github.com/NvkAnirudh/LinkedIn-Post-Generator/issues) to report bugs or suggest features
- Please provide detailed information about the issue, including steps to reproduce, expected behavior, and actual behavior
- Include your environment details (OS, Node.js version, etc.) when reporting bugs

### Pull Requests

1. Fork the repository
2. Create a new branch (`git checkout -b feature/your-feature-name`)
3. Make your changes
4. Run tests to ensure your changes don't break existing functionality
5. Commit your changes (`git commit -m 'Add some feature'`)
6. Push to the branch (`git push origin feature/your-feature-name`)
7. Open a Pull Request

### Development Guidelines

- Follow the existing code style and conventions
- Write clear, commented code
- Include tests for new features
- Update documentation to reflect your changes

### Feature Suggestions

If you have ideas for new features or improvements:

1. Check existing issues to see if your suggestion has already been proposed
2. If not, open a new issue with the label 'enhancement'
3. Clearly describe the feature and its potential benefits

### Documentation

Improvements to documentation are always welcome:

- Fix typos or clarify existing documentation
- Add examples or use cases
- Improve the structure or organization of the documentation

By contributing to this project, you agree that your contributions will be licensed under the project's MIT License.

## License

[MIT](https://github.com/NvkAnirudh/LinkedIn-Post-Generator/blob/main/LICENSE)