Repository navigation
[New Plugin] site-shot/site_shot 0.1.0 - #3518
Merged
Merged
Conversation
crazywoola
approved these changes
Oct 27, 2026
crazywoola
left a comment
Member
There was a problem hiding this comment.
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin Submission
Plugin information
Submission type
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
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
.envfiles,.gitdirectories, virtual environments, caches, logs, or IDE files.PRIVACY.mdor a hosted privacy policy, andmanifest.yamlreferences it.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
userkeyheader 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 package6c98ce148e648939e7b5248832f65bf09a85c01a304fb4049f71c3063fa33939: 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
57a21d1304b1108df3e6b90a15a4f5dd9f0915f9validated 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
checkoutin 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.