Skip to content

[New Plugin] site-shot/site_shot 0.1.0 - #3518

Merged
crazywoola merged 1 commit into
langgenius:mainfrom
site-shot:codex/site-shot-0.1.0
Oct 27, 2026
Merged

crazywoola merged 1 commit into
langgenius:mainfrom
site-shot:codex/site-shot-0.1.0

Conversation

@site-shot

Copy link
Copy Markdown
Contributor

Plugin Submission

Plugin information

Submission type

  • New plugin
  • Version update

What changed

One tool, Capture screenshot, converts a public web page URL into a PNG or JPEG file for Dify workflows and agents. It returns a native image file plus format, image dimensions and byte size. The user supplies a Site-Shot API key as a provider credential and needs an active API subscription. The plugin does not provide free API credits or a language model. Its deliberately bounded, fixed-API screenshot-to-file workflow differs from a general browser-automation tool; existing browser/screenshot plugins overlap, so this is not an exclusivity claim.

Risk level

  • Low risk
  • Medium risk
  • High risk

The remote service automates a browser for user-provided page URLs. The higher category is declared even though the plugin itself connects only to the fixed Site-Shot API hostname.

Required checks

  • I have read and followed the Marketplace submission requirements.
  • I have read and comply with the Plugin Development Guidelines.
  • I tested this plugin on Dify Community Edition and Dify Cloud, or documented any limitation below.
  • The package contains only files needed at runtime.
  • The package does not contain secrets, local credentials, .env files, .git directories, virtual environments, caches, logs, or IDE files.
  • The package does not contain executables or bundled binaries, or I explained why they are required below.
  • The plugin README includes setup steps, usage instructions, required APIs or credentials, connection requirements, and the source repository link.
  • The plugin includes PRIVACY.md or a hosted privacy policy, and manifest.yaml references it.
  • All user-facing text is primarily in English, with any localized README files following the i18n guidance.

Security and privacy notes

The security boundary is a fixed HTTPS connection to api.site-shot.com, with CA and hostname verification. The API renders the user-provided URL remotely. The plugin cannot execute user code, shell commands or SQL, use SSH/SFTP, choose a proxy, or take a filesystem path as input. Dify stores the returned file under its own storage and retention policy.

Inputs accept public HTTP(S) URLs with bounded length and reject embedded credentials, local names, non-global literal IPs and malformed host forms. This is input validation, not a DNS-rebinding or redirect-safety guarantee for the remote renderer. Screenshots can contain personal data shown on the target page; no anonymity or third-party retention guarantee is made.

Credential validation sends only the API key in the userkey header to /v1.0/credential-check. Capture requests send the key, page URL and capture settings to the fixed API as query parameters, as required by Site-Shot's capture contract. The plugin does not return credential-bearing URLs. Its own logs and error messages exclude request secrets and upstream response bodies; that is not a claim about all Dify or remote service logging.

Requests have a 10-second credential-check deadline or a 90-second capture deadline, with no redirects or retries. The tool accepts only successful PNG/JPEG responses, caps them at 30 MiB and 40 megapixels, checks their format and fully decodes them before returning a file. No private targets or live credentials were used in the completed offline tests.

Local validation

Local candidate package SHA256: fbb426b17def0d23bec2f6efe371dd446515a54a551eeb1570eecc6170dbc1af, 16,358 bytes, 12 entries. Built once on October 26, 2026 with official CLI 0.6.12 and network denied. Every archive entry was compared byte-for-byte with the October 21 public-source package 6c98ce148e648939e7b5248832f65bf09a85c01a304fb4049f71c3063fa33939: only README.md and PRIVACY.md differ; all runtime, manifest, dependencies and assets are identical. The new README includes two corrected Status rows and an explicit Support contact/Issues line.

Current official Toolkit commit 57a21d1304b1108df3e6b90a15a4f5dd9f0915f9 validated this exact archive and this PR body with --offline: no blocking or environment failures; three warning categories remain. Separate PR-body and reviewer-note checks passed locally. This is not Marketplace acceptance or an online vulnerability audit.

The unchanged runtime previously passed 203 independent offline SDK tests. On October 22, the October 21 baseline archive was natively installed in an isolated Dify Community Edition 1.17.1. Native provider-credential save succeeded. Two manual native tool invocations returned files: PNG 1024×768 (85,003 bytes) and full-page JPEG 1024×787 (82,095 bytes), from https://example.com/ with a 2,000px full-page ceiling. Both files were fully decoded and visually inspected. No retries, language-model calls or publication occurred. The local fixture and credential copies were removed after testing.

On October 26, one additional real PNG 1024×768 capture succeeded through the official remote-debug path in an isolated Dify Community Edition 1.17.1 instance with the unchanged plugin runtime. Native registration identified the plugin source as remote. The single returned file was decoded and visually inspected. One capture was charged to the existing included quota; there were no retries or language-model calls. The demo subscription and restriction were restored and the temporary environment and local credential copies removed within the approved time window. This was not another installed-package test.

On October 22, one OSV batch query covered the four exact direct dependency pins. It returned no findings for dify-plugin 0.10.2, gevent 26.9.0 or Pillow 13.0.0, and two aliases of one certifi advisory. This is not a transitive-dependency audit.

Reviewer notes

Native credential validation and real PNG/JPEG file outputs passed on Dify Community Edition 1.17.1 for the October 21 baseline archive; the unchanged runtime also passed one official remote-debug PNG call on October 26. The new documentation-only archive has not been separately installed. Downstream vision-model use, Dify Cloud and long-page stitching remain untested. The declared minimum Dify version 1.0.0 is not a tested compatibility claim. The publisher personally reviewed and accepted the linked requirements/Guidelines and authorized one public PR. The documentation-only source commit must be public before this PR is submitted; local validator success is not Marketplace acceptance.

The OSV range flags certifi 2026.10.18 under GHSA-6q48-6c7w-9gw2 / PYSEC-2026-4320, but the maintainer advisory names 2026.10.18 as patched. The exact installed bundle matches the official 2026.10.18 tag, parses as 117 CA certificates and contains no emSign/eMudhra subject or issuer. The named affected G3 root is absent. Version 2026.10.19 restores three other emSign roots. Preserve the database finding and this discrepancy for review; neither compromise nor a completely vulnerability-free dependency set is claimed. No dependency or package bytes were changed to suppress it.

Other existing warnings are a lexical financial-activity match on the Git word checkout in the README and a declared fixed API hostname assembled in source. These do not justify hiding actual data flows or lowering the declared risk level.

@github-actions github-actions Bot added the risk: high High-risk Marketplace submission label Oct 26, 2026

@crazywoola crazywoola left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pre Check Plugin and PR Risk Label passed for this revision. Inspected the submitted package, documentation, and relevant source; this is a non-draft plugin submission with no Web3 functionality identified. This is an eligibility review, not a comprehensive security audit.

@crazywoola
crazywoola merged commit 9b47861 into langgenius:main Oct 27, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: high High-risk Marketplace submission

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants