আপনার সর্বশেষ MCP আপনার সমস্ত সামাজিক পোস্ট পরিকল্পনা!

দ্বারা Nevo David8m2025/04/15
Read on Terminal Reader

অতিদীর্ঘ; পড়তে

Postiz একটি অ্যাপ্লিকেশন যা আপনাকে একক চ্যাট থেকে আপনার সমস্ত সামাজিক পোস্টগুলি পরিকল্পনা করতে দেয়. এটি NestJS এর সাথে তৈরি করা হয়েছে, তাই যখন একটি SSE রুট ব্যবহার করা হয়, তখন এটি দৃশ্যমান বন্ধ করে দেয়, যা আপনাকে মেমরি থেকে সবকিছু মুছে ফেলার অনুমতি দেয়।
featured image - আপনার সর্বশেষ MCP আপনার সমস্ত সামাজিক পোস্ট পরিকল্পনা!
Nevo David HackerNoon profile picture

সিনেমাটির শেষের দিকে তাকিয়ে আছি, কভারেজের জন্য দুঃখিত।


MCPs সব জায়গায় এবং একটি ভাল কারণ জন্য. এটি অ্যাপ্লিকেশনের বিবর্তনের পরবর্তী ধাপ।


কোনও অ্যাপ্লিকেশন অ্যাক্সেস ছাড়া একটি চ্যাট থেকে সবকিছু ব্যবহার করতে সক্ষম হওয়া।পোস্টচ্যাট থেকে আপনার সমস্ত সামাজিক পোস্টগুলি পরিকল্পনা করুন! তাই, আমি পোস্টকোডে খুঁজে পেতে শুরু করেছি এবং এটি যোগ করেছি!


MCPE

MCP রিপোজিটরটি একটু অদ্ভুত

প্রতিটি এমসিপি একটি পরিবহন আছে, যা আমাদের সিস্টেমের সাথে কথা বলার জন্য এলএলএম ব্যবহার করে।


There are two primary methods at the momentStdio, যা মূলত একটি কমান্ড লাইন, এবং SSE।


আমি সত্যিই বুঝতে পারি না কেন তারা এসএসই বেছে নিয়েছে - এটি মূলত একটি দীর্ঘ অনুরোধ যা কখনো শেষ হয় না এবং ক্লায়েন্টের জন্য ইভেন্টগুলি স্ট্রিম করে।


এই পদ্ধতির সমস্যা হল যে তথ্যকে সার্ভারে ফেরত পাঠানোর জন্য, আপনাকে অন্য একটি পোস্ট অনুরোধ পাঠাতে হবে (এসএসইএ একটি একদিকের যোগাযোগ হিসাবে), যার মানে আপনাকে স্টেট রাখতে হবে।


তাদের উদাহরণে, তারা অ্যাপ্লিকেশনের মেমরিটিতে স্টেট রাখে, এবং অনুমান করুন কি?


আমি WebSockets ব্যবহার করতাম. তাদের মধ্যে একটি ভিত্তিক ঘুম মোড রয়েছে, এবং আপনি এর জন্য একটি অবস্থা বজায় রাখতে হবে না।


গাছপালা

আমি অ্যান্ট্রোপিক টাইপস্ক্রিপ্ট এসডিকে গুঁড়ি এবং বিস্মিত ছিল না. এটা কঠিন অনুভূতি. অনেক জিনিসগুলি উৎপাদনে ব্যবহার করা হয় না, যেমন "রিসোর্স"। তারা আপনাকে বিশ্বব্যাপী সবকিছু মনে রাখার জন্য প্রয়োজন একটি বিপর্যয় ঘটতে অপেক্ষা করছে।


এছাড়াও, সনাক্তকরণ বাস্তবায়ন করা কঠিন এবং ব্যবহারকারীকে পরিস্থিতি থেকে বের করা যাতে আমরা তাদের বিবরণগুলি পেতে পারি।


আমি আমার নিজস্ব "ট্রান্সপোর্ট" বাস্তবায়ন করেছি rxjs পর্যবেক্ষণযোগ্য ব্যবহার করে - এটি মজার।

import EventEmitter from 'events';
import { finalize, fromEvent, startWith } from 'rxjs';

@Injectable()
export class McpService {
  static event = new EventEmitter();
  constructor(
    private _mainMcp: MainMcp
  ) {
  }

  async runServer(apiKey: string, organization: string) {
    const server = McpSettings.load(organization, this._mainMcp).server();
    const transport = new McpTransport(organization);

    const observer = fromEvent(
      McpService.event,
      `organization-${organization}`
    ).pipe(
      startWith({
        type: 'endpoint',
        data: process.env.NEXT_PUBLIC_BACKEND_URL + '/mcp/' + apiKey + '/messages',
      }),
      finalize(() => {
        transport.close();
      })
    );

    console.log('MCP transport started');
    await server.connect(transport);

    return observer;
  }

  async processPostBody(organization: string, body: object) {
    const server = McpSettings.load(organization, this._mainMcp).server();
    const message = JSONRPCMessageSchema.parse(body);
    const transport = new McpTransport(organization);
    await server.connect(transport);
    transport.handlePostMessage(message);
    return {};
  }
}

ডিজিটাল ডিজিটাল ️

আপনি যদি NestJS / Laravel / Spring মত OOP ফ্রেমওয়ার্কগুলির বড় ভক্ত হন তবে এটি আপনার জন্য।

  @McpTool({ toolName: 'POSTIZ_GET_CONFIG_ID' })
  async preRun() {
    return [
      {
        type: 'text',
        text: `id: ${makeId(10)} Today date is ${dayjs.utc().format()}`,
      },
    ];
  }

  @McpTool({ toolName: 'POSTIZ_PROVIDERS_LIST' })
  async listOfProviders(organization: string) {
    const list = (
      await this._integrationService.getIntegrationsList(organization)
    ).map((org) => ({
      id: org.id,
      name: org.name,
      identifier: org.providerIdentifier,
      picture: org.picture,
      disabled: org.disabled,
      profile: org.profile,
      customer: org.customer
        ? {
            id: org.customer.id,
            name: org.customer.name,
          }
        : undefined,
    }));

    return [{ type: 'text', text: JSON.stringify(list) }];
  }

