Public record
Software health reportschema 0.27.0 · metrics 1.13.0 · 2026-07-27 13:01 UTC

Upload-Post / n8n-nodes-upload-post

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

TypeScriptMIT★ 24 stars⑂ 7 forkssince Apr 2025View on GitHub ↗

Upload-Post/n8n-nodes-upload-post holds a health index of 62 out of 100, placing it in the Moderate band. It scores highest on Vitality (83/100) and lowest on Sustainability & Governance (55/100). It was last updated 6 days ago. A single contributor accounts for most of its recent work.

62
overall / 100
Moderate

Software health index

Metrics are grouped into weighted categories on one standardized 1–100 scale. Overall starts as their weighted mean; when public evidence triggers the High-Risk Jurisdiction Policy, the rating is adjusted and receives an At risk ceiling of 49. AI Readiness sits outside the overall score.

62
Excellent85-100Exemplary; meets essentially all checked criteria
Good70-84Healthy; minor gaps
Moderate50-69Acceptable with notable gaps; review recommended
At risk30-49Significant weaknesses; adoption warrants caution
Critical1-29Severe problems (abandoned, single-maintainer, no hygiene)
VitalityCommunity &AdoptionSustainability &GovernanceEngineeringQualitySecurityAI Readiness

Score profile

Each axis is a category. The shape matters more than the average — a healthy subject fills the whole shape, while a spike-and-crater profile means strength in one dimension is masking risk in another.

Ownership

Upload-postOrganization
40 followers13 public repossince Apr 2025

This repository is backed by an organization — shared, accountable stewardship that can outlive any single maintainer.

Package ecosystems

RegistryPackageVersionDownloads / moVersionsLast publishTags
npmn8n-nodes-upload-post0.1.55102,660436 days agon8n-community-node-packageupload-postsocial-media

Metrics by category

Vitality

Is the project alive — is code being written and are releases shipping?

83Good · 22% of overall
How it's scored
36/36Push recency — last push 6 days ago
14.5/36Commit cadence — 21/52 weeks with commits
17.3/18Commit volume — 83 commits in the last year
10/10OpenSSF Scorecard: Maintained — 27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
Inputs used
commits_last_year83
human_commit_share1
days_since_last_push6
active_weeks_last_year21
How it's scored
27/27Ships releases — 3 releases published
27/36Release recency — latest release 171 days ago
27/27Release cadence — a release every ~1.3 days
0/10OpenSSF Scorecard: Signed-Releases — no data
Inputs used
releases_count3
latest_release_tagv0.1.39
releases_from_tagsno
days_since_latest_release171
mean_days_between_releases1.3
Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.

Community & Adoption

Does the project have users, downloads, attention, and a welcoming setup for contributors?

55Moderate · 18% of overall
How it's scored
22.1/60Stars — 24 stars
6.5/25Forks — 7 forks
0/15Watchers — 0 watchers
Inputs used
forks7
stars24
watchers0
growth_stateunverified
growth_factor_pct100
growth_unverified_reasonno_history
How it's scored
22.5/22.5README
22.5/22.5License — recognized license (MIT)
0/18CONTRIBUTING guide
13.5/13.5Code of conduct
0/7.2Issue template
0/6.3PR template
Inputs used
has_readmeyes
has_licenseyes
has_contributingno
has_issue_templateno
has_code_of_conductyes
has_pull_request_templateno
How it's scored
66.8/80Monthly downloads — 102,660 downloads/month across npm
0/20Registry dependents — not reported by this ecosystem
Inputs used
packagesn8n-nodes-upload-post
dependents
ecosystemsnpm
total_downloads
monthly_downloads102,660
Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.

Sustainability & Governance

Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?

