Add DeepSeek QQwrite brief workflow
This commit is contained in:
parent
ec1f706d39
commit
dd93e33b12
18
SKILL.md
18
SKILL.md
|
|
@ -16,8 +16,8 @@ It can also route through the user's Zotero/Obsidian literature-note workflow:
|
|||
extract keywords from the manuscript topic or draft, use QQnote-generated
|
||||
Zotero child notes or paper tables as literature inputs, ask DeepSeek to screen
|
||||
those candidate notes into strongly related and weakly related papers under
|
||||
QQsci's rules, then use those papers to improve positioning, introduction
|
||||
logic, comparison, novelty framing, and citations.
|
||||
QQsci's rules, ask DeepSeek to draft a structured QQwrite brief from the
|
||||
screened papers, then have QQsci check the brief before passing it to QQwrite.
|
||||
|
||||
## Core stance
|
||||
|
||||
|
|
@ -46,6 +46,7 @@ logic, comparison, novelty framing, and citations.
|
|||
| [references/comparative-review-audit.md](references/comparative-review-audit.md) | User wants a Nature-response-like pre-review based on comparison with strongly related papers, including missing experiments, format, figures, spelling, and terminology consistency |
|
||||
| [references/submission-package-audit.md](references/submission-package-audit.md) | User provides or mentions a submission package with manuscript, Supporting Information, highlights, cover letter, figures, SI figures, TOC, graphical abstract, or related Word/PPT files |
|
||||
| [references/literature-routing.md](references/literature-routing.md) | User wants Zotero/Obsidian/DeepSeek note search, strong/weak related-paper screening, keyword extraction, or literature-grounded rewriting |
|
||||
| [references/qqwrite-brief.md](references/qqwrite-brief.md) | DeepSeek screening results need to be converted into a QQwrite writing brief or checked before QQwrite consumes them |
|
||||
| [references/word-citation-comments.md](references/word-citation-comments.md) | User wants citation insertion guidance in Word, reference placement, DOI-only comments, or annotated `.docx` citation suggestions |
|
||||
| [references/zotero-obsidian-subskill.md](references/zotero-obsidian-subskill.md) | User asks QQsci to obtain or refresh literature-note inputs through QQnote, including Zotero child-note summaries or paper comparison tables |
|
||||
| [references/configuration.md](references/configuration.md) | You need DeepSeek, Zotero, Obsidian, QQnote inheritance, config precedence, secret handling, or wrapper-script usage |
|
||||
|
|
@ -133,14 +134,19 @@ DeepSeek/AwesomeGPT Zotero notes generated by QQnote or equivalent sources.
|
|||
- `weakly related`: same direction, adjacent material family, same
|
||||
characterization logic, similar device architecture, or useful writing
|
||||
pattern.
|
||||
5. Use strongly related papers for novelty, gap, introduction, benchmark, and
|
||||
5. Ask DeepSeek to generate a `qqwrite_brief` from the screened papers when the
|
||||
next step is QQwrite drafting or template-driven `.docx` generation. Open
|
||||
`references/qqwrite-brief.md` for the schema and checks.
|
||||
6. QQsci checks the brief for required fields, DOI preservation, obvious
|
||||
overclaims, weak-paper misuse, and missing author evidence before handoff.
|
||||
7. Use strongly related papers for novelty, gap, introduction, benchmark, and
|
||||
citation placement.
|
||||
6. Use weakly related papers for broader field framing, mechanism language,
|
||||
8. Use weakly related papers for broader field framing, mechanism language,
|
||||
section architecture, and cautious comparison.
|
||||
7. For Word manuscript citation suggestions, open
|
||||
9. For Word manuscript citation suggestions, open
|
||||
`references/word-citation-comments.md` and add native Word comments that
|
||||
contain DOI strings only.
|
||||
8. Return a source map before or with the manuscript revision. Never cite a
|
||||
10. Return a source map before or with the manuscript revision. Never cite a
|
||||
paper only because the title seems similar.
|
||||
|
||||
## Comparative pre-review workflow
|
||||
|
|
|
|||
|
|
@ -127,8 +127,9 @@ QQsci and then QQwrite:
|
|||
}
|
||||
```
|
||||
|
||||
If the output will feed QQwrite, QQsci should convert the screened papers into a
|
||||
`qqwrite_brief`-style section plan rather than passing raw notes directly.
|
||||
If the output will feed QQwrite, ask DeepSeek to generate the `qqwrite_brief`
|
||||
draft from the screened papers, then let QQsci validate and clean the brief
|
||||
before QQwrite consumes it. See `qqwrite-brief.md`.
|
||||
|
||||
## Strong vs weak relation rules
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,122 @@
|
|||
# QQwrite Brief
|
||||
|
||||
Use this file when DeepSeek screening results need to become an input package
|
||||
for QQwrite.
|
||||
|
||||
## Ownership
|
||||
|
||||
DeepSeek may generate the `qqwrite_brief` draft from:
|
||||
|
||||
- the manuscript profile
|
||||
- author evidence and figure notes
|
||||
- QQnote/Zotero/Obsidian note candidates
|
||||
- DeepSeek-screened strong/weak related papers
|
||||
- target journal and template choice
|
||||
|
||||
QQsci owns:
|
||||
|
||||
- the brief schema
|
||||
- the prompt that asks DeepSeek to generate the brief
|
||||
- schema validation
|
||||
- obvious overclaim and DOI-preservation checks
|
||||
- handoff to QQwrite
|
||||
|
||||
QQwrite consumes the brief. QQwrite should not re-screen literature or decide
|
||||
which papers are strong/weak.
|
||||
|
||||
## Required Schema
|
||||
|
||||
Ask DeepSeek to return JSON whenever possible:
|
||||
|
||||
```json
|
||||
{
|
||||
"target_journal": "",
|
||||
"article_type": "",
|
||||
"recommended_word_template": "afm/article-template.docx",
|
||||
"material_system": "",
|
||||
"application": "",
|
||||
"central_claim": "",
|
||||
"novelty_gap": "",
|
||||
"design_principle": "",
|
||||
"key_author_evidence": [
|
||||
{
|
||||
"evidence": "",
|
||||
"source": "manuscript / figure / SI / author note",
|
||||
"supports": ""
|
||||
}
|
||||
],
|
||||
"strong_related_papers": [
|
||||
{
|
||||
"doi": "",
|
||||
"title": "",
|
||||
"usable_for": [],
|
||||
"must_cite_near": [],
|
||||
"reason": ""
|
||||
}
|
||||
],
|
||||
"weak_related_papers": [
|
||||
{
|
||||
"doi": "",
|
||||
"title": "",
|
||||
"usable_for": [],
|
||||
"reason": ""
|
||||
}
|
||||
],
|
||||
"section_plan": {
|
||||
"Title": [],
|
||||
"Abstract": [],
|
||||
"Introduction": [],
|
||||
"Results and Discussion": [],
|
||||
"Conclusion": [],
|
||||
"Experimental Section": []
|
||||
},
|
||||
"claim_reference_map": [
|
||||
{
|
||||
"claim": "",
|
||||
"author_evidence": "",
|
||||
"supporting_dois": [],
|
||||
"writing_location": "",
|
||||
"status": "supported / needs author evidence / citation only / do not claim"
|
||||
}
|
||||
],
|
||||
"must_not_overclaim": [],
|
||||
"missing_inputs": [],
|
||||
"qqwrite_instructions": []
|
||||
}
|
||||
```
|
||||
|
||||
## DeepSeek Prompt
|
||||
|
||||
Give DeepSeek the screened-paper JSON and ask:
|
||||
|
||||
```text
|
||||
Using the screened strong/weak related papers and the author-provided manuscript
|
||||
evidence, generate a QQwrite writing brief.
|
||||
|
||||
Rules:
|
||||
1. Do not invent experimental results, mechanisms, references, DOI values, or
|
||||
figure numbers.
|
||||
2. Strong papers may define novelty, direct comparison, benchmark, and citation
|
||||
placement.
|
||||
3. Weak papers may support field framing, mechanism language, or writing
|
||||
structure, but must not be treated as direct benchmark papers.
|
||||
4. Every major claim must include author evidence, supporting DOI, or a clear
|
||||
status explaining that it still needs evidence.
|
||||
5. Preserve DOI strings exactly as provided.
|
||||
6. Return JSON only, following the QQwrite brief schema.
|
||||
```
|
||||
|
||||
## QQsci Check Before Handoff
|
||||
|
||||
Before passing the brief to QQwrite, check:
|
||||
|
||||
- required top-level fields are present
|
||||
- `central_claim` is backed by author evidence
|
||||
- every DOI came from the screened output or user input
|
||||
- weak papers are not used as direct benchmark unless justified
|
||||
- `must_not_overclaim` and `missing_inputs` are not empty when evidence is
|
||||
incomplete
|
||||
- `recommended_word_template` points to a QQwrite-owned template
|
||||
|
||||
If the brief fails checks, mark the issue in `missing_inputs` or ask DeepSeek to
|
||||
repair only the failed fields. Do not let QQwrite consume a malformed brief.
|
||||
|
|
@ -32,7 +32,10 @@ Recommended handoff:
|
|||
|
||||
1. QQsci extracts claims, evidence, related papers, target-journal positioning,
|
||||
and package risks.
|
||||
2. QQwrite uses the selected template and QQsci's structured outputs to draft or
|
||||
format the manuscript.
|
||||
3. QQsci audits the resulting package again against figures, SI, and strong
|
||||
2. DeepSeek generates a `qqwrite_brief` draft from screened papers and author
|
||||
evidence.
|
||||
3. QQsci validates the brief and passes it to QQwrite.
|
||||
4. QQwrite uses the selected template and checked brief to draft or format the
|
||||
manuscript.
|
||||
5. QQsci audits the resulting package again against figures, SI, and strong
|
||||
related papers.
|
||||
|
|
|
|||
|
|
@ -94,6 +94,46 @@ Output JSON keys:
|
|||
"""
|
||||
|
||||
|
||||
def build_brief_prompt(profile: dict[str, object]) -> str:
|
||||
return f"""After screening the literature notes, generate a QQwrite writing brief for this materials-science manuscript.
|
||||
|
||||
Manuscript profile:
|
||||
- Material/system terms: {', '.join(profile.get('exact_or_chemical_terms', [])) or 'xxx'}
|
||||
- Material family: {', '.join(profile.get('material_family_hints', [])) or 'xxx'}
|
||||
- Device/application: {', '.join(profile.get('device_application_hints', [])) or 'xxx'}
|
||||
- Target journal or tier: {profile.get('target_journal') or 'xxx'}
|
||||
- Extra author notes: {profile.get('extra_notes') or 'xxx'}
|
||||
|
||||
Use the screened strongly_related_papers and weakly_related_papers as input.
|
||||
|
||||
Rules:
|
||||
1. Do not invent experimental results, mechanisms, references, DOI values, or figure numbers.
|
||||
2. Strong papers may define novelty, direct comparison, benchmark, and citation placement.
|
||||
3. Weak papers may support field framing, mechanism language, or writing structure, but must not be treated as direct benchmark papers.
|
||||
4. Every major claim must include author evidence, supporting DOI, or a clear status explaining that it still needs evidence.
|
||||
5. Preserve DOI strings exactly as provided.
|
||||
6. Return JSON only.
|
||||
|
||||
Output JSON keys:
|
||||
- target_journal
|
||||
- article_type
|
||||
- recommended_word_template
|
||||
- material_system
|
||||
- application
|
||||
- central_claim
|
||||
- novelty_gap
|
||||
- design_principle
|
||||
- key_author_evidence
|
||||
- strong_related_papers
|
||||
- weak_related_papers
|
||||
- section_plan
|
||||
- claim_reference_map
|
||||
- must_not_overclaim
|
||||
- missing_inputs
|
||||
- qqwrite_instructions
|
||||
"""
|
||||
|
||||
|
||||
def main() -> int:
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--draft", required=True, help="UTF-8 text or markdown draft path")
|
||||
|
|
@ -108,6 +148,7 @@ def main() -> int:
|
|||
profile["target_journal"] = args.target_journal
|
||||
profile["extra_notes"] = args.extra_notes
|
||||
profile["screening_prompt"] = build_prompt(profile)
|
||||
profile["brief_prompt"] = build_brief_prompt(profile)
|
||||
|
||||
data = json.dumps(profile, ensure_ascii=False, indent=2)
|
||||
if args.json_out:
|
||||
|
|
|
|||
Loading…
Reference in New Issue