Skip to content

Add plugin: jcaiagent7143-ui/linkdigest v0.1.0 - #3044

Open
jcaiagent7143-ui wants to merge 2 commits into
langgenius:mainfrom
jcaiagent7143-ui:fix-linkdigest-readme-locale
Open

Add plugin: jcaiagent7143-ui/linkdigest v0.1.0#3044
jcaiagent7143-ui wants to merge 2 commits into
langgenius:mainfrom
jcaiagent7143-ui:fix-linkdigest-readme-locale

Conversation

@jcaiagent7143-ui

@jcaiagent7143-ui jcaiagent7143-ui commented Sep 8, 2026

Copy link
Copy Markdown

Plugin Submission

Plugin information

Submission type

  • New plugin
  • Version update

What changed

New plugin. One tool, digest_url(url, format), that turns a Xiaohongshu (RedNote), Douyin, TikTok, YouTube or X link into text a workflow can use: transcript with timecodes, on-screen text, a description and OCR of every image, the caption and metadata, as Markdown or JSON.

The plugin runs nothing locally. It calls the hosted LinkDigest REST API (https://linkdigest.dev) with the user's own API key from the provider credential. Long media exceeds a single request, so the API answers 202 with a job id and the plugin polls it to completion (deadline 210 s; a 17-image RedNote note measures about 119 s end to end). Credential validation hits an authenticated endpoint that starts no digest, so validating a key spends nothing.

What it does not do, stated in the README and in the tool's LLM-facing description: Bilibili is not supported (the service's address receives HTTP 412), Instagram is wired but not verified end to end, Facebook is out of scope.

Relative to #3026, which was closed because the pre-check found seven Chinese characters in the primary README.md:

  • Those characters were three platform names inside a table. README.md is now English throughout and contains zero Chinese characters.
  • README.zh_Hans.md added, carrying the full Chinese version, including the parts that are easiest to lose in a translation: the Bilibili refusal, the Instagram caveat, and the Facebook exclusion.
  • The primary README links to the localized one.
  • A test in the source repository (tests/test_dify_readme_locale.py) fails if Chinese characters return to the primary README, if the localized file goes missing or stops being linked, or if those three caveats are dropped from the translation. It was verified to fail against the exact content Add plugin: jcaiagent7143-ui/linkdigest v0.1.0 #3026 was closed for.

Every other file in the package is byte-identical to #3026.

Risk level

  • Low risk
  • Medium risk
  • High risk

Medium because the tool accepts a user-provided URL and sends it to an external service. The plugin itself fetches only linkdigest.dev; it does not fetch the user's URL. The URL is validated server-side (http/https, 2048 characters maximum) before any fetch happens.

Required checks

  • I have read and followed the Marketplace submission requirements.
  • I have read and comply with the Plugin Developer Agreement.
  • 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.

Stated precisely, because my checklist on #3026 claimed this and was wrong: README.md is 100% English, enforced by a test. Chinese prose lives in README.zh_Hans.md. The zh_Hans values inside manifest.yaml, provider/linkdigest.yaml and tools/digest_url.yaml are localized label and description fields keyed by locale, which is what those fields exist for. I am flagging them explicitly rather than letting the checkbox imply the package contains no Chinese text anywhere.

Limitation, documented as the third check requires: I have not run this inside a Dify Community Edition or Dify Cloud instance. What was tested is in Local validation below. If the reviewer would like a run inside Dify before merging, say so and I will provide one.

Security and privacy notes

  • Network destination: linkdigest.dev only (declared in manifest.yaml), over HTTPS.
  • Read-only tool. No command execution, no code execution, no SQL, no filesystem access, no browser automation, no proxying or crawling.
  • The plugin does not fetch arbitrary URLs. The user's URL is sent as a JSON field to the LinkDigest API, which validates it and performs the fetch on its side.
  • Personal data: the plugin sends the URL, the requested format, and the API key. Nothing else leaves the workspace. PRIVACY.md states this.
  • API key is stored by Dify's credential store, sent only as an Authorization: Bearer header, never logged, and not echoed in error messages.
  • Timeouts on every request: 40 s per call, 210 s overall poll deadline.

