Craft long-form, Chinese blog posts that connect deep-learning papers with their code repositories using the auto-collected bundle (materials_manifest, paper_text, figures, repo_context, lsky cache)...
This skill turns the standardized "paper + repo" bundle into a publish-ready article: you will read the PDF derivatives, inspect the code snapshot, fill the scaffold outline, write the final Markdown post, and keep figure assets synced with Lsky. Everything lives inside a pre-generated workspace, so the work is editorial/reporting instead of scraping.
Key ingredients live in materials_manifest.json, paper/, code/, .lsky_upload_cache.json, and article_scaffold.md. The assets/article_scaffold_template.md file can be copied whenever you need a fresh outline.
assets/article_scaffold_template.md into the project root (or overwrite the existing article_scaffold.md). This is your scratchpad for planning.Follow the phased process described in references/workflow.md:
paper_text.txt, figures_manifest.json, and rendered pages to capture the narrative, metrics, and figure references. Take notes directly in the scaffold.code/repo_context.md (plus repo_manifest.json) to understand repo layout, commands, configs, and practical pitfalls worth mentioning in the blog.sources/ and cite it explicitly if used.TODO inside article_scaffold.md so each section already contains bullet-point evidence (source + snippet). This keeps the drafting phase deterministic and makes reviews easy.Use the structure in references/blog_outline.md:
## 5-minute TL;DR with bullet proof points referencing both paper and repo.Writing tips:
scripts/check_article_length.py during QA to keep output stable.scripts/check_article_requirements.py to enforce mechanical constraints (title/metadata, references section, ban paper/pages, and optionally require https image URLs after Lsky sync).article_scaffold.md alongside the final <slug>_blog.md so reviewers can trace back to sources.Manage visuals according to references/figures.md:
paper/figures/ (and paper/front_matter/). Then run scripts/sync_lsky_images.py to upload via the installed lsky-uploader skill, update .lsky_upload_cache.json, and rewrite the blog Markdown to use returned URLs.salad_blog_assets/images/figN.png.If you need accurate journal impact factor / quartiles and CAS partitions, use the local SQLite DB generated from your Excel tables:
scripts/build_journal_metrics_db.py --overwritescripts/query_journal_metrics.py --journal "Advanced Science"The DB file lives at references/journal_metrics_2025.sqlite3. If it is missing, run scripts/build_journal_metrics_db.py --overwrite to generate it locally.
When you finish a project, ensure the workspace contains:
article_scaffold.md with your filled outline.<slug>_blog.md (or blog.md if the user specified one filename) following the outline..lsky_upload_cache.json if any new figures were uploaded.salad_blog_assets/images/ containing all referenced media.Document blockers (missing repo, corrupt PDF, etc.) at the top of the blog before the TL;DR if you cannot complete a section.
lsky-uploader skill - required for scripts/sync_lsky_images.py (set LSKY_TOKEN before running).scripts/build_journal_metrics_db.py - converts your Excel tables into a queryable SQLite DB under references/.scripts/query_journal_metrics.py - looks up JCR/CAS metrics for the metadata block.scripts/sync_lsky_images.py - uploads local images and rewrites Markdown links to Lsky URLs.scripts/check_article_length.py - counts characters and reports per-section breakdown.scripts/check_article_requirements.py - validates title/metadata/references and blocks forbidden figure sources.