Format citations in APA, MLA, Chicago, IEEE, Harvard styles from structured data, DOI/ISBN lookup, or manual entry. Generate bibliographies with auto-sort.
Scanned 2/12/2026
Install to Claude Code
npx -y skills add dkyazzentwatwa/chatgpt-skills --skill citation-bibliography-generator --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Citation Bibliography Generator?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/dkyazzentwatwa-citation-bibliography-generator)More formats (shields.io, HTML) on the badges page.
---
name: citation-bibliography-generator
description: Format citations in APA, MLA, Chicago, IEEE, Harvard styles from structured data, DOI/ISBN lookup, or manual entry. Generate bibliographies with auto-sort.
---
# Citation & Bibliography Generator
Generate properly formatted citations and bibliographies in multiple academic and professional styles. Supports manual entry, structured data import, and automatic metadata lookup via DOI/ISBN.
## Quick Start
```python
from scripts.citation_generator import CitationGenerator
# Create generator with desired style
gen = CitationGenerator(style='apa')
# Cite a book
citation = gen.cite_book(
authors=["Smith, John", "Doe, Jane"],
title="Research Methods in Social Science",
year=2020,
publisher="Academic Press",
city="New York"
)
print(citation)
# Output: Smith, J., & Doe, J. (2020). Research methods in social science. Academic Press.
# Build bibliography
gen.add_to_bibliography(citation)
bibliography = gen.generate_bibliography()
print(bibliography)
```
## Supported Citation Styles
- **APA** (American Psychological Association) - 7th Edition
- **MLA** (Modern Language Association) - 9th Edition
- **Chicago** (Chicago Manual of Style) - 17th Edition
- **IEEE** (Institute of Electrical and Electronics Engineers)
- **Harvard** (Harvard referencing style)
## Features
### 1. Manual Citation Creation
Format citations by source type:
- **Books** - Monographs, edited volumes, editions
- **Journal Articles** - Peer-reviewed articles with DOI
- **Websites** - Online sources with access dates
- **Conference Papers** - Proceedings and presentations
### 2. Automatic Metadata Lookup
- **DOI Lookup** - Fetch article metadata from CrossRef API
- **ISBN Lookup** - Retrieve book information (when available)
- Auto-detect source type and format accordingly
### 3. Bibliography Management
- Add multiple citations
- Auto-sort by author, year, or title
- Duplicate detection and removal
- Export to plain text or BibTeX
### 4. In-Text Citations
Generate parenthetical or narrative in-text citations:
- Parenthetical: `(Smith, 2020, p. 45)`
- Narrative: `Smith (2020) argues that...`
- Multiple authors with et al. handling
### 5. Batch Processing
Import citations from CSV files with structured data and generate complete bibliographies.
## API Reference
### CitationGenerator
**Initialization**:
```python
gen = CitationGenerator(style='apa')
```
**Parameters**:
- `style` (str): Citation style - 'apa', 'mla', 'chicago', 'ieee', or 'harvard'
### Citation Methods
#### cite_book()
```python
citation = gen.cite_book(
authors=["Last, First", "Last, First"],
title="Book Title",
year=2020,
publisher="Publisher Name",
city="City", # Optional
edition="3rd ed.", # Optional
isbn="978-0-123456-78-9" # Optional
)
```
**Returns**: Formatted citation string
#### cite_article()
```python
citation = gen.cite_article(
authors=["Last, First"],
title="Article Title",
journal="Journal Name",
year=2020,
volume=10, # Optional
issue=2, # Optional
pages="45-67", # Optional
doi="10.1234/example" # Optional
)
```
**Returns**: Formatted citation string
#### cite_website()
```python
citation = gen.cite_website(
authors=["Last, First"], # Can be empty list
title="Page Title",
url="https://example.com",
access_date="2024-01-15",
publish_date="2023-12-01" # Optional
)
```
**Returns**: Formatted citation string
#### cite_from_doi()
```python
citation = gen.cite_from_doi(doi="10.1234/example")
```
Looks up article metadata from CrossRef API and generates formatted citation.
**Returns**: Formatted citation string
### Bibliography Management
#### add_to_bibliography()
```python
gen.add_to_bibliography(citation)
```
Add a citation to the bibliography list.
#### generate_bibliography()
```python
bibliography = gen.generate_bibliography(
sort_by='author', # 'author', 'year', or 'title'
deduplicate=True # Remove duplicate entries
)
```
**Returns**: Formatted bibliography string with hanging indent
#### export_bibtex()
```python
gen.export_bibtex(output_path='references.bib')
```
Export bibliography as BibTeX format for LaTeX documents.
### In-Text Citations
#### in_text_citation()
```python
citation = gen.in_text_citation(
authors=["Smith, J."],
year=2020,
page="45", # Optional
narrative=False # True for narrative style
)
```
**Returns**:
- Parenthetical: `(Smith, 2020, p. 45)`
- Narrative: `Smith (2020)`
### Batch Processing
#### import_from_csv()
```python
citations = gen.import_from_csv(csv_path='citations.csv')
```
Import multiple citations from CSV file.
**CSV Format**:
```csv
type,authors,title,year,journal,publisher,doi,isbn,url,access_date
article,"Smith, J.|Doe, A.",Research Methods,2020,Journal of Science,,10.1234/example,,,
book,"Johnson, M.",Data Analysis,2019,,Academic Press,,978-0-123456-78-9,,
website,,"Web Page Title",2024,,,,,https://example.com,2024-01-15
```
**Note**: Separate multiple authors with `|` pipe character
**Returns**: List of formatted citation strings
## CLI Usage
### Single Citation
**Book**:
```bash
python scripts/citation_generator.py book \
--authors "Smith, J." "Doe, A." \
--title "Research Methods" \
--year 2020 \
--publisher "Academic Press" \
--city "New York" \
--style apa
```
**Article**:
```bash
python scripts/citation_generator.py article \
--authors "Smith, J." \
--title "Study Title" \
--journal "Journal Name" \
--year 2020 \
--volume 10 \
--issue 2 \
--pages "45-67" \
--doi "10.1234/example" \
--style mla
```
**Website**:
```bash
python scripts/citation_generator.py website \
--title "Page Title" \
--url "https://example.com" \
--access-date "2024-01-15" \
--style chicago
```
### DOI Lookup
```bash
python scripts/citation_generator.py doi \
--doi "10.1234/example" \
--style apa
```
### Batch Processing
```bash
python scripts/citation_generator.py batch \
--input citations.csv \
--style harvard \
--output bibliography.txt \
--sort author
```
### BibTeX Export
```bash
python scripts/citation_generator.py batch \
--input citations.csv \
--format bibtex \
--output references.bib
```
### CLI Arguments
| Argument | Description | Default |
|----------|-------------|---------|
| `--style`, `-s` | Citation style (apa/mla/chicago/ieee/harvard) | apa |
| `--authors`, `-a` | Author names (multiple allowed) | - |
| `--title`, `-t` | Title of work | - |
| `--year`, `-y` | Publication year | - |
| `--input`, `-i` | Input CSV file (batch mode) | - |
| `--output`, `-o` | Output file path | stdout |
| `--format`, `-f` | Output format (text/bibtex) | text |
| `--sort` | Sort bibliography by (author/year/title) | author |
## Examples
### Example 1: APA Book Citation
```python
gen = CitationGenerator(style='apa')
citation = gen.cite_book(
authors=["Doe, Jane", "Smith, John"],
title="The Art of Research",
year=2021,
publisher="University Press",
edition="2nd ed."
)
print(citation)
# Doe, J., & Smith, J. (2021). The art of research (2nd ed.). University Press.
```
### Example 2: MLA Article Citation
```python
gen = CitationGenerator(style='mla')
citation = gen.cite_article(
authors=["Johnson, Mary"],
title="Digital Humanities in the 21st Century",
journal="Modern Research Quarterly",
year=2022,
volume=15,
issue=3,
pages="112-145",
doi="10.5678/mrq.2022.15.3"
)
print(citation)
# Johnson, Mary. "Digital Humanities in the 21st Century." Modern Research Quarterly, vol. 15, no. 3, 2022, pp. 112-145. DOI: 10.5678/mrq.2022.15.3.
```
### Example 3: Chicago Website Citation
```python
gen = CitationGenerator(style='chicago')
citation = gen.cite_website(
authors=["Brown, Robert"],
title="Understanding Machine Learning",
url="https://ml-guide.example.com",
access_date="2024-01-20",
publish_date="2023-11-15"
)
print(citation)
# Brown, Robert. "Understanding Machine Learning." Last modified November 15, 2023. Accessed January 20, 2024. https://ml-guide.example.com.
```
### Example 4: Building a Bibliography
```python
gen = CitationGenerator(style='apa')
# Add multiple citations
gen.add_to_bibliography(gen.cite_book(
authors=["Smith, A."],
title="First Book",
year=2020,
publisher="Press A"
))
gen.add_to_bibliography(gen.cite_article(
authors=["Jones, B."],
title="Research Article",
journal="Journal X",
year=2021
))
# Generate formatted bibliography
bibliography = gen.generate_bibliography(sort_by='author')
print(bibliography)
```
### Example 5: DOI Lookup
```python
gen = CitationGenerator(style='ieee')
citation = gen.cite_from_doi(doi="10.1109/ACCESS.2019.2947014")
print(citation)
# Auto-fetches metadata and formats in IEEE style
```
### Example 6: Batch Processing from CSV
```python
gen = CitationGenerator(style='harvard')
citations = gen.import_from_csv('my_references.csv')
# Add all to bibliography
for citation in citations:
gen.add_to_bibliography(citation)
# Generate and export
gen.export_bibtex('references.bib')
```
## Dependencies
```
pandas>=2.0.0
requests>=2.31.0
```
Install dependencies:
```bash
pip install -r scripts/requirements.txt
```
## Limitations
- **API Availability**: DOI/ISBN lookups require internet connection and depend on third-party APIs (CrossRef)
- **API Rate Limits**: CrossRef API has rate limits; implement delays for batch lookups
- **Style Variations**: Some citation styles have discipline-specific variations not fully covered
- **Special Characters**: Unicode support for accents and special characters may vary by output format
- **Edition Numbers**: Different styles format editions differently (ordinal vs text)
- **Author Name Formats**: Input should be "Last, First" format; parsing other formats may be inconsistent
- **Multiple Authors**: Et al. rules vary by style (APA: 3+, MLA: 3+, Chicago: 4+)
- **Online-First Articles**: Articles published online before print may have partial metadata
- **Non-English Sources**: Some citation styles have specific rules for non-English sources that may not be fully implemented
## Citation Style Guidelines
### APA (American Psychological Association)
- Author-date system
- Ampersand (&) before last author
- Title case for book titles, sentence case for article titles
- DOI as URL: https://doi.org/10.xxxx
### MLA (Modern Language Association)
- Author-page system
- "And" before last author
- Title case for all titles
- Container concept (journal is container for article)
### Chicago (Chicago Manual of Style)
- Notes and bibliography system
- "And" before last author
- Title case for titles
- Access dates for websites
### IEEE (Institute of Electrical and Electronics Engineers)
- Numbered references [1], [2], etc.
- Initials before last name
- Quotation marks for article titles
- Abbreviated journal names
### Harvard
- Author-date system
- "And" before last author
- Italic for book/journal titles
- Available at: for URLs
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!