55Moderate · 24% of overall
How it's scored
9/54Bus factor — 1 contributor(s) cover half of all commits
0/22.5Commit distribution — top contributor authored 100% of commits
1.4/13.5Contributor breadth — 1 contributors
0/10OpenSSF Scorecard: Contributors — project has 0 contributing companies or organizations -- score normalized to 0
Inputs used
bus_factor1
contributors_sampled1
top_contributor_share1
How it's scored
46.8/46.8Issue resolution — 100% of issues closed
26.8/38.3PR acceptance — 47/67 decided PRs merged
0/15OpenSSF Scorecard: Code-Review — Found 0/27 approved changesets -- score normalized to 0
Inputs used
merged_prs47
open_issues0
closed_issues20
issue_closed_ratio1
closed_unmerged_prs20
How it's scored
30/30Ownership backing — organization-owned
0/20Verified domain
11.6/25Owner reach — 40 followers of Upload-Post
11/25Track record — 13 public repos, account ~1 yr old
Inputs used
followers40
owner_typeOrganization
is_verified
owner_loginUpload-Post
public_repos13
account_age_days479
How it's scored
25/25Published & resolvable — 1 package(s) on npm
35/35Publish recency — latest publish 6 days ago
20/20Version history — 43 published versions
20/20Not deprecated — active, not deprecated or yanked
Inputs used
packagesn8n-nodes-upload-post
ecosystemsnpm
any_deprecatedno
min_days_since_publish6

Engineering Quality

Are baseline engineering and documentation practices in place?

58Moderate · 20% of overall
How it's scored
24/24CI workflows — 1 workflow(s)
0/24Tests present
16/16Linter config — .eslintrc.js
0/9.6Pre-commit hooks
6.4/6.4.editorconfig
0/20OpenSSF Scorecard: CI-Tests — 0 out of 3 merged PRs checked by a CI test -- score normalized to 0
Inputs used
has_ciyes
has_testsno
has_editorconfigyes
has_linter_configyes
has_precommit_configno
How it's scored
30/30README
0/25Documentation directory
15/15Documentation / homepage site — https://upload-post.com
10/10Repository description
10/10Topics — 8 topics
10/10Wiki
Inputs used
topicsautomation, instagram, n8n, n8n-community-node, social-media, tiktok, youtube, upload-post
has_wikiyes
homepagehttps://upload-post.com
has_readmeyes
has_docs_dirno
has_descriptionyes

Security

Are visible security and supply-chain practices strong, without unresolved high-risk jurisdiction exposure?

56Moderate · 16% of overall
How it's scored
7.5/7.5Binary-Artifacts — no binaries found in the repo
0/7.5Branch-Protection — no data
0/2.5CI-Tests — 0 out of 3 merged PRs checked by a CI test -- score normalized to 0
0/2.5CII-Best-Practices — no effort to earn an OpenSSF best practices badge detected
0/7.5Code-Review — Found 0/27 approved changesets -- score normalized to 0
0/2.5Contributors — project has 0 contributing companies or organizations -- score normalized to 0
10/10Dangerous-Workflow — no dangerous workflow patterns detected
0/7.5Dependency-Update-Tool — no update tool detected
0/5Fuzzing — project is not fuzzed
2.5/2.5License — license file detected
7.5/7.5Maintained — 27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
5/5Packaging — packaging workflow detected
1.5/5Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
0/5SAST — SAST tool is not run on all commits -- score normalized to 0
0/5Security-Policy — security policy file not detected
0/7.5Signed-Releases — no data
6.8/7.5Token-Permissions — detected GitHub workflow tokens with excessive permissions
0/7.5Vulnerabilities — 48 existing vulnerabilities detected
Inputs used
sourceopenssf_scorecard
checks_evaluated16
scorecard_versionv5.5.0
checks_inconclusive2
scorecard_aggregate4.5
Excluded from scoring (no data or not applicable): branch_protection, signed_releases. Remaining weights renormalized.
How it's scored
35/35Direct dependencies free of known advisories — no direct dependency carries a known advisory
0/25Indirect dependencies free of known advisories — transitive set not separable from development and test dependencies in this scope
0/40No advisories left outstanding — no advisory carries a publication date
Inputs used
sourceosv
advisories58
affected_packages13
assessed_packages374
unassessed_packages0
affected_by_severitycritical 1, high 10, moderate 2
direct_affected_packages0
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.

AI Readiness

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.