Local validation

$ dify plugin package ./linkdigest -o linkdigest-0.1.0.difypkg
INFO plugin packaged successfully

$ unzip -l linkdigest-0.1.0.difypkg
15 files: manifest.yaml, provider/, tools/, linkdigest_client.py, main.py,
README.md, README.zh_Hans.md, PRIVACY.md, LICENSE, _assets/icon.png
no __pycache__, no .env, no .git, no virtualenv, no keys

$ python -m py_compile linkdigest_client.py provider/linkdigest.py tools/digest_url.py main.py
ok

$ python - <<'EOF'   # Chinese-character scan of the packaged READMEs
README.md            : 0
README.zh_Hans.md    : present, localized
EOF

# client against the production API
check_key (valid key)            -> ok
check_key (bad key)              -> "invalid API key - issue one at https://linkdigest.dev/app/keys"
digest(cached TikTok, markdown)  -> 0.5s  cached=True  3342 chars
digest(cached TikTok, json)      -> 0.4s  credits=0  transcript=67 (native_captions)  degraded=[]
digest(dead TikTok id)           -> 502: "could not read this link. What was tried: yt-dlp: Video not available ..."

$ pytest tests/test_dify_plugin_honest.py tests/test_dify_readme_locale.py -q
7 passed

tests/test_dify_plugin_honest.py holds every platform claim in the manifest, provider, tool and both READMEs to the service's own coverage table, so the plugin cannot advertise a platform the service does not read.

Reviewer notes

Single file: jcaiagent7143-ui/linkdigest/linkdigest-0.1.0.difypkg. Source is public in the repository above under dify/, identical to the package contents.

Resubmission of #3026. Apologies for the round trip on the section headings: I retitled "What changed" and "Local validation" in the previous body, which is why the checker reported them missing. They are verbatim now.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DpGW9DbqX9bkgv4RTETBmV

…ans.md

The pre-check rejected 7 CJK characters in the primary README. Those were
platform names in a table; the prose is now English-only and the full Chinese
version lives in README.zh_Hans.md, including the Bilibili 412 refusal and the
Instagram caveat.
@github-actions github-actions Bot added the risk: medium Medium-risk Marketplace submission label Sep 8, 2026
@crazywoola

Copy link
Copy Markdown
Member

PR body is missing the 'What changed' section
PR body is missing the 'Local validation' section
PR title/body primary content must be English (found 7 CJK characters)

@jcaiagent7143-ui jcaiagent7143-ui changed the title Add plugin: jcaiagent7143-ui/linkdigest v0.1.0 (resubmit of #3026, README locale fixed) Add plugin: jcaiagent7143-ui/linkdigest v0.1.0 Sep 10, 2026
@jcaiagent7143-ui

Copy link
Copy Markdown
Author

Thanks — all three were mine, and all three are fixed in the body above.

  1. Missing 'What changed' — I had retitled it "What changed since Add plugin: jcaiagent7143-ui/linkdigest v0.1.0 #3026". Verbatim now.
  2. Missing 'Local validation' — I had renamed it "Package verification". Verbatim now.
  3. 7 Chinese characters in the body — with some irony, those were the same seven characters Add plugin: jcaiagent7143-ui/linkdigest v0.1.0 #3026 was closed for: I quoted the offending platform names while explaining that I had removed them from the README. The body now describes them instead of printing them, and I verified 0 Chinese characters programmatically before pushing this edit.

The package itself is unchanged and was never the problem — README.md has been at zero Chinese characters since the resubmit, with the full Chinese version in README.zh_Hans.md.

Lesson taken: the checker matches section headings literally, so I should have copied the template rather than improving on it.

The failing run's only blocking error was pr_body_errors.txt; every package
check passed. The body now uses the template headings verbatim and contains no
CJK. No file changes — this commit exists only to fire the synchronize trigger.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk: medium Medium-risk Marketplace submission

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants