Skip to content

Built for people who want to own their automations. Join the waitlist for an invite.

Package listing

@kody/linkedin

src/create-article-post.ts

30 lines · 1.4 KB · TypeScript
import { createArticlePost, requireRecord, requireStringField } from './client.ts'
import type { CreateArticlePostInput } from './client.ts'

/**
 * Create or dry-run a personal-profile LinkedIn article link post.
 * @param params.url - Article URL to share.
 * @param params.title - Explicit link-card title; LinkedIn does not scrape Open Graph metadata.
 * @param params.description - Explicit link-card description.
 * @param params.thumbnailUrl - HTTPS image fetched and uploaded through LinkedIn's Images API.
 * @returns Dry-run preview or published post metadata when `confirm: true`.
 * @example
 * import createArticlePost from 'kody:@kody/linkedin/create-article-post'
 * const result = await createArticlePost({
 *   text: 'Read this',
 *   url: 'https://example.com',
 *   title: 'Example article',
 *   description: 'A useful article.',
 *   thumbnailUrl: 'https://example.com/thumbnail.jpg',
 *   dryRun: true,
 * })
 * // => { dryRun: true, body: { ... } }
 */
export default async function createArticlePostEntrypoint(params: Partial<CreateArticlePostInput> & Record<string, unknown> = {}) {
  const input = requireRecord(params, 'create-article-post')
  requireStringField(input, 'text', 'create-article-post')
  requireStringField(input, 'url', 'create-article-post')
	requireStringField(input, 'title', 'create-article-post')
	requireStringField(input, 'description', 'create-article-post')
  return createArticlePost(input)
}