67Moderate · 0% of overall
How it's scored
45/45Agent instructions — AGENTS.md
0/15Machine-readable docs (llms.txt)
40/40Legible commit history — 90 of 100 human commits state their intent (structured subject or explanatory body)
Inputs used
has_llms_txtno
legible_history_share0.9
agent_instruction_filesAGENTS.md
agent_instruction_max_bytes7,743
How it's scored
0/18One-command bootstrap
0/22Automated tests
11/11Lint / format config — .eslintrc.js
11/11Static type checking — tsconfig.json
10/10Reproducible environment — lockfile
10/10Demonstrated agent practice — 19 of the last 100 commits agent-authored or agent-credited
0/8Automated maintenance — no automated dependency updates observed
3/10OpenSSF Scorecard: Pinned-Dependencies — dependency not pinned by hash detected -- score normalized to 3
Inputs used
has_nixno
has_testsno
lockfilespackage-lock.json
has_dockerfileno
typed_languageyes
bootstrap_files
has_devcontainerno
has_linter_configyes
typecheck_configstsconfig.json
agent_commit_share0.19
toolchain_manifests
dependency_bot_commit_share0
How it's scored
45/45Type-checkable code — TypeScript (statically typed)
47.1/55Manageable file sizes — 1/7 source files over 60KB
Inputs used
primary_languageTypeScript
largest_source_bytes154,848
source_files_sampled7
oversized_source_files1

Key facts

24GitHub stars
1contributors
83commits, last 12 months
6days since last push
3releases
1bus factor
0open issues
npmpackage ecosystems

Data collection warnings

  • Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token

More detail

Star and fork history 0 ★ / 7 ⇿
0Stars
7Forks
3Releases

When each star and fork was added, collected from GitHub and bucketed by day. Cumulative growth sits directly above the daily additions it is made of, so the two read against each other: steady organic accretion looks nothing like an abrupt, short-lived burst. Where that difference is measurable, it is reported as growth authenticity.

1234567712025-112026-032026-07
Major 0Minor 0Patch 3
OpenSSF Scorecard 4.5 / 10
4.5aggregate

Independent, tool-agnostic security assessment from the open-source OpenSSF Scorecard. Each check rewards a security practice, not a specific vendor's tool. Checks Scorecard could not determine are marked n/a and excluded from the security score (never counted as zero).Scorecard v5.5.0 · 2026-07-27 13:01 UTC

10Binary-Artifactsno binaries found in the repo
n/aBranch-Protectioninternal 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
0CI-Tests0 out of 3 merged PRs checked by a CI test -- score normalized to 0
0CII-Best-Practicesno effort to earn an OpenSSF best practices badge detected
0Code-ReviewFound 0/27 approved changesets -- score normalized to 0
0Contributorsproject has 0 contributing companies or organizations -- score normalized to 0
10Dangerous-Workflowno dangerous workflow patterns detected
0Dependency-Update-Toolno update tool detected
0Fuzzingproject is not fuzzed
10Licenselicense file detected
10Maintained27 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 10
10Packagingpackaging workflow detected
3Pinned-Dependenciesdependency not pinned by hash detected -- score normalized to 3
0SASTSAST tool is not run on all commits -- score normalized to 0
0Security-Policysecurity policy file not detected
n/aSigned-Releasesno releases found
9Token-Permissionsdetected GitHub workflow tokens with excessive permissions
0Vulnerabilities48 existing vulnerabilities detected
All dependencies 374

Full resolved dependency set from the GitHub dependency graph: 0 direct and 374 indirect (transitive) packages. The transitive closure is complete when the repository commits a lockfile.

