Skip to main content
Glama

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.

Table of Contents

Related MCP server: YouTube Translate MCP

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:

    git clone https://github.com/NvkAnirudh/LinkedIn-Post-Generator.git
    cd LinkedIn-Post-Generator
  2. Install dependencies:

    npm install
  3. Create a .env file based on the example:

    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:

    npm run dev
  6. Test with MCP Inspector:

    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):

    {
      "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:

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 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, 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:

    npm install -g @smithery/cli
  3. Deploy the server:

    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 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

Available Tools

6 tools
check_api_keysD
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

extract_transcriptD
ParametersJSON Schema
NameRequiredDescriptionDefault
youtubeUrlYesYouTube video URL

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

generate_linkedin_postD
ParametersJSON Schema
NameRequiredDescriptionDefault
summaryYesSummary of the video content
videoTitleYesTitle of the YouTube video
speakerNameNoName of the speaker in the video (optional)
hashtagsNoRelevant hashtags (optional)
toneNoTone of the LinkedIn postfirst-person
includeCallToActionNoWhether to include a call to action

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_api_keysD
ParametersJSON Schema
NameRequiredDescriptionDefault
openaiApiKeyYesYour OpenAI API key
youtubeApiKeyNoYour YouTube API key (optional)

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

summarize_transcriptD
ParametersJSON Schema
NameRequiredDescriptionDefault
transcriptYesVideo transcript text
toneNoTone of the summaryprofessional
audienceNoTarget audience for the summarygeneral
wordCountNoApproximate word count for the summary

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

youtube_to_linkedin_postD
ParametersJSON Schema
NameRequiredDescriptionDefault
youtubeUrlYesYouTube video URL
toneNoTone of the LinkedIn postfirst-person
summaryToneNoTone of the summaryprofessional
audienceNoTarget audiencegeneral
hashtagsNoRelevant hashtags (optional)
includeCallToActionNoWhether to include a call to action

TDQS

D1/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Tool has no description.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness1/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Tool has no description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has no description.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Tool has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose1/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tool has no description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Tool has no description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

D1.9/5.0
Disambiguation4/5

Most tools have distinct purposes: checking/setting API keys, extracting/summarizing transcripts, generating posts, and a combined YouTube-to-post workflow. However, 'generate_linkedin_post' and 'youtube_to_linkedin_post' could cause some confusion about when to use each, as the latter might implicitly include extraction and summarization steps.

Naming Consistency4/5

Tool names follow a consistent snake_case pattern with clear verb-action structures (e.g., 'check_api_keys', 'extract_transcript'). The only minor deviation is 'youtube_to_linkedin_post', which uses a 'source_to_destination' format instead of a verb-noun style, but it remains readable and fits the overall convention.

Tool Count5/5

With 6 tools, this server is well-scoped for its purpose of generating LinkedIn posts from various inputs. Each tool appears to serve a specific function in the workflow, from API management to content processing and post generation, without being overly sparse or bloated.

Completeness3/5

The toolset covers key steps like API setup, content extraction, summarization, and post generation, but there are notable gaps. For example, there's no tool for editing or updating existing posts, managing drafts, or handling post scheduling, which could limit agent workflows in a complete LinkedIn posting lifecycle.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/NvkAnirudh/LinkedIn-Post-Generator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server