@McpTool({
    toolName: 'POSTIZ_SCHEDULE_POST',
    zod: {
      type: eenum(['draft', 'scheduled']),
      configId: string(),
      generatePictures: boolean(),
      date: string().describe('UTC TIME'),
      providerId: string().describe('Use POSTIZ_PROVIDERS_LIST to get the id'),
      posts: array(object({ text: string(), images: array(string()) })),
    },
  })
  async schedulePost(
    organization: string,
    obj: {
      type: 'draft' | 'schedule';
      generatePictures: boolean;
      date: string;
      providerId: string;
      posts: { text: string }[];
    }
  ) {
    const create = await this._postsService.createPost(organization, {
      date: obj.date,
      type: obj.type,
      tags: [],
      posts: [
        {
          group: makeId(10),
          value: await Promise.all(
            obj.posts.map(async (post) => ({
              content: post.text,
              id: makeId(10),
              image: !obj.generatePictures
                ? []
                : [
                    {
                      id: makeId(10),
                      path: await this._openAiService.generateImage(
                        post.text,
                        true
                      ),
                    },
                  ],
            }))
          ),
          // @ts-ignore
          settings: {},
          integration: {
            id: obj.providerId,
          },
        },
      ],
    });

    return [
      {
        type: 'text',
        text: `Post created successfully, check it here: ${process.env.FRONTEND_URL}/p/${create[0].postId}`,
      },
    ];
  }

পুরো কোডটি পাওয়া যাবে পোস্টে এখানে:https://github.com/gitroomhq/postiz-app/tree/main/libraries/nestjs-libraries/src/mcp


আর এখানে :https://github.com/gitroomhq/postiz-app/tree/main/apps/backend/src/mcp


এলএমএল-এ কাজ করতে বাধ্য হন ৬৯

এটি আমাদের জিনিসগুলি অ্যাক্সেস করার আগে এলএলএমকে ভিন্ন জিনিসগুলি করার জন্য একটি ভিত্তিক বিকল্প থাকতে ভাল হবে।


যখনই আমি কুরসরকে আমার জন্য একটি পোস্ট পরিকল্পনা করার জন্য বলেছিলাম, সেটি ২০২৪ সালের জন্য পরিকল্পনা করার চেষ্টা করে।


আমি কিছু config বিস্তারিত পাস করতে হবে, তাই আমি তৈরি করেছিPOSTIZ_CONFIGURATION_PRERUNআশা করি, এলএলএম সবসময় জিনিসগুলি করার আগে এটি কল করবে।


কিন্তু এটি অনেকবার অবহেলা করেছিল (সাধারণ), তাই আমার সৃজনশীল হতে হয়েছিল।POSTIZ_SCHEDULE_POST, আমি একটি নতুন সম্পত্তি যোগ করেছি যা নামconfigIdConfig টুলের নাম পরিবর্তন করুনPOSTIZ_GET_CONFIG_ID.Config এর ফলাফল হল:id: ${makeId(10)} Today date is ${dayjs.utc().format()}

এটি LLM সবসময় এটি আগে কল করতে বাধ্য করেছিল, এবং তারিখটি নির্ধারিত ছিল! :)


এটা আমার জন্য আরও ভাল ছিল কারণ আমি জানতাম যে এটি আমাকে এখন থেকে ইউটিসি তারিখ পাঠাবে।


ব্যবহারের ঘটনা

আমি মনে করি এটি সর্বোত্তম কাজ করে যখন এটি একাধিক সরঞ্জামগুলির সাথে সংযুক্ত করা হয়, উদাহরণস্বরূপ:

  • এটি Cursor এর সাথে সংযুক্ত করুন এবং আজ আপনার কাজ সম্পর্কে একটি পোস্ট পরিকল্পনা করার জন্য অনুরোধ করুন।
  • এটি নোটিশে সংযুক্ত করুন এবং সামাজিক মিডিয়াতে টিমের সবচেয়ে সাম্প্রতিক কাজের পরিকল্পনা করুন - Composio MCPs চেক করুন।
  • এটি কোনও SaaS এর সাথে সংযুক্ত করুন যা CopilotKit আছে এবং অ্যাপ্লিকেশনের ভিত্তিতে পোস্টগুলি পরিকল্পনা করুন।

এমপিপি পোস্ট

পোস্টএটি সবচেয়ে শক্তিশালী ওপেন সোশ্যাল মিডিয়া পরিকল্পনা সরঞ্জাম - এবং এখন একমাত্র পরিকল্পনা সরঞ্জাম যা এমসিপি অফার করে (নাতনভাবে, Zapier বা এরকম কিছু না)


নতুন MCP দিয়ে, আপনি Cursor / Windsurf এবং Anthropic ক্লায়েন্ট থেকে আপনার সমস্ত পোস্টগুলি পরিকল্পনা করতে পারেন।


সবকিছু 100% বিনামূল্যে, অবশ্যই।


আপনি যদি এটি পছন্দ করেন, দয়া করে আমাদের স্টার করতে ভুলবেন না ⭐️https://github.com/githroomhq/অ্যাপ্লিকেশন


OG

Trending Topics

blockchaincryptocurrencyhackernoon-top-storyprogrammingsoftware-developmenttechnologystartuphackernoon-booksBitcoinbooks