RegistryPackageVersionRelation
npm@eslint-community/eslint-utils4.7.0indirect
npm@eslint-community/regexpp4.12.1indirect
npm@eslint/eslintrc2.1.4indirect
npm@eslint/js8.57.1indirect
npm@eslint/js9.39.2indirect
npm@gulpjs/messages1.1.0indirect
npm@gulpjs/to-absolute-glob4.0.0indirect
npm@humanwhocodes/config-array0.13.0indirect
npm@humanwhocodes/module-importer1.0.1indirect
npm@humanwhocodes/object-schema2.0.3indirect
npm@n8n/tournament1.0.6indirect
npm@n8n_io/riot-tmpl4.0.0indirect
npm@n8n_io/riot-tmpl4.0.1indirect
npm@nodelib/fs.scandir2.1.5indirect
npm@nodelib/fs.stat2.0.5indirect
npm@nodelib/fs.walk1.2.8indirect
npm@types/json-schema7.0.15indirect
npm@types/semver7.7.0indirect
npm@typescript-eslint/parser8.32.1indirect
npm@typescript-eslint/scope-manager6.21.0indirect
npm@typescript-eslint/scope-manager8.32.1indirect
npm@typescript-eslint/types6.21.0indirect
npm@typescript-eslint/types8.32.1indirect
npm@typescript-eslint/typescript-estree6.21.0indirect
npm@typescript-eslint/typescript-estree8.32.1indirect
npm@typescript-eslint/utils6.21.0indirect
npm@typescript-eslint/visitor-keys6.21.0indirect
npm@typescript-eslint/visitor-keys8.32.1indirect
npm@ungap/structured-clone1.3.0indirect
npmacorn8.14.1indirect
npmacorn-jsx5.3.2indirect
npmajv6.12.6indirect
npmansi-regex5.0.1indirect
npmansi-styles4.3.0indirect
npmanymatch3.1.3indirect
npmargparse2.0.1indirect
npmarray-each1.0.1indirect
npmarray-slice1.1.0indirect
npmarray-union2.1.0indirect
npmassert2.1.0indirect
npmast-types0.15.2indirect
npmast-types0.16.1indirect
npmasync-done2.0.0indirect
npmasync-settle2.0.0indirect
npmasynckit0.4.0indirect
npmavailable-typed-arrays1.0.7indirect
npmaxios1.8.2indirect
npmb4a1.6.7indirect
npmbach2.0.1indirect
npmbalanced-match1.0.2indirect
npmbare-events2.5.4indirect
npmbase64-js1.5.1indirect
npmbinary-extensions2.3.0indirect
npmbl5.1.0indirect
npmbrace-expansion1.1.12indirect
npmbrace-expansion2.0.2indirect
npmbraces3.0.3indirect
npmbuffer6.0.3indirect
npmcall-bind1.0.8indirect
npmcall-bind-apply-helpers1.0.2indirect
npmcall-bound1.0.4indirect
npmcallsites3.1.0indirect
npmcamel-case4.1.2indirect
npmchalk4.1.2indirect
npmcharenc0.0.2indirect
npmchokidar3.6.0indirect
npmcliui7.0.4indirect
npmcliui8.0.1indirect
npmclone2.1.2indirect
npmclone-stats1.0.0indirect
npmcolor-convert2.0.1indirect
npmcolor-name1.1.4indirect
npmcombined-stream1.0.8indirect
npmconcat-map0.0.1indirect
npmconvert-source-map2.0.0indirect
npmcopy-props4.0.0indirect
npmcross-spawn7.0.6indirect
npmcrypt0.0.2indirect
npmdebug4.4.1indirect
npmdeep-equal2.2.0indirect
npmdeep-is0.1.4indirect
npmdefine-data-property1.1.4indirect
npmdefine-properties1.2.1indirect
npmdelayed-stream1.0.0indirect
npmdetect-file1.0.0indirect
npmdir-glob3.0.1indirect
npmdoctrine3.0.0indirect
npmdunder-proto1.0.1indirect
npmeach-props3.0.0indirect
npmemoji-regex8.0.0indirect
npmend-of-stream1.4.4indirect
npmes-define-property1.0.1indirect
npmes-errors1.3.0indirect
npmes-get-iterator1.1.3indirect
npmes-object-atoms1.1.1indirect
npmescalade3.2.0indirect
npmescape-string-regexp4.0.0indirect
npmeslint8.57.1indirect
npmeslint-config-riot1.0.0indirect
npmeslint-plugin-local1.0.0indirect
npmeslint-plugin-n8n-nodes-base1.16.3indirect
npmeslint-scope7.2.2indirect
npmeslint-visitor-keys3.4.3indirect
npmeslint-visitor-keys4.2.0indirect
npmespree9.6.1indirect
npmesprima4.0.1indirect
npmesprima-next5.8.4indirect
npmesquery1.6.0indirect
npmesrecurse4.3.0indirect
npmestraverse5.3.0indirect
npmesutils2.0.3indirect
npmexpand-tilde2.0.2indirect
npmextend3.0.2indirect
npmfast-deep-equal3.1.3indirect
npmfast-fifo1.3.2indirect
npmfast-glob3.3.3indirect
npmfast-json-stable-stringify2.1.0indirect
npmfast-levenshtein2.0.6indirect
npmfast-levenshtein3.0.0indirect
npmfastest-levenshtein1.0.16indirect
npmfastq1.19.1indirect
npmfile-entry-cache6.0.1indirect
npmfill-range7.1.1indirect
npmfind-up5.0.0indirect
npmfindup-sync5.0.0indirect
npmfined2.0.0indirect
npmflagged-respawn2.0.0indirect
npmflat-cache3.2.0indirect
npmflatted3.3.3indirect
npmfollow-redirects1.15.9indirect
npmfor-each0.3.5indirect
npmfor-in1.0.2indirect
npmfor-own1.0.0indirect
npmform-data4.0.0indirect
npmfs-mkdirp-stream2.0.1indirect
npmfs.realpath1.0.0indirect
npmfsevents2.3.3indirect
npmfunction-bind1.1.2indirect
npmfunctions-have-names1.2.3indirect
npmget-caller-file2.0.5indirect
npmget-intrinsic1.3.0indirect
npmget-proto1.0.1indirect
npmglob7.2.3indirect
npmglob-parent5.1.2indirect
npmglob-parent6.0.2indirect
npmglob-stream8.0.2indirect
npmglob-watcher6.0.0indirect
npmglobal-modules1.0.0indirect
npmglobal-prefix1.0.2indirect
npmglobals13.24.0indirect
npmglobals15.15.0indirect
npmglobby11.1.0indirect
npmglogg2.2.0indirect
npmgopd1.2.0indirect
npmgraceful-fs4.2.11indirect
npmgraphemer1.4.0indirect
npmgulp5.0.0indirect
npmgulp-cli3.0.0indirect
npmgulplog2.2.0indirect
npmhas-bigints1.1.0indirect
npmhas-flag3.0.0indirect
npmhas-flag4.0.0indirect
npmhas-property-descriptors1.0.2indirect
npmhas-symbols1.1.0indirect
npmhas-tostringtag1.0.2indirect
npmhasown2.0.2indirect
npmhomedir-polyfill1.0.3indirect
npmiconv-lite0.6.3indirect
npmieee7541.2.1indirect
npmignore5.3.2indirect
npmignore-by-default1.0.1indirect
npmimport-fresh3.3.1indirect
npmimurmurhash0.1.4indirect
npmindefinite2.5.1indirect
npminflight1.0.6indirect
npminherits2.0.4indirect
npmini1.3.8indirect
npminternal-slot1.1.0indirect
npminterpret3.1.1indirect
npmis-absolute1.0.0indirect
npmis-arguments1.2.0indirect
npmis-array-buffer3.0.5indirect
npmis-bigint1.1.0indirect
npmis-binary-path2.1.0indirect
npmis-boolean-object1.2.2indirect
npmis-buffer1.1.6indirect
npmis-callable1.2.7indirect
npmis-core-module2.16.1indirect
npmis-date-object1.1.0indirect
npmis-extglob2.1.1indirect
npmis-fullwidth-code-point3.0.0indirect
npmis-generator-function1.1.0indirect
npmis-glob4.0.3indirect
npmis-map2.0.3indirect
npmis-nan1.3.2indirect
npmis-negated-glob1.0.0indirect
npmis-number7.0.0indirect
npmis-number-object1.1.1indirect
npmis-path-inside3.0.3indirect
npmis-plain-object5.0.0indirect
npmis-regex1.2.1indirect
npmis-relative1.0.0indirect
npmis-set2.0.3indirect
npmis-shared-array-buffer1.0.4indirect
npmis-string1.1.1indirect
npmis-symbol1.1.1indirect
npmis-typed-array1.1.15indirect
npmis-unc-path1.0.0indirect
npmis-valid-glob1.0.0indirect
npmis-weakmap2.0.2indirect
npmis-weakset2.0.4indirect
npmis-windows1.0.2indirect
npmisarray2.0.5indirect
npmisexe2.0.0indirect
npmisobject3.0.1indirect
npmjmespath0.16.0indirect
npmjs-base643.7.2indirect
npmjs-yaml4.1.0indirect
npmjson-buffer3.0.1indirect
npmjson-schema-traverse0.4.1indirect
npmjson-stable-stringify-without-jsonify1.0.1indirect
npmjssha3.3.1indirect
npmkeyv4.5.4indirect
npmlast-run2.0.0indirect
npmlead4.0.0indirect
npmlevn0.4.1indirect
npmliftoff5.0.0indirect
npmlocate-path6.0.0indirect
npmlodash4.17.21indirect
npmlodash.merge4.6.2indirect
npmlower-case2.0.2indirect
npmluxon3.4.4indirect
npmmap-cache0.2.2indirect
npmmath-intrinsics1.1.0indirect
npmmd52.3.0indirect
npmmerge21.4.1indirect
npmmicromatch4.0.8indirect
npmmime-db1.52.0indirect
npmmime-types2.1.35indirect
npmminimatch3.1.2indirect
npmminimatch9.0.3indirect
npmminimatch9.0.5indirect
npmms2.1.3indirect
npmmute-stdout2.0.0indirect
npmn8n-workflow1.82.0indirect
npmnatural-compare1.4.0indirect
npmno-case3.0.4indirect
npmnodemon3.1.10indirect
npmnormalize-path3.0.0indirect
npmnow-and-later3.0.0indirect
npmobject-inspect1.13.4indirect
npmobject-is1.1.6indirect
npmobject-keys1.1.1indirect
npmobject.assign4.1.7indirect
npmobject.defaults1.1.0indirect
npmobject.pick1.3.0indirect
npmonce1.4.0indirect
npmoptionator0.9.4indirect
npmp-limit3.1.0indirect
npmp-locate5.0.0indirect
npmparent-module1.0.1indirect
npmparse-filepath1.0.2indirect
npmparse-passwd1.0.0indirect
npmpascal-case3.1.2indirect
npmpath-exists4.0.0indirect
npmpath-is-absolute1.0.1indirect
npmpath-key3.1.1indirect
npmpath-parse1.0.7indirect
npmpath-root0.1.1indirect
npmpath-root-regex0.1.2indirect
npmpath-type4.0.0indirect
npmpicomatch2.3.1indirect
npmpluralize8.0.0indirect
npmpossible-typed-array-names1.1.0indirect
npmprelude-ls1.2.1indirect
npmprettier3.5.3indirect
npmproxy-from-env1.1.0indirect
npmpstree.remy1.1.8indirect
npmpunycode2.3.1indirect
npmqueue-microtask1.2.3indirect
npmreadable-stream3.6.2indirect
npmreaddirp3.6.0indirect
npmrecast0.21.5indirect
npmrecast0.22.0indirect
npmrechoir0.8.0indirect
npmregexp.prototype.flags1.5.4indirect
npmremove-trailing-separator1.1.0indirect
npmreplace-ext2.0.0indirect
npmreplace-homedir2.0.0indirect
npmrequire-directory2.1.1indirect
npmresolve1.22.10indirect
npmresolve-dir1.0.1indirect
npmresolve-from4.0.0indirect
npmresolve-options2.0.0indirect
npmreusify1.1.0indirect
npmrimraf3.0.2indirect
npmrun-parallel1.2.0indirect
npmsafe-buffer5.2.1indirect
npmsafe-regex-test1.1.0indirect
npmsafer-buffer2.1.2indirect
npmsax1.4.1indirect
npmsemver6.3.1indirect
npmsemver7.7.2indirect
npmsemver-greatest-satisfied-range2.0.0indirect
npmsentence-case3.0.4indirect
npmset-function-length1.2.2indirect
npmset-function-name2.0.2indirect
npmshebang-command2.0.0indirect
npmshebang-regex3.0.0indirect
npmside-channel1.1.0indirect
npmside-channel-list1.0.0indirect
npmside-channel-map1.0.1indirect
npmside-channel-weakmap1.0.2indirect
npmsimple-update-notifier2.0.0indirect
npmslash3.0.0indirect
npmsource-map0.6.1indirect
npmsparkles2.1.0indirect
npmstop-iteration-iterator1.1.0indirect
npmstream-composer1.0.2indirect
npmstream-exhaust1.0.2indirect
npmstreamx2.22.0indirect
npmstring-width4.2.3indirect
npmstring_decoder1.3.0indirect
npmstrip-ansi6.0.1indirect
npmstrip-json-comments3.1.1indirect
npmsupports-color5.5.0indirect
npmsupports-color7.2.0indirect
npmsupports-preserve-symlinks-flag1.0.0indirect
npmsver1.8.4indirect
npmteex1.0.1indirect
npmtext-decoder1.2.3indirect
npmtext-table0.2.0indirect
npmtitle-case3.0.3indirect
npmto-regex-range5.0.1indirect
npmto-through3.0.0indirect
npmtouch3.1.1indirect
npmtransliteration2.3.5indirect
npmts-api-utils1.4.3indirect
npmts-api-utils2.1.0indirect
npmtslib2.8.1indirect
npmtype-check0.4.0indirect
npmtype-fest0.20.2indirect
npmtypescript5.8.3indirect
npmunc-path-regex0.1.2indirect
npmundefsafe2.0.5indirect
npmundertaker2.0.0indirect
npmundertaker-registry2.0.0indirect
npmupper-case-first2.0.2indirect
npmuri-js4.4.1indirect
npmutil0.12.5indirect
npmutil-deprecate1.0.2indirect
npmv8flags4.0.1indirect
npmvalue-or-function4.0.0indirect
npmvinyl3.0.0indirect
npmvinyl-contents2.0.0indirect
npmvinyl-fs4.0.0indirect
npmvinyl-sourcemap2.0.0indirect
npmwhich1.3.1indirect
npmwhich2.0.2indirect
npmwhich-boxed-primitive1.1.1indirect
npmwhich-collection1.0.2indirect
npmwhich-typed-array1.1.19indirect
npmword-wrap1.2.5indirect
npmwrap-ansi7.0.0indirect
npmwrappy1.0.2indirect
npmxml2js0.6.2indirect
npmxmlbuilder11.0.1indirect
npmy18n5.0.8indirect
npmyargs16.2.0indirect
npmyargs17.7.2indirect
npmyargs-parser20.2.9indirect
npmyargs-parser21.1.1indirect
npmyocto-queue0.1.0indirect
npmzod3.24.1indirect
Dependency advisories 13

