原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"automation",
"instagram",
"n8n",
"n8n-community-node",
"social-media",
"tiktok",
"youtube",
"upload-post"
],
"is_fork": false,
"size_kb": 425,
"has_wiki": true,
"homepage": "https://upload-post.com",
"languages": {
"Shell": 1547,
"JavaScript": 9747,
"TypeScript": 156078
},
"pushed_at": "2026-07-20T20:37:15Z",
"created_at": "2025-04-21T17:29:03Z",
"owner_type": "Organization",
"updated_at": "2026-07-20T20:38:11Z",
"description": "🚀 Official n8n community node for Upload-Post API. Schedule & publish to TikTok, Instagram, YouTube, LinkedIn, X, Facebook, Pinterest, Threads, Reddit & Bluesky from your n8n workflows.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "TypeScript",
"significant_languages": [
"TypeScript"
]
},
"owner": {
"blog": "https://upload-post.com",
"name": "Upload-post",
"type": "Organization",
"login": "Upload-Post",
"company": null,
"location": null,
"followers": 40,
"avatar_url": "https://avatars.githubusercontent.com/u/206099361?v=4",
"created_at": "2025-04-03T15:05:01Z",
"is_verified": null,
"public_repos": 13,
"account_age_days": 479
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v0.1.39",
"kind": "patch",
"published_at": "2026-02-06T12:34:26Z"
},
{
"tag": "v0.1.38",
"kind": "patch",
"published_at": "2026-02-04T07:33:54Z"
},
{
"tag": "v0.1.37",
"kind": "patch",
"published_at": "2026-02-04T00:15:43Z"
}
],
"recent_commits": [
{
"oid": "d7ff7bc2a69f051fa7ab18dca2a7cbda0881f6de",
"body": "The Autogenerate Copy With AI field removal left an extra closing\nbrace that broke the properties array and blocked the v0.1.55 npm\npublish pipeline.",
"is_bot": false,
"headline": "fix: restore TS syntax after removing autogenerate property",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-20T20:37:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df60d51cd65b398e46eb85dad72545af4289a0f8",
"body": null,
"is_bot": false,
"headline": "fix: remove remaining autogenerate formData block",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-20T20:15:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a5740988aca54204c4e3921cc4432a87088538a1",
"body": null,
"is_bot": false,
"headline": "chore: remove Autogenerate Copy With AI option (v0.1.55)",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-20T20:15:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c2b575ce0f8dac376e27ce14bcfd78c01bc56346",
"body": "New 'YouTube Playlist ID' field maps to youtube_playlist_id (comma-separated\nfor multiple). Integrates PR #86 (rebased onto main). Bumps 0.1.53 -> 0.1.54.",
"is_bot": false,
"headline": "feat(youtube): expose Playlist ID field for video uploads (v0.1.54)",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-18T02:02:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b6e443f878981183d181e7aeaa9619e3d439420c",
"body": "…rg/company pages\n\nLinkedIn's API does not expose member-level analytics to standard apps.\nVerified live against production tokens (2026-07-18): personal post/share stats\nrequire r_member_social (we only hold w_member_social) -> HTTP 400, and the\nfirst-degree connection count requires the partner-only r_1st_connections_size\n-> HTTP 403. Personal profiles therefore return no analytics. Stop implying\notherwise; only organization/company pages the member administers are supported.",
"is_bot": false,
"headline": "fix(linkedin-analytics): personal profiles have no analytics — only o…",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-18T00:31:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c9d213115617a3b49ef06753fc8af538a1a24805",
"body": "- Support maps, platform dropdown and per-platform title override\n properties for the 9 new channels; fixes for four broken operations,\n double-post on retry, Google Business post types.\n\nCo-Authored-By: Claude Fable 5 <noreply@anthropic.com>",
"is_bot": false,
"headline": "release: 0.1.53 — 9 new platforms (staging → main)",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-16T10:32:07Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "07f9a25538d9333cc7b8d5d415559fad8ba35dea",
"body": "…ypes\n\nVerified against production (unauthenticated probes distinguish 404 from\n401/405) and against the backend handlers:\n\n- Edit Scheduled Post sent POST; the route is PATCH-only, so it always 405'd.\n A timezone-only edit also sent nothing, because the timezone was read\n inside the 'if new date'\n[…]\n\nmedia posts were unreachable. Facebook analytics silently failed without the\nrequired page_id; the node now asks for it up front.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: four operations that could never succeed; Google Business post t…",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-09T10:06:44Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "ba2db1f790590a54cb5863bf099f8fe9ea9ea6e3",
"body": "`npm install -g npm@latest` leaves the global npm missing 'sigstore', so\n`npm publish --provenance` dies with MODULE_NOT_FOUND. Node 24 already\nships npm 11, which is new enough for trusted publishing.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: use Node 24's bundled npm instead of upgrading in place",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-09T09:09:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "673935e355d85a91e02f53732228f8347f5c6b55",
"body": "The classic token authenticates but npm demands an OTP on publish (EOTP),\nand npm now discourages the 2FA-bypass token for CI. Trusted publishing\nswaps the token for a short-lived OIDC token minted by GitHub, so there is\nnothing left to expire — which is what broke publishing twice already.\n\nRequires npm >= 11.5.1, hence the explicit upgrade step, and Node >= 22.14.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: publish via npm trusted publishing (OIDC)",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-09T08:30:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ccc2f73c638c4744a96cc3484bb6a49f8804be0b",
"body": "Uploads now carry an Idempotency-Key derived from the execution, node and\nitem index. The API collapses duplicates within 24h, but only when the\nclient sends a stable key across retries; the node sent none, so an n8n\n\"Retry On Fail\" after a timeout published the post a second time.\n\nWait for Complet\n[…]\n Get Post Analytics, Get Post Analytics by Platform ID, Get Total\nImpressions, Get Platform Metrics and Get Reddit Detailed Posts.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: stop retried uploads from posting twice; expand analytics",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-09T08:16:25Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "5493b9965b9099b6ad12391f590263e47d8b14d6",
"body": "npm returns a masked 404 on the publish PUT when NODE_AUTH_TOKEN is\ninvalid, which made the last three release failures hard to read.\nFail on `npm whoami` instead.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci: verify npm auth before publish",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-07-09T08:06:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e238b9b64d771029125b2c89474e021a04dce1f9",
"body": "Release Staging to Production",
"is_bot": false,
"headline": "Merge pull request #88 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-06-14T11:32:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7940648a4273c6ffe5bff74e11edb1993354fd71",
"body": "…> 0.1.50\n\nNew boolean \"Autogenerate Copy With AI\" on Upload Video/Photos -> sends autogenerate=true\nso the server generates native per-platform title/description from the media and fills\nblank fields.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: Autogenerate Copy With AI option on upload nodes; bump 0.1.49 -…",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-06-12T21:53:20Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "117d07b95ee05518569bc2ba67b540b4e145b3e3",
"body": "Append Discord and Telegram to the uploadPhotos/uploadText/uploadVideo\noperation descriptions, the generate-JWT platforms picker, and the\nREADME/AGENTS supported-platform lists.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "Add Discord and Telegram to supported platforms",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-06-10T18:26:26Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c710ea6989b079aa5767e1dcc8022fddbedb019d",
"body": "Add 'discord' and 'telegram' as supported platforms for uploadPhotos,\nuploadVideo and uploadText in the UploadPost node. Both expose TEXT,\nPHOTO and VIDEO capabilities via the platform support map, the dynamic\ngetPlatforms options list and its per-operation support map.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: support Discord and Telegram platforms",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-06-10T15:35:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "748a7bf04a67238d8c6ce44e286f5e2d56b1ad72",
"body": "Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(release): 0.1.49 — Language option in Generate JWT",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-06-02T21:12:30Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c18350e89e3da913a2ca13493185364a0584f250",
"body": "New Language dropdown (Auto-Detect default, en/es/de/fr/pt) on the\nGenerate JWT operation, forwarded as `language` to force the white-label\nconnect page language.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add Language option to Generate JWT operation",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-06-02T20:33:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ec2a26e5f56367b667fcea72f922744bd2eaa919",
"body": "Cuts a release with the latest staging features:\n- feat(youtube): add subtitle upload support to n8n node (#84)\n- feat(platforms): expose Google Business in platform dropdown\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump version to 0.1.48",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-05-18T14:23:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "2c75cb2f7a31130f720a74e5731819323084c8af",
"body": "Release Staging to Production",
"is_bot": false,
"headline": "Merge pull request #87 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-05-18T14:16:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0602e40874db1cd2474f22a36b719c0ac99e4739",
"body": "Add YouTube subtitle parameters (languages, names, files) to the Upload Video\noperation. Supports multiple tracks via comma-separated values.\n\nCo-Authored-By: Claude (noreply@anthropic.com)\n\nCo-authored-by: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(youtube): add subtitle upload support to n8n node (#84)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-05-18T12:25:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "a941ad9cd893efc71d3fa2dcc82a53b752376ec4",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into staging",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2026-05-17T22:29:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "90f118353f4cc079b4cd3018887d7e8b908a2d57",
"body": "The backend already supported google_business in PLATFORM_SUPPORT and\napplyGoogleBusinessOptions, but getPlatforms() loadOptions omitted it\nfrom the dropdown, forcing users to fall back to Manual Entry.\n\nBumps version to 0.1.46.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(platforms): expose Google Business in platform dropdown",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-05-17T10:37:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b37e0427cc452f0fa7547767ac9a1942b9cf5720",
"body": "Restored NODE_AUTH_TOKEN auth since npm requires it even with OIDC\nfor the actual publish. Provenance is still enabled.\n\nCo-Authored-By: Harry (noreply@anthropic.com)",
"is_bot": false,
"headline": "fix(ci): use NPM_TOKEN with provenance",
"author_name": "root",
"author_login": null,
"committed_at": "2026-05-04T08:13:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a03d94cb65cb69ddfa3f9f95cb6845ba1bef0f9",
"body": "setup-node creates a .npmrc with auth config that interferes with\nOIDC trusted publishing. Remove it before publishing so npm uses\nonly the OIDC token.\n\nCo-Authored-By: Harry (noreply@anthropic.com)",
"is_bot": false,
"headline": "fix(ci): clean npmrc before OIDC publish",
"author_name": "root",
"author_login": null,
"committed_at": "2026-05-04T08:09:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4077f7a4575cbbc0a7b0cb95c8431513864ee11",
"body": "The NODE_AUTH_TOKEN keeps being injected (likely from org-level secret).\nExplicitly unset it so npm uses OIDC trusted publishing instead.\n\nCo-Authored-By: Harry (noreply@anthropic.com)",
"is_bot": false,
"headline": "fix(ci): force OIDC by unsetting NODE_AUTH_TOKEN",
"author_name": "root",
"author_login": null,
"committed_at": "2026-05-04T08:07:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8d490add92469bf0ffdeacad47b2fdaec40bb0b6",
"body": "npm no longer allows creating classic publish tokens.\nTrusted publishing via OIDC is the recommended approach.\nRequires configuring the package on npm.js to trust this GitHub workflow.\n\nCo-Authored-By: Harry (noreply@anthropic.com)",
"is_bot": false,
"headline": "fix(ci): restore OIDC trusted publishing with provenance",
"author_name": "root",
"author_login": null,
"committed_at": "2026-05-04T07:59:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1eee134d8138f4832327c981bc562592fd6972b",
"body": "The workflow had the NPM_TOKEN secret configured but never referenced it.\nThis caused all publish attempts to fail with 404 because npm was\npublishing anonymously.\n\nCo-Authored-By: Harry (noreply@anthropic.com)",
"is_bot": false,
"headline": "fix(ci): add NPM_TOKEN auth to publish workflow",
"author_name": "root",
"author_login": null,
"committed_at": "2026-05-04T07:57:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a87804071977b4f59614e061d3a6b719e28060b7",
"body": null,
"is_bot": false,
"headline": "fix: eslint title case fix",
"author_name": "root",
"author_login": null,
"committed_at": "2026-04-14T16:24:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51bed2bf47eea97225e58effed262a6b2da2d6e7",
"body": null,
"is_bot": false,
"headline": "fix: use IDataObject type for notification body",
"author_name": "root",
"author_login": null,
"committed_at": "2026-04-14T16:19:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "562b6302ed393e753216e4aa7ca992ffd8f3d8ab",
"body": null,
"is_bot": false,
"headline": "fix: remove broken npm update step from CI workflow",
"author_name": "root",
"author_login": null,
"committed_at": "2026-04-14T16:16:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f65233eb4ac388423b5cd7dc5daf0e9d84161e25",
"body": null,
"is_bot": false,
"headline": "feat: add user preferences operations + bump to v0.1.46",
"author_name": "root",
"author_login": null,
"committed_at": "2026-04-14T15:56:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c486233077793b2a986fcf8efe6a8c88907bab6",
"body": "Release Staging to Production",
"is_bot": false,
"headline": "Merge pull request #85 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-04-14T14:56:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d35e3a997c0d068ec12c3abcb1cc96f37b8e38f",
"body": "…#82)\n\nAdd Get/Update Notification Preferences operations to the User resource.\nUsers can configure webhook URL and select which events to subscribe to\n(upload_completed, social_account.connected, social_account.disconnected,\nsocial_account.reauth_required).\n\nCo-Authored-By: Claude (noreply@anthropic.com)\n\nCo-authored-by: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(webhooks): add notification preferences operations to n8n node (…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-04-14T00:57:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4d7f0a5c0a8c90fbe6dacfd06c162ae6a12d8895",
"body": "Add Instagram resource with Get Post Comments, Private Reply to\nComment, and Public Reply to Comment operations to the n8n node.\n\nCo-Authored-By: Claude (noreply@anthropic.com)\n\nCo-authored-by: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(instagram): add Instagram resource with comment operations (#83)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-04-14T00:38:25Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ddf76e26f9c66cfc7436676b8194807a535a5ff4",
"body": "* feat(instagram): support binary data for Instagram Reels cover image\n\nAdd binary property detection for instagramCoverUrl field using isUrlString(),\nmatching the existing YouTube thumbnail pattern. When a binary property name\nis provided instead of a URL, the image is sent as a multipart file uplo\n[…]\nuthored-By: Claude (noreply@anthropic.com)\n\n* fix(instagram): tighten cover field description\n\nCo-Authored-By: Claude (noreply@anthropic.com)\n\n---------\n\nCo-authored-by: Claude <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(instagram): support binary data for Instagram Reels cover (#81)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-04-14T00:38:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "2643b9106dcd729a7aecf0d9dc647ec60790db13",
"body": "Release Staging to Production",
"is_bot": false,
"headline": "Merge pull request #80 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-04-13T21:28:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3fade22fc0c785f5bedc17576c34c503c838181",
"body": "…llUploadStatus (#79)\n\nThe pollUploadStatus function only recognized 'success', 'completed', 'failed', and 'error'\nas terminal statuses. When a post is scheduled for the future, the API returns 'scheduled',\n'queued', or 'pending' status, none of which triggered the polling loop to break. This caused\n[…]\ng' to the terminal status list so the node returns\nimmediately when a post is confirmed as scheduled.\n\nCo-Authored-By: Claude (noreply@anthropic.com)\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "fix(polling): add scheduled/queued/pending as terminal statuses in po…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-04-13T19:15:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "545481cebeabed4a7577b1be74ea92303d7e77df",
"body": null,
"is_bot": false,
"headline": "chore: bump to 0.1.45",
"author_name": "root",
"author_login": null,
"committed_at": "2026-03-31T15:28:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "396abadb6f730dff81dbcac5a79af7a263f3c87f",
"body": "… + bump to 0.1.44",
"is_bot": false,
"headline": "fix: lint errors (sort options alphabetically, remove required:false)…",
"author_name": "root",
"author_login": null,
"committed_at": "2026-03-31T15:25:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c9fd1305ee30e6acdfdcacf94e7766441ea85e8",
"body": null,
"is_bot": false,
"headline": "chore: trigger redeploy",
"author_name": "root",
"author_login": null,
"committed_at": "2026-03-16T17:49:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d3cd5e47b8bed21feb39577e614de01b1717c1f8",
"body": "Release Staging to Production",
"is_bot": false,
"headline": "Merge pull request #77 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-03-16T17:23:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3a2cca8920f5f9a1b35353f7489a4a554961061c",
"body": "Add threadsTopicTag parameter to the UploadPost node, allowing users\nto specify a topic tag (1-50 chars) for Threads posts across photo,\nvideo, and text upload operations. The tag is sent as threads_topic_tag\nin the form data to improve post discoverability on Threads.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(threads): add topic tag parameter for Threads posts (#76)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-03-13T13:19:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "790919c6fe4f4319cf99f0bf96c7931525003e21",
"body": "…ccounts (#75)\n\nAllow users to specify a Google Business Profile location ID when\nuploading content, enabling support for accounts with multiple\nlocations. If omitted, the default connected location is used.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(google-business): add location ID parameter for multi-location a…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-03-13T13:18:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "527c7af5d39895e557ca0d37e8f144e8c258e952",
"body": "…ge: (#74)\n\nfeat(clients): add get_job_status method across Python, npm, and n8n clients\n\nThe /api/uploadposts/status endpoint accepts both request_id and job_id\nparameters. Previously, only request_id lookups were supported in the\nclient libraries. This adds a dedicated get_job_status method so users\ncan check the status of scheduled or queued posts using job_id.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>\nCo-authored-by: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "Based on the diff provided and the file list, here's the commit messa…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-03-13T13:16:55Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4e850e8227e1ed826440d5e276a3865cbdf41691",
"body": "Add LinkedIn-specific first comment override parameter to the n8n node,\nallowing users to set a dedicated first comment for LinkedIn that\noverrides the generic first comment field.\n\nSupports uploadPhotos, uploadVideo, uploadText, and uploadDocument\noperations.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(linkedin): add first_comment support for LinkedIn posts (#73)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-03-13T13:16:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "adc726aaa3d8d23b86e9434e791bbc51523ddf76",
"body": "Release Staging to Production",
"is_bot": false,
"headline": "Merge pull request #72 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-03-04T09:36:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46b4896a1f89be71c4227f3abd446a46a60724ff",
"body": "…first-comment-images-7e2c9168\n\nAdd Reddit link posts & first comment images",
"is_bot": false,
"headline": "Merge pull request #71 from Upload-Post/ai-feature-reddit-link-posts-…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-27T13:30:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e1f11ebcbb6ac5e34444e099822e79c58608ad1",
"body": "…-tolowercase-crash-7c9bdd10\n\nFix binary data .toLowerCase() crash",
"is_bot": false,
"headline": "Merge pull request #69 from Upload-Post/ai-fix-n8n-upload-node-binary…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-27T13:30:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a2c20b59381ba94f3e7b865e81c9af268aad65c",
"body": "Add redditLinkUrl field to the uploadText operation, allowing users\nto create Reddit link posts with URL preview cards instead of plain\ntext posts. The reddit_link_url is passed to the API when provided.",
"is_bot": false,
"headline": "feat(reddit): add link URL parameter for Reddit link posts",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2026-02-27T11:24:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c00e5c51e98599fa08881f041cd38052511285e2",
"body": "When binary data (Buffer) is passed instead of a URL string, calling\n.toLowerCase() directly on the value causes a runtime crash. Extract\nURL detection into a type-safe isUrlString() helper that checks for\nstring type before calling .toLowerCase(), and add a typeof guard to\nthe status polling comparison.",
"is_bot": false,
"headline": "fix(upload): guard .toLowerCase() calls against non-string binary data",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2026-02-27T09:07:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76184d02759ceacb24988ca3c832941f7eaa7669",
"body": "Release Staging to Production",
"is_bot": false,
"headline": "Merge pull request #68 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-24T10:26:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7cde189e7e6232bb9f10381534e0d1bae30f12e7",
"body": null,
"is_bot": false,
"headline": "chore: sync changes to staging",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-02-23T18:59:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18e64f319b9b685792558ba68108771413612704",
"body": "Add maxPostsPerSlot option to the n8n node that allows limiting\nthe number of posts assigned to each queue slot. When enabled\nand set above 0, the value is sent as max_posts_per_slot in the\nupload form data, overriding the profile-level default.\n\nThe field is conditionally displayed only when Add to Queue is enabled.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(queue): add max posts per slot parameter for queue uploads (#67)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-23T00:10:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e1a152ee3922d33bb24b1b01cce996939c86456b",
"body": "…rigin (#66)\n\nIntroduce request source tracking across all API clients (n8n, npm, pip)\nand the backend to distinguish how users interact with the platform.\n\n- Add X-Upload-Post-Source header to n8n node credentials and status polling\n- Add same header to npm and pip client libraries\n- Backend detects source via header, form field, or User-Agent fallback\n- Persist source field in upload stats for analytics and usage reporting\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(tracking): add X-Upload-Post-Source header to identify request o…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-23T00:07:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6fb85062b6e54bd92d8eec3d66b827a5e10d25a6",
"body": "…#65)\n\nAdd linkedin_link_url and bluesky_link_url parameters to the uploadText\noperation, enabling rich link preview cards (title, description, thumbnail)\nwhen posting text to LinkedIn and Bluesky platforms.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(uploadText): add link preview support for LinkedIn and Bluesky (…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-20T14:48:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18551c40366c37199c7929a82f125a5b53a3793b",
"body": "Make the title parameter non-required for platforms like TikTok,\nInstagram, Facebook, and others where it is optional. Only send\ntitle in form data when a value is provided.\n\nAdd character limit documentation to TikTok title field description\n(90 chars for photos, 2200 for videos) and clarify which platforms\nrequire titles (YouTube, Reddit, text posts) vs optional.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(tiktok): make title optional and document character limits (#64)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-20T14:47:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f60ee3e77347dc6f610e6e62f68f69e6bcd1b761",
"body": "…ules",
"is_bot": false,
"headline": "fix(lint): prefix boolean description with 'Whether' per n8n eslint r…",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-12T18:08:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "58ea6192c0e824a252d33cf93e38d2710f0e98c6",
"body": "Release Staging to Production",
"is_bot": false,
"headline": "Merge pull request #61 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-12T18:04:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "abc47ba010ceaa2a566ed7b15e810d30d6e551be",
"body": "…oads\n\nAdd a new parameter to control how media items are distributed across\nThreads posts, following the same pattern as x_thread_image_layout.\nEach value can be 1-10. Bump version to 0.1.43.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: add threads_thread_media_layout parameter for Threads photo upl…",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2026-02-12T17:37:18Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "25155a347c3748c2a386da28eb37a3f88684cd3d",
"body": "…(#59)\n\n- Add facebookThumbnailUrl parameter for custom thumbnails on Facebook page videos\n- Add xThreadImageLayout parameter to control image distribution across X tweet threads\n- Support new VIDEO media type option for Facebook video uploads\n- Enable fine-grained control over multi-image posts on X platform\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat: add Facebook video thumbnail and X thread image layout options …",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-09T13:06:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3e7dd2ce40008e407888975423e3ee5c0658f65",
"body": "Add new parameters to JWT generation endpoint for white-label calendar\nsharing: showCalendar, readonlyCalendar, connectTitle, and\nconnectDescription. Enables users to display a read-only calendar view\nto end clients without requiring account connection or editing\ncapabilities.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(uploadpost): support read-only calendar for white-label (#57)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-06T13:40:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "310ae29c9d11c9100b7ef237f17d12dee093a54e",
"body": null,
"is_bot": false,
"headline": "fix: remove superfluous required:false to pass n8n lint, bump v0.1.42",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-06T13:21:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c7f4b5af1dac8172b593069a68ce6ef1dd89099d",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.1.41",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-06T13:18:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4facd0d7b61d7a6a655e23a18368702b6653be54",
"body": null,
"is_bot": false,
"headline": "chore: remove backup file",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-06T13:13:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "57409b3b26bb03388f54d489a3745bc5b14b2dfc",
"body": "… Manual Entry fields\n\n- Restore original displayOptions for facebookPageIdManual, targetLinkedinPageIdManual, pinterestBoardIdManual (sub-select dependent)\n- Add new fields for Manual Platform mode: targetLinkedinPageIdManualEntry, facebookPageIdManualEntry, pinterestBoardIdManualEntry\n- These only show when 'Manual Entry (all fields)' platform is selected\n- Update apply*Options functions to read from ManualEntry fields when in manual platform mode\n- TypeScript compiles clean",
"is_bot": false,
"headline": "fix: restore sub-select conditions for platform fields, add dedicated…",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-06T13:13:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ab030cc44bf17ff02e06d25b2587b2199cf06b1",
"body": "- Add 'Manual Entry (all fields)' option to platform selector\n- When selected, shows ALL platform-specific fields (titles, descriptions, page IDs, etc.)\n- Make platform-specific required fields optional (LinkedIn Page, Facebook Page, Reddit Subreddit, Pinterest Board)\n- Remove sub-select dependencies for manual entry fields\n- Normal platform selection unchanged - still shows only relevant fields\n\nThis enables AI agents in n8n to use Upload Post as a tool with full access to all parameters.",
"is_bot": false,
"headline": "feat: add Manual Entry platform option for AI agent tool compatibility",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-06T13:04:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "972fc18b325d9ec1e63793507845d8ef91898793",
"body": "Enables the Upload Post node to be used as a tool by AI agents in n8n.\nCloses #11",
"is_bot": false,
"headline": "feat: add usableAsTool for AI agent compatibility in n8n",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-06T12:40:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e81c1bb20123b93640f187a495e7305049c96563",
"body": null,
"is_bot": false,
"headline": "ci: auto-publish on push to main when version changes",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-06T12:37:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fda86e704102d8f33b2b450dfa303cc0c1fd08dc",
"body": "Fixes icon not loading in n8n node listing. The SVG file is lowercase but the reference was capitalized.",
"is_bot": false,
"headline": "fix: correct icon filename case (UploadPost.svg -> uploadpost.svg)",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-06T12:34:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de0bd89e77926d8c852a6b291ca312682436ed10",
"body": "Add Instagram Trial Reels functionality with three posting modes for Reels uploads:\n- CUSTOM: Regular Reel (default)\n- TRIAL_REELS_SHARE_TO_FOLLOWERS_IF_LIKED: Auto-share if performs well\n- TRIAL_REELS_DONT_SHARE_TO_FOLLOWERS: Manual decision later\n\nTrial Reels enable content creators to test videos\n[…]\n non-followers first before deciding whether to share with their followers, allowing better content performance validation before wider distribution.\n\nCo-authored-by: AI Coder Bot <ai-coder@bot.local>",
"is_bot": false,
"headline": "feat(instagram): Add Trial Reels support (#55)",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2026-02-04T09:54:37Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "f887cab5531461b12ae87363854c8966f175efc4",
"body": null,
"is_bot": false,
"headline": "chore: bump to 0.1.38",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-04T07:33:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b113d419fa2ea1d4ed94f190e93b72e7ef69d1b9",
"body": "Closes #13 - Users can now upload photos to Facebook Stories",
"is_bot": false,
"headline": "feat(facebook): add media_type option for photos (POSTS/STORIES)",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-04T07:29:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "44e12d5c62520b44debdf0079e938dc04fe2827c",
"body": null,
"is_bot": false,
"headline": "ci: fix npm version for trusted publishing (requires 11.5.1+)",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-04T00:22:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab5ae3365f1f92352f95c9e9c005debbf50cc5d3",
"body": null,
"is_bot": false,
"headline": "chore: bump version to 0.1.37",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-04T00:15:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22ec0330a7c8c5c8821b6b7a474360786038afb1",
"body": null,
"is_bot": false,
"headline": "ci: add manual trigger with dry-run for testing",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-04T00:08:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3a3097e09e5c3ca88e61b84e78f22b4efbaed56",
"body": null,
"is_bot": false,
"headline": "ci: switch to OIDC trusted publishing (no tokens needed)",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-03T23:53:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4effd2ce62c49732a20906bff3af71e451c7cd89",
"body": null,
"is_bot": false,
"headline": "ci: add auto-publish to npm on release",
"author_name": "root",
"author_login": null,
"committed_at": "2026-02-03T23:52:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "850dc1ec507ddfbf575b1a2de4dbf51b083ec30c",
"body": "Add 'Add to Queue' boolean parameter to upload operations that allows users to queue posts instead of posting immediately. Posts will be automatically scheduled to the next available queue slot.\n\nBased on user feedback requesting a Buffer-like queue system for improved content scheduling workflow.",
"is_bot": false,
"headline": "feat(uploadpost): add queue option for post scheduling",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2026-01-26T13:59:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ddf70bdb2e5742544775fdfb32e9b2f52b4f6209",
"body": "Add platform-specific first comment field overrides for Instagram, Facebook, X, Threads, YouTube, Reddit, and Bluesky. This allows each platform to have its own first comment configuration rather than using a single generic field across all platforms.\n\nThe implementation includes a new FIRST_COMMENT\n[…]\ncific overrides to form data, and individual form field definitions for each platform's first comment handling. This enables more granular control over platform-specific behavior when posting content.",
"is_bot": false,
"headline": "feat(UploadPost): add platform-specific first comment field overrides",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2026-01-26T11:58:54Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "d13f82056af1647891c02dbfb04e0c7b738f0a7d",
"body": null,
"is_bot": false,
"headline": "0.1.36",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-28T04:09:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2081eb86ce9a70c77935bd16567b97d439679a1d",
"body": "AI: Implemented features for añadir a la api de linkedin que se pueda…",
"is_bot": false,
"headline": "Merge pull request #45 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2025-12-28T04:08:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "51583a3f2df904f540247d2744ce34d9aba048f8",
"body": "…n subir pdfs",
"is_bot": false,
"headline": "AI: Implemented features for añadir a la api de linkedin que se pueda…",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2025-12-28T02:03:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "697f75ac63bf6e7f77ef05d722fae7d1580c9077",
"body": null,
"is_bot": false,
"headline": "0.1.35",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-28T01:48:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c67d596443dfa9129635b57b271e76fdc2e9f019",
"body": "AI: Implemented features for Upload-Post node in n8n x_long_text_as_p…",
"is_bot": false,
"headline": "Merge pull request #44 from Upload-Post/ai--d4ea209f",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2025-12-28T01:47:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d9e857e0922d12f2eda83c6b1faca42176865528",
"body": "…ost=true option only appears when using the \"Upload Text\" action, but not the \"Upload Photos\" action.",
"is_bot": false,
"headline": "AI: Implemented features for Upload-Post node in n8n x_long_text_as_p…",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2025-12-28T01:44:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dbb92f2b12c4280c612395291217439f20b2d46d",
"body": null,
"is_bot": false,
"headline": "0.1.34",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-26T02:41:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c378938b7c40a163c566aa4b6424d992bd9b1379",
"body": "Implements support for the 'first_comment' parameter, allowing users to specify an initial comment for posts.\nAdds the 'altText' parameter for image accessibility.\n\nExtends platform capabilities by including Reddit for photo uploads and generalizing platform-specific configurations (e.g., Threads, Reddit titles) across more operations. This aligns the node with features available in the dashboard, offering a more complete posting experience.",
"is_bot": false,
"headline": "feat(UploadPost): Add first comment and expand platform features",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2025-12-26T01:09:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3c3df63375e46db3859cb2a8e4d86c57b71149a7",
"body": "This change introduces a new 'Pinterest Alt Text' parameter in the Upload Post\nnode. Users can now specify alternative text for their Pinterest photo and\nvideo uploads, improving accessibility and discoverability.\n\nThis fulfills the requirement to allow users to provide alt text when uploading\nto Pinterest via n8n, ensuring the parameter is correctly passed to the\nPinterest API.",
"is_bot": false,
"headline": "feat(pinterest): Add alt text support for uploads",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2025-12-24T11:17:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b4128e848f05bd35b94dfea6e1c2b4f96e4f9624",
"body": "AI: Meter parametro time zone a los schedule post para todos los endpoints de la api que lo soportan",
"is_bot": false,
"headline": "Merge pull request #33 from Upload-Post/ai-tz-schedule-param-bfb2d8d6",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2025-12-16T10:46:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "98f1d7d382b75fbefbea266c6231d97d5f1b2412",
"body": null,
"is_bot": false,
"headline": "Update version to 0.1.33 in package.json",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-16T10:45:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e61ad43dd348bed02988e33fc07d5f0adc4cbe1f",
"body": null,
"is_bot": false,
"headline": "fixes",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-16T10:41:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c16a343b9e272e98379ac299e7a67f6ff2d4199e",
"body": "This change introduces an optional `timezone` parameter for new scheduled posts and a `newTimezone` parameter for editing existing scheduled posts within the `UploadPost` node.\n\nThis allows users to specify their local timezone when setting a scheduled date. The underlying API can then correctly con\n[…]\nprovided date to UTC, ensuring accurate scheduling regardless of the user's geographical location or the server's default timezone. This improves the usability and precision of the scheduling feature.",
"is_bot": false,
"headline": "feat(scheduling): Add timezone parameter for scheduled posts",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2025-12-15T16:34:46Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "1fa7ba6d6e48d4adae864c2e50af17be6bb4ce77",
"body": "…31f9\n\nAI: Hay que quitar la propiedad madeForKids de la api de youtube es solo read. La buena es selfDeclaredMadeForKids",
"is_bot": false,
"headline": "Merge pull request #31 from Upload-Post/ai-fix/selfdeclared-kids-21f6…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2025-12-15T16:17:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f82c52d2f33b9d04a709478d33c92d0f97ad226a",
"body": "…moving unnecessary peer dependencies. This streamlines the project setup and ensures compatibility with the latest dependencies.",
"is_bot": false,
"headline": "Remove ESLint configuration file and clean up package-lock.json by re…",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-15T16:15:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a22f3eed3f97f62c08bc61c80333109813b46d4f",
"body": "Removed the `madeForKids` property from the YouTube video upload/update payload. This property is read-only in the YouTube API and should not be sent in requests. Its removal ensures correct API interaction and prevents potential errors. The correct property for declaring content for kids is `selfDeclaredMadeForKids`.\n\nUpdated ESLint configuration and dev dependencies.",
"is_bot": false,
"headline": "fix(youtube): Remove read-only 'madeForKids' property",
"author_name": "AI Coder Bot",
"author_login": null,
"committed_at": "2025-12-15T15:57:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "712b468715c94ac24a8f9478b8a0df80eabf77dd",
"body": null,
"is_bot": false,
"headline": "eslint",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-15T13:40:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e07db8243d82ba9b6bdd9b09160e6d195022e49a",
"body": "Staging",
"is_bot": false,
"headline": "Merge pull request #22 from Upload-Post/staging",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2025-12-06T22:00:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b8bb93ebcf059560a752285c2580f6aa41269d6",
"body": null,
"is_bot": false,
"headline": "Update version to 0.1.32 in package.json and package-lock.json",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-06T22:00:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3967f9db8b2d35d6f2765e511310ba7cef55666a",
"body": null,
"is_bot": false,
"headline": "fix lint",
"author_name": "victormanuel.caverogracia",
"author_login": null,
"committed_at": "2025-12-06T21:59:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c07d19279a6bcefd512ad1c3eb60c79a386a6552",
"body": "…s-108ef35b\n\nAI: Permitir instagram campos de collaborator y user_tags y alguno mas que falte para fotos de Upload post tambien no solo para video q ya lo tenemos (buscar la documentación de instagram a ver si se peude hacer o no y si es asi implementarlo)",
"is_bot": false,
"headline": "Merge pull request #21 from Upload-Post/ai-feat/instagram-photo-field…",
"author_name": "Víctor Cavero",
"author_login": "victorcavero14",
"committed_at": "2025-12-06T19:37:54Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 3,
"commits_last_year": 83,
"latest_release_at": "2026-02-06T12:34:26Z",
"latest_release_tag": "v0.1.39",
"releases_from_tags": false,
"days_since_last_push": 6,
"active_weeks_last_year": 21,
"days_since_latest_release": 171,
"mean_days_between_releases": 1.3
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "n8n-nodes-upload-post",
"exists": true,
"license": "MIT",
"keywords": [
"n8n-community-node-package",
"upload-post",
"social media"
],
"ecosystem": "npm",
"matches_repo": true,
"registry_url": "https://www.npmjs.com/package/n8n-nodes-upload-post",
"is_deprecated": false,
"latest_version": "0.1.55",
"repository_url": "https://github.com/Upload-Post/n8n-nodes-upload-post",
"versions_count": 43,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": 1,
"monthly_downloads": 102660,
"first_published_at": "2025-05-28T16:22:27.410000Z",
"latest_published_at": "2026-07-20T20:42:21.016000Z",
"latest_version_yanked": null,
"days_since_latest_publish": 6
}
]
},
"popularity": {
"forks": 7,
"stars": 24,
"watchers": 0,
"fork_history": {
"days": [
{
"date": "2025-11-09",
"count": 1
},
{
"date": "2026-01-27",
"count": 1
},
{
"date": "2026-02-01",
"count": 1
},
{
"date": "2026-02-13",
"count": 1
},
{
"date": "2026-02-21",
"count": 1
},
{
"date": "2026-06-04",
"count": 1
},
{
"date": "2026-07-09",
"count": 1
}
],
"complete": true,
"collected": 7,
"total_forks": 7
},
"star_history": null,
"open_issues_and_prs": 0
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 154848,
"source_files_sampled": 7,
"oversized_source_files": 1,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 7743
},
"dependencies": {
"manifests": [
"package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "flatted",
"direct": false,
"version": "3.3.3",
"severity": "critical",
"ecosystem": "npm",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-25h7-pfq9-p65f",
"GHSA-rf6f-7fwh-wjgh"
],
"fixed_version": "3.4.2",
"advisory_count": 2,
"oldest_advisory_days": 135
},
{
"name": "axios",
"direct": false,
"version": "1.8.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.7,
"advisory_ids": [
"GHSA-35jp-ww65-95wh",
"GHSA-3g43-6gmg-66jw",
"GHSA-3p68-rc4w-qgx5",
"GHSA-3w6x-2g7m-8v23",
"GHSA-42h9-826w-cgv3",
"GHSA-43fc-jf86-j433",
"GHSA-445q-vr5w-6q77",
"GHSA-4hjh-wcwx-xvwj",
"GHSA-5c9x-8gcm-mpgx",
"GHSA-62hf-57xw-28j9"
],
"fixed_version": "1.18.0",
"advisory_count": 29,
"oldest_advisory_days": 318
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.12",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-f886-m6hf-6m8v",
"GHSA-mh99-v99m-4gvg"
],
"fixed_version": "5.0.8",
"advisory_count": 3,
"oldest_advisory_days": 122
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-f886-m6hf-6m8v",
"GHSA-mh99-v99m-4gvg"
],
"fixed_version": "5.0.8",
"advisory_count": 3,
"oldest_advisory_days": 122
},
{
"name": "form-data",
"direct": false,
"version": "4.0.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-fjxv-7rqg-78g4",
"GHSA-hmw2-7cc7-3qxx"
],
"fixed_version": "4.0.6",
"advisory_count": 2,
"oldest_advisory_days": 370
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m",
"GHSA-h67p-54hq-rp68",
"GHSA-mh29-5h37-fv8m"
],
"fixed_version": "4.3.0",
"advisory_count": 3,
"oldest_advisory_days": 254
},
{
"name": "lodash",
"direct": false,
"version": "4.17.21",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-f23m-r3pf-42rh",
"GHSA-r5fr-rjxr-66jc",
"GHSA-xxjr-mmjv-4gpg"
],
"fixed_version": "4.18.0",
"advisory_count": 3,
"oldest_advisory_days": 186
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 158
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.3",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 158
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.5",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 158
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3v7f-55p6-f55p",
"GHSA-c2c7-rcm5-vvqj"
],
"fixed_version": "4.0.4",
"advisory_count": 2,
"oldest_advisory_days": 123
},
{
"name": "ajv",
"direct": false,
"version": "6.12.6",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-2g4f-4pwh-qvx6"
],
"fixed_version": "8.18.0",
"advisory_count": 1,
"oldest_advisory_days": 165
},
{
"name": "follow-redirects",
"direct": false,
"version": "1.15.9",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-r4q5-vmmm-2653"
],
"fixed_version": "1.16.0",
"advisory_count": 1,
"oldest_advisory_days": 104
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 10,
"critical": 1,
"moderate": 2
},
"advisory_count": 58,
"affected_count": 13,
"assessed_count": 374,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"npm"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "@eslint-community/eslint-utils",
"direct": false,
"version": "4.7.0",
"ecosystem": "npm"
},
{
"name": "@eslint-community/regexpp",
"direct": false,
"version": "4.12.1",
"ecosystem": "npm"
},
{
"name": "@eslint/eslintrc",
"direct": false,
"version": "2.1.4",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "8.57.1",
"ecosystem": "npm"
},
{
"name": "@eslint/js",
"direct": false,
"version": "9.39.2",
"ecosystem": "npm"
},
{
"name": "@gulpjs/messages",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@gulpjs/to-absolute-glob",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/config-array",
"direct": false,
"version": "0.13.0",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/module-importer",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@humanwhocodes/object-schema",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "@n8n/tournament",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "@n8n_io/riot-tmpl",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "@n8n_io/riot-tmpl",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.scandir",
"direct": false,
"version": "2.1.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.stat",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.walk",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/semver",
"direct": false,
"version": "7.7.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/parser",
"direct": false,
"version": "8.32.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/scope-manager",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/scope-manager",
"direct": false,
"version": "8.32.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/types",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/types",
"direct": false,
"version": "8.32.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/typescript-estree",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/typescript-estree",
"direct": false,
"version": "8.32.1",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/utils",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/visitor-keys",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "@typescript-eslint/visitor-keys",
"direct": false,
"version": "8.32.1",
"ecosystem": "npm"
},
{
"name": "@ungap/structured-clone",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.14.1",
"ecosystem": "npm"
},
{
"name": "acorn-jsx",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.12.6",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "anymatch",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "array-each",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "array-slice",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "array-union",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "assert",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "ast-types",
"direct": false,
"version": "0.15.2",
"ecosystem": "npm"
},
{
"name": "ast-types",
"direct": false,
"version": "0.16.1",
"ecosystem": "npm"
},
{
"name": "async-done",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "async-settle",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "asynckit",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "available-typed-arrays",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "axios",
"direct": false,
"version": "1.8.2",
"ecosystem": "npm"
},
{
"name": "b4a",
"direct": false,
"version": "1.6.7",
"ecosystem": "npm"
},
{
"name": "bach",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "bare-events",
"direct": false,
"version": "2.5.4",
"ecosystem": "npm"
},
{
"name": "base64-js",
"direct": false,
"version": "1.5.1",
"ecosystem": "npm"
},
{
"name": "binary-extensions",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "bl",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.12",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "buffer",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "call-bind",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "callsites",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "camel-case",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "charenc",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "7.0.4",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "8.0.1",
"ecosystem": "npm"
},
{
"name": "clone",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "clone-stats",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "combined-stream",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "copy-props",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "crypt",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "deep-equal",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "deep-is",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "define-data-property",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "define-properties",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "delayed-stream",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "detect-file",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "dir-glob",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "doctrine",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "each-props",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "end-of-stream",
"direct": false,
"version": "1.4.4",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-get-iterator",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "eslint",
"direct": false,
"version": "8.57.1",
"ecosystem": "npm"
},
{
"name": "eslint-config-riot",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-local",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "eslint-plugin-n8n-nodes-base",
"direct": false,
"version": "1.16.3",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "7.2.2",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "eslint-visitor-keys",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "espree",
"direct": false,
"version": "9.6.1",
"ecosystem": "npm"
},
{
"name": "esprima",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "esprima-next",
"direct": false,
"version": "5.8.4",
"ecosystem": "npm"
},
{
"name": "esquery",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "expand-tilde",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "extend",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-fifo",
"direct": false,
"version": "1.3.2",
"ecosystem": "npm"
},
{
"name": "fast-glob",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "fast-json-stable-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fast-levenshtein",
"direct": false,
"version": "2.0.6",
"ecosystem": "npm"
},
{
"name": "fast-levenshtein",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "fastest-levenshtein",
"direct": false,
"version": "1.0.16",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.19.1",
"ecosystem": "npm"
},
{
"name": "file-entry-cache",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "findup-sync",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "fined",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "flagged-respawn",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "flat-cache",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "flatted",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "follow-redirects",
"direct": false,
"version": "1.15.9",
"ecosystem": "npm"
},
{
"name": "for-each",
"direct": false,
"version": "0.3.5",
"ecosystem": "npm"
},
{
"name": "for-in",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "for-own",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "form-data",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "fs-mkdirp-stream",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "fs.realpath",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "functions-have-names",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "get-caller-file",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "get-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "glob-stream",
"direct": false,
"version": "8.0.2",
"ecosystem": "npm"
},
{
"name": "glob-watcher",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "global-modules",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "global-prefix",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "13.24.0",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "15.15.0",
"ecosystem": "npm"
},
{
"name": "globby",
"direct": false,
"version": "11.1.0",
"ecosystem": "npm"
},
{
"name": "glogg",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "graphemer",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "gulp",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "gulp-cli",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "gulplog",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "has-bigints",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "has-property-descriptors",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-tostringtag",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "homedir-polyfill",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "iconv-lite",
"direct": false,
"version": "0.6.3",
"ecosystem": "npm"
},
{
"name": "ieee754",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "ignore",
"direct": false,
"version": "5.3.2",
"ecosystem": "npm"
},
{
"name": "ignore-by-default",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "import-fresh",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "imurmurhash",
"direct": false,
"version": "0.1.4",
"ecosystem": "npm"
},
{
"name": "indefinite",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "ini",
"direct": false,
"version": "1.3.8",
"ecosystem": "npm"
},
{
"name": "internal-slot",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "interpret",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "is-absolute",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-arguments",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "is-array-buffer",
"direct": false,
"version": "3.0.5",
"ecosystem": "npm"
},
{
"name": "is-bigint",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-binary-path",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-boolean-object",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "is-buffer",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "is-callable",
"direct": false,
"version": "1.2.7",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.1",
"ecosystem": "npm"
},
{
"name": "is-date-object",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-generator-function",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-map",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-nan",
"direct": false,
"version": "1.3.2",
"ecosystem": "npm"
},
{
"name": "is-negated-glob",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-number-object",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-path-inside",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "is-plain-object",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "is-regex",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "is-relative",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-set",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "is-shared-array-buffer",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "is-string",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-symbol",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "is-typed-array",
"direct": false,
"version": "1.1.15",
"ecosystem": "npm"
},
{
"name": "is-unc-path",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-valid-glob",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "is-weakmap",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "is-weakset",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "is-windows",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "isarray",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "isobject",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "jmespath",
"direct": false,
"version": "0.16.0",
"ecosystem": "npm"
},
{
"name": "js-base64",
"direct": false,
"version": "3.7.2",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "json-buffer",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-stable-stringify-without-jsonify",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "jssha",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "keyv",
"direct": false,
"version": "4.5.4",
"ecosystem": "npm"
},
{
"name": "last-run",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "lead",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "levn",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "liftoff",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.17.21",
"ecosystem": "npm"
},
{
"name": "lodash.merge",
"direct": false,
"version": "4.6.2",
"ecosystem": "npm"
},
{
"name": "lower-case",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "luxon",
"direct": false,
"version": "3.4.4",
"ecosystem": "npm"
},
{
"name": "map-cache",
"direct": false,
"version": "0.2.2",
"ecosystem": "npm"
},
{
"name": "math-intrinsics",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "md5",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "merge2",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "micromatch",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.35",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.3",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.5",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "mute-stdout",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "n8n-workflow",
"direct": false,
"version": "1.82.0",
"ecosystem": "npm"
},
{
"name": "natural-compare",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "no-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "nodemon",
"direct": false,
"version": "3.1.10",
"ecosystem": "npm"
},
{
"name": "normalize-path",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "now-and-later",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "object-inspect",
"direct": false,
"version": "1.13.4",
"ecosystem": "npm"
},
{
"name": "object-is",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "object-keys",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "object.assign",
"direct": false,
"version": "4.1.7",
"ecosystem": "npm"
},
{
"name": "object.defaults",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "object.pick",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "optionator",
"direct": false,
"version": "0.9.4",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "parent-module",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "parse-filepath",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "parse-passwd",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "pascal-case",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-is-absolute",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-parse",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "path-root",
"direct": false,
"version": "0.1.1",
"ecosystem": "npm"
},
{
"name": "path-root-regex",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "path-type",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pluralize",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "possible-typed-array-names",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "prelude-ls",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "3.5.3",
"ecosystem": "npm"
},
{
"name": "proxy-from-env",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "pstree.remy",
"direct": false,
"version": "1.1.8",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "readable-stream",
"direct": false,
"version": "3.6.2",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "3.6.0",
"ecosystem": "npm"
},
{
"name": "recast",
"direct": false,
"version": "0.21.5",
"ecosystem": "npm"
},
{
"name": "recast",
"direct": false,
"version": "0.22.0",
"ecosystem": "npm"
},
{
"name": "rechoir",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "regexp.prototype.flags",
"direct": false,
"version": "1.5.4",
"ecosystem": "npm"
},
{
"name": "remove-trailing-separator",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "replace-ext",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "replace-homedir",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "require-directory",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.10",
"ecosystem": "npm"
},
{
"name": "resolve-dir",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-options",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "rimraf",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "safe-regex-test",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "safer-buffer",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "sax",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "7.7.2",
"ecosystem": "npm"
},
{
"name": "semver-greatest-satisfied-range",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "sentence-case",
"direct": false,
"version": "3.0.4",
"ecosystem": "npm"
},
{
"name": "set-function-length",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "set-function-name",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "side-channel",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "side-channel-list",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "side-channel-map",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "side-channel-weakmap",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "simple-update-notifier",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "slash",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "sparkles",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "stop-iteration-iterator",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "stream-composer",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "stream-exhaust",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "streamx",
"direct": false,
"version": "2.22.0",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "string_decoder",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-json-comments",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "5.5.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "sver",
"direct": false,
"version": "1.8.4",
"ecosystem": "npm"
},
{
"name": "teex",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "text-decoder",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "text-table",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "title-case",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "to-through",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "touch",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "transliteration",
"direct": false,
"version": "2.3.5",
"ecosystem": "npm"
},
{
"name": "ts-api-utils",
"direct": false,
"version": "1.4.3",
"ecosystem": "npm"
},
{
"name": "ts-api-utils",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "type-check",
"direct": false,
"version": "0.4.0",
"ecosystem": "npm"
},
{
"name": "type-fest",
"direct": false,
"version": "0.20.2",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "5.8.3",
"ecosystem": "npm"
},
{
"name": "unc-path-regex",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "undefsafe",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "undertaker",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "undertaker-registry",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "upper-case-first",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "uri-js",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "util",
"direct": false,
"version": "0.12.5",
"ecosystem": "npm"
},
{
"name": "util-deprecate",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "v8flags",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "value-or-function",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "vinyl",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "vinyl-contents",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "vinyl-fs",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "vinyl-sourcemap",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "which-boxed-primitive",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "which-collection",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "which-typed-array",
"direct": false,
"version": "1.1.19",
"ecosystem": "npm"
},
{
"name": "word-wrap",
"direct": false,
"version": "1.2.5",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "xml2js",
"direct": false,
"version": "0.6.2",
"ecosystem": "npm"
},
{
"name": "xmlbuilder",
"direct": false,
"version": "11.0.1",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "5.0.8",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "16.2.0",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "17.7.2",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "20.2.9",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "21.1.1",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "zod",
"direct": false,
"version": "3.24.1",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 374,
"direct_count": 0,
"indirect_count": 374
}
},
"maintainership": {
"issues": {
"open_prs": 0,
"merged_prs": 47,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 20,
"closed_unmerged_prs": 20
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "victorcavero14",
"commits": 62,
"avatar_url": "https://avatars.githubusercontent.com/u/33009505?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": false,
"ci_workflows": [
"publish.yml"
],
"has_docs_dir": false,
"linter_configs": [
".eslintrc.js"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"package-lock.json"
],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 0,
"reason": "0 out of 3 merged PRs checked by a CI test -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/27 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 10,
"reason": "no dangerous workflow patterns detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 3,
"reason": "dependency not pinned by hash detected -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 9,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "48 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "d7ff7bc2a69f051fa7ab18dca2a7cbda0881f6de",
"ran_at": "2026-07-27T13:01:39Z",
"aggregate_score": 4.5,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-20T20:42:24Z",
"oldest_open_prs": [],
"last_merged_pr_at": "2026-05-18T12:25:04Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/Upload-Post/n8n-nodes-upload-post",
"host": "github.com",
"name": "n8n-nodes-upload-post",
"owner": "Upload-Post"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"security": 56,
"vitality": 83,
"community": 55,
"governance": 55,
"engineering": 58
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 83,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 78,
"inputs": {
"commits_last_year": 83,
"human_commit_share": 1,
"days_since_last_push": 6,
"active_weeks_last_year": 21
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "21/52 weeks with commits",
"points": 14.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 21
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "83 commits in the last year",
"points": 17.3,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 83
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 90,
"inputs": {
"releases_count": 3,
"latest_release_tag": "v0.1.39",
"releases_from_tags": false,
"days_since_latest_release": 171,
"mean_days_between_releases": 1.3
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "3 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 3
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 171 days ago",
"points": 27,
"status": "partial",
"details": [
{
"code": "release_recency",
"params": {
"days": 171
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~1.3 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 1.3
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 6,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 6 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 6
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 55,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 29,
"inputs": {
"forks": 7,
"stars": 24,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "24 stars",
"points": 22.1,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 24
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "7 forks",
"points": 6.5,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 7
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "good",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 84,
"inputs": {
"packages": [
"n8n-nodes-upload-post"
],
"dependents": null,
"ecosystems": "npm",
"total_downloads": null,
"monthly_downloads": 102660
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "102,660 downloads/month across npm",
"points": 66.8,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 102660,
"ecosystems": "npm"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 55,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"merged_prs": 47,
"open_issues": 0,
"closed_issues": 20,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 20
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 46.8,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "47/67 decided PRs merged",
"points": 26.8,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 47,
"decided": 67
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/27 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 53,
"inputs": {
"followers": 40,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "Upload-Post",
"public_repos": 13,
"account_age_days": 479
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "40 followers of Upload-Post",
"points": 11.6,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 40,
"login": "Upload-Post"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "13 public repos, account ~1 yr old",
"points": 11,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 13
}
},
{
"code": "account_age_years",
"params": {
"years": 1
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"n8n-nodes-upload-post"
],
"ecosystems": "npm",
"any_deprecated": false,
"min_days_since_publish": 6
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on npm",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "npm"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 6 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 6
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "43 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 43
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "moderate",
"name": "Engineering Quality",
"value": 58,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "at_risk",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 46,
"inputs": {
"has_ci": true,
"has_tests": false,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "1 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 1
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".eslintrc.js",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc.js"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "0 out of 3 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"automation",
"instagram",
"n8n",
"n8n-community-node",
"social-media",
"tiktok",
"youtube",
"upload-post"
],
"has_wiki": true,
"homepage": "https://upload-post.com",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://upload-post.com",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "8 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 8
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 56,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 45,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 4.5
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "0 out of 3 merged PRs checked by a CI test -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/27 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 3",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 6.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "48 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 374 resolved dependencies against OSV. This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 374
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 58,
"affected_packages": 13,
"assessed_packages": 374,
"unassessed_packages": 0,
"affected_by_severity": "critical 1, high 10, moderate 2",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "excellent",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 374,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 1
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "moderate",
"name": "AI Readiness",
"value": 67,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.9,
"agent_instruction_files": [
"AGENTS.md"
],
"agent_instruction_max_bytes": 7743
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md"
}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "90 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 90,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "at_risk",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 45,
"inputs": {
"has_nix": false,
"has_tests": false,
"lockfiles": [
"package-lock.json"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"tsconfig.json"
],
"agent_commit_share": 0.19,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".eslintrc.js",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".eslintrc.js"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "19 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 19,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 92,
"inputs": {
"primary_language": "TypeScript",
"largest_source_bytes": 154848,
"source_files_sampled": 7,
"oversized_source_files": 1
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "TypeScript (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "TypeScript"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "1/7 source files over 60KB",
"points": 47.1,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 7,
"oversized": 1
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-27T13:01:48.588613Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/u/Upload-Post/n8n-nodes-upload-post.svg",
"full_name": "Upload-Post/n8n-nodes-upload-post",
"license_state": "standard",
"license_spdx": "MIT"
}