This repository publishes no package the index resolves, so its own dependency graph was assessed — 374 packages, which also include development and test pins that never ship: 13 carry known advisories, of which 0 are direct.

PackageVersionRelationSeverityAdvisoriesFixed in
flatted3.3.3indirectcritical23.4.2
axios1.8.2indirecthigh291.18.0
brace-expansion1.1.12indirecthigh35.0.8
brace-expansion2.0.2indirecthigh35.0.8
form-data4.0.0indirecthigh24.0.6
js-yaml4.1.0indirecthigh34.3.0
lodash4.17.21indirecthigh34.18.0
minimatch3.1.2indirecthigh310.2.3
minimatch9.0.3indirecthigh310.2.3
minimatch9.0.5indirecthigh310.2.3
picomatch2.3.1indirecthigh24.0.4
ajv6.12.6indirectmoderate18.18.0
follow-redirects1.15.9indirectmoderate11.16.0

An advisory means the version recorded in the dependency graph falls inside an advisory’s affected range. Reachability is not analysed, and the graph includes development and test pins — a finding may concern tooling rather than shipped software.

Raw JSON report machine-readable
{
  "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"
}

Scores are signals, not warranties. They reflect publicly visible practices on GitHub — not a code audit, and not a security guarantee.

Missing data is excluded and weights renormalized, never scored as zero. Methodology is versioned and open: metrics v1.13.0, schema v0.27.0 — full methodology · metrics wiki.

How one result sits in the wider record: aggregate statisticsnpm.